Rand Stats

LibYAML

github:yaml

Perl6 LibYAML

Build Status

A Perl 6 interface to LibYAML, a YAML 1.1 parser and emitter.

INSTALLATION

You must get and install libyaml first. Then you can install LibYAML with zef:

zef install LibYAML

Install from Sources

You can install this LibYAML module from source (optionally also using the libyaml C code sources) like this:

$ git clone https://github.com/yaml/yaml-libyaml-perl6
$ git clone https://github.com/yaml/libyaml
$ (cd libyaml; make -f .makefile)
$ export LD_LIBRARY_PATH=$PWD/libyaml/src/.libs
$ cd perl6-libyaml
$ zef install .

Examples

Note: This is a parser and emitter. The interface will probably change. If you want to load and dump YAML, take a look at YAML.pm6.

use LibYAML;

my $parser = LibYAML::Parser.new;

my $emitter = LibYAML::Emitter.new(...options...);

Originally LibYAML combined loading and parsing, dumping and emitting. The load and dump parts have been extracted, modified and moved to yaml/yaml-perl6.

Documentation will be added when we figure out the API we want to use.

Emitter options

:encoding = YAML_ANY_ENCODING
            YAML_UTF8_ENCODING (default)
            YAML_UTF16LE_ENCODING
            YAML_UTF16BE_ENCODING

:sequence-style = YAML_BLOCK_SEQUENCE_STYLE (default)
                  YAML_FLOW_SEQUENCE_STYLE

:mapping-style = YAML_BLOCK_MAPPING_STYLE (default)
                 YAML_FLOW_MAPPING_STYLE

:header or :!header  Output `---` header (default if more than one object output)

:footer or :!footer  Output `...` footer (default false)

:canonical or :!canonical

:indent = 2 .. 9 (default 2)

:width = width of line, default = -1, infinite

:unicode or :!unicode (default True)

:break = YAML_LN_BREAK (default)
         YAML_CR_BREAK
         YAML_CRLN_BREAK

Errors

Throws exceptions X::LibYAML::Parser-Error or X::LibYAML::Emitter-Error on error.

SEE ALSO

YAMLish is a pure-perl6 module for YAML that doesn't rely on an external library like LibYAML does.

YAML.pm6 is a loader and dumper, which uses LibYAML as a backend.