The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#####################################################################
# Main Tests

=== Properly ignore comments
--- yaml
---
a: b#content
c: d #comment
e:
- f #comment
- g# content
h: 'single'                 # comment
h2: 'single # content'      # comment
i: "double"                 # comment
i2: "double # content"      # comment
j: |        # comment
    literal # content
    block   # content
k: {}       # comment
l: []       # comment
m:      # comment
  n: o
--- perl
[
    {
        a => 'b#content',
        c => 'd',
        e => [
            'f',
            'g# content',
        ],
        h => 'single',
        h2 => 'single # content',
        i => 'double',
        i2 => 'double # content',
        j => "literal # content\nblock   # content\n",
        k => {},
        l => [],
        m => {
            n => 'o',
        },
    },
]
--- noyamlpm


# Repeat, with otherwise illegal characters in the comments
=== Properly ignore comments (with otherwise illegal characters)
--- yaml
---
a: b#content
c: d #comment '"!&@%`
e:
- f #comment '"!&@%`
- g# content
h: 'single'                 # comment '"!&@%`
h2: 'single # content'      # comment '"!&@%`
i: "double"                 # comment '"!&@%`
i2: "double # content"      # comment '"!&@%`
j: |        # comment '"!&@%`
    literal # content
    block   # content
k: {}       # comment '"!&@%`
l: []       # comment '"!&@%`
m:      # comment '"!&@%`
  n: o
--- perl
[
    {
        a => 'b#content',
        c => 'd',
        e => [
            'f',
            'g# content',
        ],
        h => 'single',
        h2 => 'single # content',
        i => 'double',
        i2 => 'double # content',
        j => "literal # content\nblock   # content\n",
        k => {},
        l => [],
        m => {
            n => 'o',
        },
    },
]
--- noyamlpm

####################################################################
# Comment on the Document Line

=== comment header
--- yaml
--- # Comment
foo: bar
--- perl
[ { foo => 'bar' } ]
--- noyamlpm


# Empty comments
=== empty_comment_in_list
--- yaml
---
- foo
\#
- bar

--- perl
[ [ 'foo', 'bar' ] ]


=== empty_comment_in_hash
--- yaml
---
foo: bar
\# foo
one: two

--- perl
[ { foo => 'bar', one => 'two' } ]