Avro for Perl6
Switch branches/tags
Nothing to show
Clone or download
Adriaan Larmuseau
Adriaan Larmuseau Fix for issue #6
Latest commit 297c6ab Sep 17, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Fix for issue #6 Sep 17, 2018
logotype logo for modules page Oct 24, 2015
t Fix for issue #6 Sep 17, 2018
.travis.yml Fix travis build Jun 12, 2017
META6.json Fix incorrect meta filename Jun 10, 2017
README.md Update README.md Nov 21, 2015

README.md

perl6 Avro support

Build Status artistic

Provides a native perl6 implementation of the Avro specification.

TODO

This is a work in progress. Still to implement:

  • : Reader schemas and resolution
  • : JSON output (OPTIONAL)

Example

The official python example can be rewritten in perl6 as follows.

use Avro; 

my $path = "testfile";
my $avro_ex = Q<<{ "namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}]}>>;

my $schema = parse-schema($avro_ex);
my $writer =  Avro::DataFileWriter.new(:handle($path.IO.open(:w)),:schema($schema));
$writer.append({"name" => "Alyssa","favorite_number" => 256,});  
$writer.append({"name" => "Ben", "favorite_number" => 7, "favorite_color" => "red"});
$writer.close();

my $reader = Avro::DataFileReader.new(:handle($path.IO.open(:r))); 
repeat {
 say $reader.read();
} until $reader.eof;
$reader.close()

License

Artistic License 2.0