Avro for Perl6
Perl 6
Switch branches/tags
Nothing to show
Latest commit d8c97ac Sep 30, 2017 @sylvarant sylvarant Merge pull request #5 from donaldh/master
Resolve bugs on Rakudo 2017.07
Permalink
Failed to load latest commit information.
lib Remove is export from enums - was causing namespace conflict Sep 28, 2017
logotype
t pair hash changes Oct 6, 2015
.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