use strict; use lib -e 't' ? 't' : 'test'; use TestYAML tests => 57; no_diff(); run_roundtrip_nyn('dumper'); __DATA__ === +++ perl [ "foo\nbar", "I like pie\nYou like pie\nWe all like pie" ] +++ yaml --- - "foo\nbar" - |- I like pie You like pie We all like pie === +++ perl {name => 'Ingy dot Net', rank => 'JAPH', 'serial number' => '8675309', }; +++ yaml --- name: Ingy dot Net rank: JAPH serial number: 8675309 === +++ perl {fruits => [qw(apples oranges pears)], meats => [qw(beef pork chicken)], vegetables => [qw(carrots peas corn)], } +++ yaml --- fruits: - apples - oranges - pears meats: - beef - pork - chicken vegetables: - carrots - peas - corn === +++ perl ['42', '43', '-44', '45'] +++ yaml --- - 42 - 43 - -44 - 45 === +++ perl [ 'foo bar', 'http://www.yaml.org', '12:34' ] +++ yaml --- - foo bar - http://www.yaml.org - 12:34 === +++ perl ('1', " foo ", "bar\n", [], {}) +++ yaml --- 1 --- ' foo ' --- "bar\n" --- [] --- {} === +++ perl '8\'-0" x 24" Lightweight' +++ yaml --- 8'-0" x 24" Lightweight === +++ perl bless {}, 'Foo::Bar' +++ yaml --- !!perl/hash:Foo::Bar {} === +++ perl bless {qw(foo 42 bar 43)}, 'Foo::Bar' +++ yaml --- !!perl/hash:Foo::Bar bar: 43 foo: 42 === +++ perl bless [], 'Foo::Bar' +++ yaml --- !!perl/array:Foo::Bar [] === +++ perl bless [map "$_",42..45], 'Foo::Bar' +++ yaml --- !!perl/array:Foo::Bar - 42 - 43 - 44 - 45 === +++ perl my $yn = YAML::Node->new({}, 'foo.com/bar'); $yn->{foo} = 'bar'; $yn->{bar} = 'baz'; $yn->{baz} = 'foo'; $yn +++ yaml --- !foo.com/bar foo: bar bar: baz baz: foo === +++ perl use YAML::Node; +++ no_round_trip +++ perl my $a = ''; bless \$a, 'Foo::Bark'; +++ yaml --- !!perl/scalar:Foo::Bark '' === Strings with nulls +++ perl "foo\0bar" +++ yaml --- "foo\0bar" === +++ no_round_trip XXX: probably a YAML.pm bug +++ perl &YAML::VALUE +++ yaml --- = === +++ perl my $ref = {foo => 'bar'}; [$ref, $ref] +++ yaml --- - &1 foo: bar - *1 === +++ perl no strict; package main; $joe_random_global = 42; @joe_random_global = (43, 44); *joe_random_global +++ yaml --- !!perl/glob: PACKAGE: main NAME: joe_random_global SCALAR: 42 ARRAY: - 43 - 44 === +++ perl no strict; package main; \*joe_random_global +++ yaml --- !!perl/ref =: !!perl/glob: PACKAGE: main NAME: joe_random_global SCALAR: 42 ARRAY: - 43 - 44 === +++ no_round_trip +++ perl my $foo = {qw(apple 1 banana 2 carrot 3 date 4)}; YAML::Bless($foo)->keys([qw(banana apple date)]); $foo +++ yaml --- banana: 2 apple: 1 date: 4 === +++ no_round_trip +++ perl use YAML::Node; my $foo = {qw(apple 1 banana 2 carrot 3 date 4)}; my $yn = YAML::Node->new($foo); YAML::Bless($foo, $yn)->keys([qw(apple)]); # red herring ynode($yn)->keys([qw(banana date)]); $foo +++ yaml --- banana: 2 date: 4 === +++ no_round_trip XXX: probably a test driver bug +++ perl my $joe_random_global = {qw(apple 1 banana 2 carrot 3 date 4)}; YAML::Bless($joe_random_global, 'TestBless'); return [$joe_random_global, $joe_random_global]; package TestBless; use YAML::Node; sub yaml_dump { my $yn = YAML::Node->new($_[0]); ynode($yn)->keys([qw(apple pear carrot)]); $yn->{pear} = $yn; return $yn; } +++ yaml --- - &1 apple: 1 pear: *1 carrot: 3 - *1 === +++ no_round_trip +++ perl use YAML::Node; my $joe_random_global = {qw(apple 1 banana 2 carrot 3 date 4)}; YAML::Bless($joe_random_global); my $yn = YAML::Blessed($joe_random_global); delete $yn->{banana}; $joe_random_global +++ yaml --- apple: 1 carrot: 3 date: 4 === +++ perl my $joe_random_global = \\\\\\\'42'; [ $joe_random_global, $$$$joe_random_global, $joe_random_global, $$$$$$$joe_random_global, $$$$$$$$joe_random_global ] +++ yaml --- - &1 !!perl/ref =: !!perl/ref =: !!perl/ref =: &2 !!perl/ref =: !!perl/ref =: !!perl/ref =: &3 !!perl/ref =: 42 - *2 - *1 - *3 - 42 === +++ perl local $YAML::Indent = 1; [{qw(foo 42 bar 44)}] +++ yaml --- - bar: 44 foo: 42 === +++ perl local $YAML::Indent = 4; [{qw(foo 42 bar 44)}] +++ yaml --- - bar: 44 foo: 42 === +++ perl [undef, undef] +++ yaml --- - ~ - ~ === +++ perl my $joe_random_global = []; push @$joe_random_global, $joe_random_global; bless $joe_random_global, 'XYZ'; $joe_random_global +++ yaml --- &1 !!perl/array:XYZ - *1 === +++ perl [ '23', '3.45', '123456789012345', ] +++ yaml --- - 23 - 3.45 - 123456789012345 === +++ perl {'foo: bar' => 'baz # boo', 'foo ' => ' monkey', } +++ yaml --- 'foo ': ' monkey' 'foo: bar': 'baz # boo' === +++ no_round_trip +++ perl $a = \\\\\\\\"foo"; $b = $$$$$a; ([$a, $b], [$b, $a]) +++ yaml --- - !!perl/ref =: !!perl/ref =: !!perl/ref =: !!perl/ref =: &1 !!perl/ref =: !!perl/ref =: !!perl/ref =: !!perl/ref =: foo - *1 --- - &1 !!perl/ref =: !!perl/ref =: !!perl/ref =: !!perl/ref =: foo - !!perl/ref =: !!perl/ref =: !!perl/ref =: !!perl/ref =: *1 === +++ no_round_trip XXX an AutoBless feature could make this rt +++ perl $a = YAML::Node->new({qw(a 1 b 2 c 3 d 4)}, 'ingy.com/foo'); YAML::Node::ynode($a)->keys([qw(d b a)]); $a; +++ yaml --- !ingy.com/foo d: 4 b: 2 a: 1 === +++ no_round_trip +++ perl $a = 'bitter buffalo'; bless \$a, 'Heart'; +++ yaml --- !!perl/scalar:Heart bitter buffalo === +++ perl { 'foo[bar]' => 'baz' } +++ yaml --- 'foo[bar]': baz