The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=== Empty mapping
--- yaml
\--- {}
--- perl
[ {} ]

# Simple hashs
=== one_hash1
--- yaml
---
foo: bar

--- perl
[ { foo => 'bar' } ]


=== one_hash2
--- yaml
---
foo: bar
this: ~

--- perl
[ { this => undef, foo => 'bar' } ]


=== one_hash3
--- yaml
---
-foo: bar

--- perl
[ { '-foo' => 'bar' } ]


# Implicit document start
=== implicit_hash
--- yaml
foo: bar

--- perl
[ { foo => 'bar' } ]



# Make sure we support x-foo keys
=== x-foo key
--- yaml
---
x-foo: 1
--- perl
[ { 'x-foo' => 1 } ]


# Hash key legally containing a colon
=== module_hash_key
--- yaml
---
Foo::Bar: 1
--- perl
[ { 'Foo::Bar' => 1 } ]


# Hash indented
=== hash_indented
--- yaml
---
  foo: bar
--- perl
[ { foo => "bar" } ]

#####################################################################
# Empty Values and Premature EOF

=== empty hash keys
--- yaml
---
foo:    0
requires:
build_requires:
--- perl
[ { foo => 0, requires => undef, build_requires => undef } ]
--- noyamlpm

#####################################################################
# Confirm we can read the synopsis

=== synopsis
--- yaml
---
rootproperty: blah
section:
  one: two
  three: four
  Foo: Bar
  empty: ~
--- perl
[ {
    rootproperty => 'blah',
    section      => {
        one   => 'two',
        three => 'four',
        Foo   => 'Bar',
        empty => undef,
    },
} ]

#####################################################################
# Indentation after empty hash value

=== Indentation after empty hash value
--- yaml
---
Test:
  optmods:
    Bad: 0
    Foo: 1
    Long: 0
  version: 5
Test_IncludeA:
  optmods:
Test_IncludeB:
  optmods:
_meta:
  name: 'test profile'
  note: 'note this test profile'
--- perl
[ {
    Test => {
        optmods => {
            Bad => 0,
            Foo => 1,
            Long => 0,
        },
        version => 5,
    },
    Test_IncludeA => {
        optmods => undef,
    },
    Test_IncludeB => {
        optmods => undef,
    },
    _meta => {
        name => 'test profile',
        note => 'note this test profile',
    },
} ]


#####################################################################
# Spaces in the Key

=== spaces in the key
--- yaml
---
the key: the value
--- perl
[ { 'the key' => 'the value' } ]


# Complex keys
=== key_with_whitespace
--- yaml
---
a b: c d

--- perl
[ { 'a b' => 'c d' } ]

=== quoted_empty_key
--- yaml
---
'': foo

--- perl
[ { '' => 'foo' } ]