# YAML Test Matrix

--- &test-UGM3
  Title: Spec Example 2.27. Invoice
  Tags: [ alias, literal, mapping, sequence, spec, tag, unknown-tag ]

YAML

--- !<tag:clarkevans.com,2002:invoice>
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments:
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

Expected Events

+STR
+DOC ---
+MAP <tag:clarkevans.com,2002:invoice>
=VAL :invoice
=VAL :34843
=VAL :date
=VAL :2001-01-23
=VAL :bill-to
+MAP &id001
=VAL :given
=VAL :Chris
=VAL :family
=VAL :Dumars
=VAL :address
+MAP
=VAL :lines
=VAL |458 Walkman Dr.\nSuite #292\n
=VAL :city
=VAL :Royal Oak
=VAL :state
=VAL :MI
=VAL :postal
=VAL :48046
-MAP
-MAP
=VAL :ship-to
=ALI *id001
=VAL :product
+SEQ
+MAP
=VAL :sku
=VAL :BL394D
=VAL :quantity
=VAL :4
=VAL :description
=VAL :Basketball
=VAL :price
=VAL :450.00
-MAP
+MAP
=VAL :sku
=VAL :BL4438H
=VAL :quantity
=VAL :1
=VAL :description
=VAL :Super Hoop
=VAL :price
=VAL :2392.00
-MAP
-SEQ
=VAL :tax
=VAL :251.42
=VAL :total
=VAL :4443.52
=VAL :comments
=VAL :Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
-MAP
-DOC
-STR

Expected JSON

{
"bill-to": {
"address": {
"city": "Royal Oak",
"lines": "458 Walkman Dr.\nSuite #292\n",
"postal": 48046,
"state": "MI"
},
"family": "Dumars",
"given": "Chris"
},
"comments": "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
"date": "2001-01-23",
"invoice": 34843,
"product": [
{
"description": "Basketball",
"price": 450,
"quantity": 4,
"sku": "BL394D"
},
{
"description": "Super Hoop",
"price": 2392,
"quantity": 1,
"sku": "BL4438H"
}
],
"ship-to": {
"address": {
"city": "Royal Oak",
"lines": "458 Walkman Dr.\nSuite #292\n",
"postal": 48046,
"state": "MI"
},
"family": "Dumars",
"given": "Chris"
},
"tax": 251.42,
"total": 4443.52
}

c-libfyaml-event

 ok

c-libyaml-event

 ok

cpp-rapidyaml-event

 ok

cpp-yamlcpp-event

 ok

dotnet-yamldotnet-event

 ok

hs-hsyaml-event

 ok

js-yaml-event

 ok

nim-nimyaml-event

 ok

perl-pp-event

 ok

perl-refparser-event

 ok

py-pyyaml-event

 ok

py-ruamel-event

 ok

c-libfyaml-json

 json_ok

go-yaml-json

 json_ok

hs-hsyaml-json

 json_ok

js-yaml-json

 json_ok

lua-lyaml-json

 json_ok

perl-pp-json

 json_ok

perl-pplibyaml-json

 json_ok

perl-syck-json

 json_ok

ruby-psych-json

 json_ok

rust-yamlrust-event

 diff
Minimal Events:
+STR
+DOC
+MAP <tag:clarkevans.com,2002:invoice>
=VAL :invoice
=VAL :34843
=VAL :date
=VAL :2001-01-23
=VAL :bill-to
+MAP &1
=VAL :given
=VAL :Chris
=VAL :family
=VAL :Dumars
=VAL :address
+MAP
=VAL :lines
=VAL |458 Walkman Dr.\nSuite #292\n
=VAL :city
=VAL :Royal Oak
=VAL :state
=VAL :MI
=VAL :postal
=VAL :48046
-MAP
-MAP
=VAL :ship-to
=ALI *1
=VAL :product
+SEQ
+MAP
=VAL :sku
=VAL :BL394D
=VAL :quantity
=VAL :4
=VAL :description
=VAL :Basketball
=VAL :price
=VAL :450.00
-MAP
+MAP
=VAL :sku
=VAL :BL4438H
=VAL :quantity
=VAL :1
=VAL :description
=VAL :Super Hoop
=VAL :price
=VAL :2392.00
-MAP
-SEQ
=VAL :tax
=VAL :251.42
=VAL :total
=VAL :4443.52
=VAL :comments
=VAL :Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
-MAP
-DOC
-STR
Transformed Events:
+STR
+DOC
+MAP
=VAL :invoice
=VAL :34843
=VAL :date
=VAL :2001-01-23
=VAL :bill-to
+MAP &1
=VAL :given
=VAL :Chris
=VAL :family
=VAL :Dumars
=VAL :address
+MAP
=VAL :lines
=VAL |458 Walkman Dr.\nSuite #292\n
=VAL :city
=VAL :Royal Oak
=VAL :state
=VAL :MI
=VAL :postal
=VAL :48046
-MAP
-MAP
=VAL :ship-to
=ALI *1
=VAL :product
+SEQ
+MAP
=VAL :sku
=VAL :BL394D
=VAL :quantity
=VAL :4
=VAL :description
=VAL :Basketball
=VAL :price
=VAL :450.00
-MAP
+MAP
=VAL :sku
=VAL :BL4438H
=VAL :quantity
=VAL :1
=VAL :description
=VAL :Super Hoop
=VAL :price
=VAL :2392.00
-MAP
-SEQ
=VAL :tax
=VAL :251.42
=VAL :total
=VAL :4443.52
=VAL :comments
=VAL :Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
-MAP
-DOC
-STR
Got Events:
+STR
+DOC
+MAP
=VAL :invoice
=VAL :34843
=VAL :date
=VAL :2001-01-23
=VAL :bill-to
+MAP &1
=VAL :given
=VAL :Chris
=VAL :family
=VAL :Dumars
=VAL :address
+MAP
=VAL :lines
=VAL |458 Walkman Dr.\nSuite #292\n
=VAL :city
=VAL :Royal Oak
=VAL :state
=VAL :MI
=VAL :postal
=VAL :48046
-MAP
-MAP
=VAL :ship-to
=ALI *1
=VAL :product
+SEQ
+MAP
=VAL :sku
=VAL :BL394D
=VAL :quantity
=VAL :4
=VAL :description
=VAL :Basketball
=VAL :price
=VAL :450.00
-MAP
+MAP
=VAL :sku
=VAL :BL4438H
=VAL :quantity
=VAL :1
=VAL :description
=VAL :Super Hoop
=VAL :price
=VAL :2392.00
-MAP
-SEQ
=VAL :tax
=VAL :251.42
=VAL :total
=VAL :4443.52
=VAL :comments
=VAL :Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
-MAP
-DOC
-STR

perl-yaml-json

 error
YAML Error: Expected separator '---'
   Code: YAML_PARSE_ERR_NO_SEPARATOR
   Line: 27
   Document: 2
 at /perl5/lib/perl5/YAML/Loader.pm line 88.

perl-yaml-perl

 error
YAML Error: Expected separator '---'
   Code: YAML_PARSE_ERR_NO_SEPARATOR
   Line: 27
   Document: 2
 at /perl5/lib/perl5/YAML/Loader.pm line 88.

py-pyyaml-json

 error
Error json.dumps: <class 'TypeError'>
Traceback (most recent call last):
  File "/yaml/bin/py-pyyaml-json", line 21, in <module>
    print(json.dumps(doc, sort_keys=True, skipkeys=True, indent=2))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
          ^^^^^^^^^^^
  File "/usr/lib/python3.12/json/encoder.py", line 202, in encode
    chunks = list(chunks)
             ^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/encoder.py", line 432, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "/usr/lib/python3.12/json/encoder.py", line 406, in _iterencode_dict
    yield from chunks
  File "/usr/lib/python3.12/json/encoder.py", line 439, in _iterencode
    o = _default(o)
        ^^^^^^^^^^^
  File "/usr/lib/python3.12/json/encoder.py", line 180, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type date is not JSON serializable

py-ruamel-json

 error
Error json.dumps: <class 'TypeError'>
Traceback (most recent call last):
  File "/yaml/bin/py-ruamel-json", line 23, in <module>
    print(json.dumps(doc, sort_keys=True, skipkeys=True, indent=2))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
          ^^^^^^^^^^^
  File "/usr/lib/python3.12/json/encoder.py", line 202, in encode
    chunks = list(chunks)
             ^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/encoder.py", line 432, in _iterencode
    yield from _iterencode_dict(o, _current_indent_level)
  File "/usr/lib/python3.12/json/encoder.py", line 406, in _iterencode_dict
    yield from chunks
  File "/usr/lib/python3.12/json/encoder.py", line 439, in _iterencode
    o = _default(o)
        ^^^^^^^^^^^
  File "/usr/lib/python3.12/json/encoder.py", line 180, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type date is not JSON serializable

hs-reference-yeast

 na
Line  Col Char Byte Token|Content
   1    0    0    0 +DOC |
   1    0    0    0 =HEAD|---
   1    3    3    3 +NODE|
   1    3    3    3 =WSPC|.
   1    4    4    4 +PROP|
   1    4    4    4 +TAG |
   1    4    4    4 =SYNX|!
   1    5    5    5 =SYNX|<
   1    6    6    6 =META|tag:clarkevans.com,2002:invoice
   1   37   37   37 =SYNX|>
   1   38   38   38 -TAG |
   1   38   38   38 -PROP|
   1   38   38   38 =EOL |\x0a
   2    0   39   39 +MAP |
   2    0   39   39 +PAIR|
   2    0   39   39 +NODE|
   2    0   39   39 +VAL |
   2    0   39   39 =TEXT|invoice
   2    7   46   46 -VAL |
   2    7   46   46 -NODE|
   2    7   46   46 =SYNX|:
   2    8   47   47 =WSPC|.
   2    9   48   48 +NODE|
   2    9   48   48 +VAL |
   2    9   48   48 =TEXT|34843
   2   14   53   53 -VAL |
   2   14   53   53 -NODE|
   2   14   53   53 =EOL |\x0a
   3    0   54   54 -PAIR|
   3    0   54   54 +PAIR|
   3    0   54   54 +NODE|
   3    0   54   54 +VAL |
   3    0   54   54 =TEXT|date
   3    4   58   58 -VAL |
   3    4   58   58 -NODE|
   3    4   58   58 =WSPC|...
   3    7   61   61 =SYNX|:
   3    8   62   62 =WSPC|.
   3    9   63   63 +NODE|
   3    9   63   63 +VAL |
   3    9   63   63 =TEXT|2001-01-23
   3   19   73   73 -VAL |
   3   19   73   73 -NODE|
   3   19   73   73 =EOL |\x0a
   4    0   74   74 -PAIR|
   4    0   74   74 +PAIR|
   4    0   74   74 +NODE|
   4    0   74   74 +VAL |
   4    0   74   74 =TEXT|bill-to
   4    7   81   81 -VAL |
   4    7   81   81 -NODE|
   4    7   81   81 =SYNX|:
   4    8   82   82 +NODE|
   4    8   82   82 =WSPC|.
   4    9   83   83 +PROP|
   4    9   83   83 +ANCH|
   4    9   83   83 =SYNX|&
   4   10   84   84 =META|id001
   4   15   89   89 -ANCH|
   4   15   89   89 -PROP|
   4   15   89   89 =EOL |\x0a
   5    0   90   90 +MAP |
   5    0   90   90 =DENT|....
   5    4   94   94 +PAIR|
   5    4   94   94 +NODE|
   5    4   94   94 +VAL |
   5    4   94   94 =TEXT|given
   5    9   99   99 -VAL |
   5    9   99   99 -NODE|
   5    9   99   99 =WSPC|..
   5   11  101  101 =SYNX|:
   5   12  102  102 =WSPC|.
   5   13  103  103 +NODE|
   5   13  103  103 +VAL |
   5   13  103  103 =TEXT|Chris
   5   18  108  108 -VAL |
   5   18  108  108 -NODE|
   5   18  108  108 =EOL |\x0a
   6    0  109  109 -PAIR|
   6    0  109  109 =DENT|....
   6    4  113  113 +PAIR|
   6    4  113  113 +NODE|
   6    4  113  113 +VAL |
   6    4  113  113 =TEXT|family
   6   10  119  119 -VAL |
   6   10  119  119 -NODE|
   6   10  119  119 =WSPC|.
   6   11  120  120 =SYNX|:
   6   12  121  121 =WSPC|.
   6   13  122  122 +NODE|
   6   13  122  122 +VAL |
   6   13  122  122 =TEXT|Dumars
   6   19  128  128 -VAL |
   6   19  128  128 -NODE|
   6   19  128  128 =EOL |\x0a
   7    0  129  129 -PAIR|
   7    0  129  129 =DENT|....
   7    4  133  133 +PAIR|
   7    4  133  133 +NODE|
   7    4  133  133 +VAL |
   7    4  133  133 =TEXT|address
   7   11  140  140 -VAL |
   7   11  140  140 -NODE|
   7   11  140  140 =SYNX|:
   7   12  141  141 +NODE|
   7   12  141  141 =EOL |\x0a
   8    0  142  142 +MAP |
   8    0  142  142 =DENT|........
   8    8  150  150 +PAIR|
   8    8  150  150 +NODE|
   8    8  150  150 +VAL |
   8    8  150  150 =TEXT|lines
   8   13  155  155 -VAL |
   8   13  155  155 -NODE|
   8   13  155  155 =SYNX|:
   8   14  156  156 +NODE|
   8   14  156  156 =WSPC|.
   8   15  157  157 +VAL |
   8   15  157  157 =SYNX||
   8   16  158  158 =EOL |\x0a
   9    0  159  159 =DENT|............
   9   12  171  171 =TEXT|458.Walkman.Dr.
   9   27  186  186 =NEWL|\x0a
  10    0  187  187 =DENT|............
  10   12  199  199 =TEXT|Suite.#292
  10   22  209  209 =NEWL|\x0a
  11    0  210  210 -VAL |
  11    0  210  210 -NODE|
  11    0  210  210 -PAIR|
  11    0  210  210 =DENT|........
  11    8  218  218 +PAIR|
  11    8  218  218 +NODE|
  11    8  218  218 +VAL |
  11    8  218  218 =TEXT|city
  11   12  222  222 -VAL |
  11   12  222  222 -NODE|
  11   12  222  222 =WSPC|....
  11   16  226  226 =SYNX|:
  11   17  227  227 =WSPC|.
  11   18  228  228 +NODE|
  11   18  228  228 +VAL |
  11   18  228  228 =TEXT|Royal.Oak
  11   27  237  237 -VAL |
  11   27  237  237 -NODE|
  11   27  237  237 =EOL |\x0a
  12    0  238  238 -PAIR|
  12    0  238  238 =DENT|........
  12    8  246  246 +PAIR|
  12    8  246  246 +NODE|
  12    8  246  246 +VAL |
  12    8  246  246 =TEXT|state
  12   13  251  251 -VAL |
  12   13  251  251 -NODE|
  12   13  251  251 =WSPC|...
  12   16  254  254 =SYNX|:
  12   17  255  255 =WSPC|.
  12   18  256  256 +NODE|
  12   18  256  256 +VAL |
  12   18  256  256 =TEXT|MI
  12   20  258  258 -VAL |
  12   20  258  258 -NODE|
  12   20  258  258 =EOL |\x0a
  13    0  259  259 -PAIR|
  13    0  259  259 =DENT|........
  13    8  267  267 +PAIR|
  13    8  267  267 +NODE|
  13    8  267  267 +VAL |
  13    8  267  267 =TEXT|postal
  13   14  273  273 -VAL |
  13   14  273  273 -NODE|
  13   14  273  273 =WSPC|..
  13   16  275  275 =SYNX|:
  13   17  276  276 =WSPC|.
  13   18  277  277 +NODE|
  13   18  277  277 +VAL |
  13   18  277  277 =TEXT|48046
  13   23  282  282 -VAL |
  13   23  282  282 -NODE|
  13   23  282  282 =EOL |\x0a
  14    0  283  283 -PAIR|
  14    0  283  283 -MAP |
  14    0  283  283 -NODE|
  14    0  283  283 -PAIR|
  14    0  283  283 -MAP |
  14    0  283  283 -NODE|
  14    0  283  283 -PAIR|
  14    0  283  283 +PAIR|
  14    0  283  283 +NODE|
  14    0  283  283 +VAL |
  14    0  283  283 =TEXT|ship-to
  14    7  290  290 -VAL |
  14    7  290  290 -NODE|
  14    7  290  290 =SYNX|:
  14    8  291  291 =WSPC|.
  14    9  292  292 +NODE|
  14    9  292  292 +ALI |
  14    9  292  292 =SYNX|*
  14   10  293  293 =META|id001
  14   15  298  298 -ALI |
  14   15  298  298 -NODE|
----- 8< -----

perl-pp-perl

 na
{
  'bill-to' => {
                 'address' => {
                                'city' => 'Royal Oak',
                                'lines' => '458 Walkman Dr.
Suite #292
',
                                'postal' => 48046,
                                'state' => 'MI'
                              },
                 'family' => 'Dumars',
                 'given' => 'Chris'
               },
  'comments' => 'Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.',
  'date' => '2001-01-23',
  'invoice' => 34843,
  'product' => [
                 {
                   'description' => 'Basketball',
                   'price' => '450',
                   'quantity' => 4,
                   'sku' => 'BL394D'
                 },
                 {
                   'description' => 'Super Hoop',
                   'price' => '2392',
                   'quantity' => 1,
                   'sku' => 'BL4438H'
                 }
               ],
  'ship-to' => $VAR1->{'bill-to'},
  'tax' => '251.42',
  'total' => '4443.52'
}

perl-pplibyaml-perl

 na
{
  'bill-to' => {
                 'address' => {
                                'city' => 'Royal Oak',
                                'lines' => '458 Walkman Dr.
Suite #292
',
                                'postal' => 48046,
                                'state' => 'MI'
                              },
                 'family' => 'Dumars',
                 'given' => 'Chris'
               },
  'comments' => 'Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.',
  'date' => '2001-01-23',
  'invoice' => 34843,
  'product' => [
                 {
                   'description' => 'Basketball',
                   'price' => '450',
                   'quantity' => 4,
                   'sku' => 'BL394D'
                 },
                 {
                   'description' => 'Super Hoop',
                   'price' => '2392',
                   'quantity' => 1,
                   'sku' => 'BL4438H'
                 }
               ],
  'ship-to' => $VAR1->{'bill-to'},
  'tax' => '251.42',
  'total' => '4443.52'
}

perl-syck-perl

 na
{
  'bill-to' => {
                 'address' => {
                                'city' => 'Royal Oak',
                                'lines' => '458 Walkman Dr.
Suite #292
',
                                'postal' => 48046,
                                'state' => 'MI'
                              },
                 'family' => 'Dumars',
                 'given' => 'Chris'
               },
  'comments' => 'Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.',
  'date' => '2001-01-23',
  'invoice' => 34843,
  'product' => [
                 {
                   'description' => 'Basketball',
                   'price' => '450',
                   'quantity' => 4,
                   'sku' => 'BL394D'
                 },
                 {
                   'description' => 'Super Hoop',
                   'price' => '2392',
                   'quantity' => 1,
                   'sku' => 'BL4438H'
                 }
               ],
  'ship-to' => $VAR1->{'bill-to'},
  'tax' => '251.42',
  'total' => '4443.52'
}

py-pyyaml-py

 na
GenericMapping(tag='tag:clarkevans.com,2002:invoice', content={'invoice': 34843, 'date': datetime.date(2001, 1, 23), 'bill-to': {'given': 'Chris', 'family': 'Dumars', 'address': {'lines': '458 Walkman Dr.\nSuite #292\n', 'city': 'Royal Oak', 'state': 'MI', 'postal': 48046}}, 'ship-to': {'given': 'Chris', 'family': 'Dumars', 'address': {'lines': '458 Walkman Dr.\nSuite #292\n', 'city': 'Royal Oak', 'state': 'MI', 'postal': 48046}}, 'product': [{'sku': 'BL394D', 'quantity': 4, 'description': 'Basketball', 'price': 450.0}, {'sku': 'BL4438H', 'quantity': 1, 'description': 'Super Hoop', 'price': 2392.0}], 'tax': 251.42, 'total': 4443.52, 'comments': 'Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.'})

py-ruamel-py

 na
GenericMapping(tag='tag:clarkevans.com,2002:invoice', content={'invoice': 34843, 'date': datetime.date(2001, 1, 23), 'bill-to': {'given': 'Chris', 'family': 'Dumars', 'address': {'lines': '458 Walkman Dr.\nSuite #292\n', 'city': 'Royal Oak', 'state': 'MI', 'postal': 48046}}, 'ship-to': {'given': 'Chris', 'family': 'Dumars', 'address': {'lines': '458 Walkman Dr.\nSuite #292\n', 'city': 'Royal Oak', 'state': 'MI', 'postal': 48046}}, 'product': [{'sku': 'BL394D', 'quantity': 4, 'description': 'Basketball', 'price': 450.0}, {'sku': 'BL4438H', 'quantity': 1, 'description': 'Super Hoop', 'price': 2392.0}], 'tax': 251.42, 'total': 4443.52, 'comments': 'Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.'})

dotnet-yamldotnet-json

 ni
Unhandled exception. YamlDotNet.Core.YamlException: (Line: 1, Col: 5, Idx: 4) - (Line: 2, Col: 1, Idx: 39): Encountered an unresolved tag 'tag:clarkevans.com,2002:invoice'
   at YamlDotNet.Serialization.NodeTypeResolvers.PreventUnknownTagsNodeTypeResolver.YamlDotNet.Serialization.INodeTypeResolver.Resolve(NodeEvent nodeEvent, Type& currentType)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.GetTypeFromEvent(NodeEvent nodeEvent, Type currentType)
   at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer)
   at YamlDotNet.Serialization.Deserializer.Deserialize(IParser parser, Type type)
   at YamlDotNet.Serialization.Deserializer.Deserialize(TextReader input, Type type)
   at YamlDotNet.Serialization.Deserializer.Deserialize(TextReader input)
   at Program.Main(String[] commandLineArguments)
Aborted (core dumped)

js-jsyaml-json

 ni
/node/node_modules/js-yaml/lib/loader.js:187
  throw generateError(state, message);
  ^
YAMLException: unknown tag !<tag:clarkevans.com,2002:invoice> (30:1)

 27 |     Late afternoon is best.
 28 |     Backup contact is Nancy
 29 |     Billsmer @ 338-4338.
 30 | 
------^
    at generateError (/node/node_modules/js-yaml/lib/loader.js:183:10)
    at throwError (/node/node_modules/js-yaml/lib/loader.js:187:9)
    at composeNode (/node/node_modules/js-yaml/lib/loader.js:1521:7)
    at readDocument (/node/node_modules/js-yaml/lib/loader.js:1625:3)
    at loadDocuments (/node/node_modules/js-yaml/lib/loader.js:1688:5)
    at Object.loadAll (/node/node_modules/js-yaml/lib/loader.js:1701:19)
    at Object.<anonymous> (/yaml/bin/js-jsyaml-json:7:13)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Module.load (node:internal/modules/cjs/loader:1208:32) {
  reason: 'unknown tag !<tag:clarkevans.com,2002:invoice>',
  mark: {
    name: null,
    buffer: '--- !<tag:clarkevans.com,2002:invoice>\n' +
      'invoice: 34843\n' +
      'date   : 2001-01-23\n' +
      'bill-to: &id001\n' +
      '    given  : Chris\n' +
      '    family : Dumars\n' +
      '    address:\n' +
      '        lines: |\n' +
      '            458 Walkman Dr.\n' +
      '            Suite #292\n' +
      '        city    : Royal Oak\n' +
      '        state   : MI\n' +
      '        postal  : 48046\n' +
      'ship-to: *id001\n' +
      'product:\n' +
      '    - sku         : BL394D\n' +
      '      quantity    : 4\n' +
      '      description : Basketball\n' +
      '      price       : 450.00\n' +
      '    - sku         : BL4438H\n' +
      '      quantity    : 1\n' +
      '      description : Super Hoop\n' +
      '      price       : 2392.00\n' +
      'tax  : 251.42\n' +
      'total: 4443.52\n' +
      'comments:\n' +
      '    Late afternoon is best.\n' +
      '    Backup contact is Nancy\n' +
      '    Billsmer @ 338-4338.\n',
    position: 644,
    line: 29,
    column: 0,
    snippet: ' 27 |     Late afternoon is best.\n' +
      ' 28 |     Backup contact is Nancy\n' +
      ' 29 |     Billsmer @ 338-4338.\n' +
      ' 30 | \n' +
      '------^'
  }
}

Node.js v20.13.1

perl-tiny-json

 ni
YAML::Tiny does not support a feature in line '!<tag:clarkevans.com,2002:invoice>' at /yaml/bin/perl-tiny-json line 12.

perl-tiny-perl

 ni
YAML::Tiny does not support a feature in line '!<tag:clarkevans.com,2002:invoice>' at /yaml/bin/perl-tiny-perl line 15.

perl-xs-json

 ni
YAML::XS::Load Error: The problem:

    bad tag found for hash: 'tag:clarkevans.com,2002:invoice'

was found at document: 1

perl-xs-perl

 ni
YAML::XS::Load Error: The problem:

    bad tag found for hash: 'tag:clarkevans.com,2002:invoice'

was found at document: 1