YAML-PP-v0.38.0/0000755000175000017500000000000014556031647011532 5ustar tinatinaYAML-PP-v0.38.0/MANIFEST0000644000175000017500000026037614556031647012701 0ustar tinatina# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.030. CONTRIBUTING.md Changes LICENSE MANIFEST MANIFEST.SKIP META.json META.yml Makefile.PL Makefile.dev README.md bin/yamlpp-events bin/yamlpp-highlight bin/yamlpp-load bin/yamlpp-load-dump bin/yamlpp-parse-emit dist.ini etc/generate-examples.pl etc/generate-grammar.pl etc/generate-schema-html.pl etc/grammar.yaml etc/json-numbers.pl etc/schema-test-yaml-modules.pl etc/test-suite-html.pl etc/yaml-numbers.pl examples/external-vars-templates/ext.pl examples/external-vars-templates/ext.yaml examples/schema-ixhash.pm examples/schema-perl.pm examples/schemas.pl examples/strings.yaml examples/yaml-schema-modules.yaml ext/yaml-test-schema/Makefile ext/yaml-test-schema/README.md ext/yaml-test-schema/etc/generate-schema-html.pl ext/yaml-test-schema/yaml-schema.yaml lib/YAML/PP.pm lib/YAML/PP/Common.pm lib/YAML/PP/Constructor.pm lib/YAML/PP/Dumper.pm lib/YAML/PP/Emitter.pm lib/YAML/PP/Exception.pm lib/YAML/PP/Grammar.pm lib/YAML/PP/Highlight.pm lib/YAML/PP/Lexer.pm lib/YAML/PP/Loader.pm lib/YAML/PP/Parser.pm lib/YAML/PP/Perl.pm lib/YAML/PP/Reader.pm lib/YAML/PP/Render.pm lib/YAML/PP/Representer.pm lib/YAML/PP/Schema.pm lib/YAML/PP/Schema/Binary.pm lib/YAML/PP/Schema/Core.pm lib/YAML/PP/Schema/Failsafe.pm lib/YAML/PP/Schema/Include.pm lib/YAML/PP/Schema/JSON.pm lib/YAML/PP/Schema/Merge.pm lib/YAML/PP/Schema/Perl.pm lib/YAML/PP/Schema/Tie/IxHash.pm lib/YAML/PP/Schema/YAML1_1.pm lib/YAML/PP/Type/MergeKey.pm lib/YAML/PP/Writer.pm lib/YAML/PP/Writer/File.pm t/00.compile.t t/10.parse-valid.t t/11.parse-invalid.t t/12.load-json.t t/13.load-anchor.t t/14.load-bool.t t/15.parse-eol.t t/16.loader.t t/17.load-complex-keys.t t/18.control.t t/19.file.t t/20.dump.t t/21.emit.t t/22.dump-bool.t t/23-dump-anchor.t t/24.double-escapes.t t/30.legacy.t t/31.schema.t t/32.cyclic-refs.t t/34.emit-scalar-styles.t t/35.highlight.t t/36.debug.t t/37.schema-perl.t t/38.schema-ixhash.t t/39.emitter-alias.t t/40.representers.t t/41.custom.schema.t t/42.tokens.t t/43.indent.t t/44.writer.t t/45.binary.t t/46.line-endings.t t/47.header-footer.t t/48.merge.t t/49.include.t t/50.clone.t t/51.directives.t t/52.preserve.t t/53.customtag-alias.t t/54.glob.t t/55.flow.t t/56.force-flow.t t/57.dup-keys.t t/data/include/circular1.yaml t/data/include/circular2.yaml t/data/include/include.yaml t/data/include/include1.yaml t/data/include/include2.yaml t/data/include/include3.yaml t/data/simple.yaml t/invalid/i032/=== t/invalid/i032/in.yaml t/invalid/i032/test.event t/invalid/i033/=== t/invalid/i033/in.yaml t/invalid/i033/test.event t/invalid/i034/=== t/invalid/i034/in.yaml t/invalid/i034/test.event t/invalid/i035/=== t/invalid/i035/in.yaml t/invalid/i035/test.event t/invalid/i036/=== t/invalid/i036/in.yaml t/invalid/i036/test.event t/invalid/i037/=== t/invalid/i037/in.yaml t/invalid/i037/test.event t/invalid/i038/=== t/invalid/i038/in.yaml t/invalid/i038/test.event t/lib/MySchema.pm t/lib/YAML/PP/Test.pm t/valid/v009/=== t/valid/v009/in.yaml t/valid/v009/out.yaml t/valid/v009/test.event t/valid/v014/=== t/valid/v014/in.yaml t/valid/v014/test.event t/valid/v019/=== t/valid/v019/in.yaml t/valid/v019/out.yaml t/valid/v019/test.event t/valid/v020/=== t/valid/v020/in.yaml t/valid/v020/out.yaml t/valid/v020/test.event t/valid/v021/=== t/valid/v021/in.yaml t/valid/v021/out.yaml t/valid/v021/test.event t/valid/v022/=== t/valid/v022/in.json t/valid/v022/in.yaml t/valid/v022/out.yaml t/valid/v022/test.event t/valid/v023/=== t/valid/v023/in.json t/valid/v023/in.yaml t/valid/v023/out.yaml t/valid/v023/test.event t/valid/v024/=== t/valid/v024/in.json t/valid/v024/in.yaml t/valid/v024/out.yaml t/valid/v024/test.event t/valid/v025/=== t/valid/v025/in.yaml t/valid/v025/out.yaml t/valid/v025/test.event t/valid/v026/=== t/valid/v026/in.yaml t/valid/v026/out.yaml t/valid/v026/test.event t/valid/v027/=== t/valid/v027/in.yaml t/valid/v027/out.yaml t/valid/v027/test.event t/valid/v028/=== t/valid/v028/in.yaml t/valid/v028/out.yaml t/valid/v028/test.event t/valid/v029/=== t/valid/v029/in.yaml t/valid/v029/out.yaml t/valid/v029/test.event t/valid/v030/=== t/valid/v030/in.yaml t/valid/v030/out.yaml t/valid/v030/test.event t/valid/v031/=== t/valid/v031/in.yaml t/valid/v031/out.yaml t/valid/v031/test.event t/valid/v032/=== t/valid/v032/in.yaml t/valid/v032/out.yaml t/valid/v032/test.event t/valid/v033/=== t/valid/v033/in.json t/valid/v033/in.yaml t/valid/v033/test.event t/valid/v034/=== t/valid/v034/in.json t/valid/v034/in.yaml t/valid/v034/out.yaml t/valid/v034/test.event test-suite/README.md test-suite/yaml-test-suite-data/229Q/=== test-suite/yaml-test-suite-data/229Q/in.json test-suite/yaml-test-suite-data/229Q/in.yaml test-suite/yaml-test-suite-data/229Q/out.yaml test-suite/yaml-test-suite-data/229Q/test.event test-suite/yaml-test-suite-data/236B/=== test-suite/yaml-test-suite-data/236B/error test-suite/yaml-test-suite-data/236B/in.yaml test-suite/yaml-test-suite-data/236B/test.event test-suite/yaml-test-suite-data/26DV/=== test-suite/yaml-test-suite-data/26DV/in.json test-suite/yaml-test-suite-data/26DV/in.yaml test-suite/yaml-test-suite-data/26DV/out.yaml test-suite/yaml-test-suite-data/26DV/test.event test-suite/yaml-test-suite-data/27NA/=== test-suite/yaml-test-suite-data/27NA/in.json test-suite/yaml-test-suite-data/27NA/in.yaml test-suite/yaml-test-suite-data/27NA/out.yaml test-suite/yaml-test-suite-data/27NA/test.event test-suite/yaml-test-suite-data/2AUY/=== test-suite/yaml-test-suite-data/2AUY/in.json test-suite/yaml-test-suite-data/2AUY/in.yaml test-suite/yaml-test-suite-data/2AUY/out.yaml test-suite/yaml-test-suite-data/2AUY/test.event test-suite/yaml-test-suite-data/2CMS/=== test-suite/yaml-test-suite-data/2CMS/error test-suite/yaml-test-suite-data/2CMS/in.yaml test-suite/yaml-test-suite-data/2CMS/test.event test-suite/yaml-test-suite-data/2EBW/=== test-suite/yaml-test-suite-data/2EBW/in.json test-suite/yaml-test-suite-data/2EBW/in.yaml test-suite/yaml-test-suite-data/2EBW/out.yaml test-suite/yaml-test-suite-data/2EBW/test.event test-suite/yaml-test-suite-data/2G84/00/=== test-suite/yaml-test-suite-data/2G84/00/error test-suite/yaml-test-suite-data/2G84/00/in.yaml test-suite/yaml-test-suite-data/2G84/00/test.event test-suite/yaml-test-suite-data/2G84/01/=== test-suite/yaml-test-suite-data/2G84/01/error test-suite/yaml-test-suite-data/2G84/01/in.yaml test-suite/yaml-test-suite-data/2G84/01/test.event test-suite/yaml-test-suite-data/2G84/02/=== test-suite/yaml-test-suite-data/2G84/02/emit.yaml test-suite/yaml-test-suite-data/2G84/02/in.json test-suite/yaml-test-suite-data/2G84/02/in.yaml test-suite/yaml-test-suite-data/2G84/02/test.event test-suite/yaml-test-suite-data/2G84/03/=== test-suite/yaml-test-suite-data/2G84/03/emit.yaml test-suite/yaml-test-suite-data/2G84/03/in.json test-suite/yaml-test-suite-data/2G84/03/in.yaml test-suite/yaml-test-suite-data/2G84/03/test.event test-suite/yaml-test-suite-data/2JQS/=== test-suite/yaml-test-suite-data/2JQS/in.yaml test-suite/yaml-test-suite-data/2JQS/test.event test-suite/yaml-test-suite-data/2LFX/=== test-suite/yaml-test-suite-data/2LFX/emit.yaml test-suite/yaml-test-suite-data/2LFX/in.json test-suite/yaml-test-suite-data/2LFX/in.yaml test-suite/yaml-test-suite-data/2LFX/out.yaml test-suite/yaml-test-suite-data/2LFX/test.event test-suite/yaml-test-suite-data/2SXE/=== test-suite/yaml-test-suite-data/2SXE/in.json test-suite/yaml-test-suite-data/2SXE/in.yaml test-suite/yaml-test-suite-data/2SXE/out.yaml test-suite/yaml-test-suite-data/2SXE/test.event test-suite/yaml-test-suite-data/2XXW/=== test-suite/yaml-test-suite-data/2XXW/in.json test-suite/yaml-test-suite-data/2XXW/in.yaml test-suite/yaml-test-suite-data/2XXW/out.yaml test-suite/yaml-test-suite-data/2XXW/test.event test-suite/yaml-test-suite-data/33X3/=== test-suite/yaml-test-suite-data/33X3/in.json test-suite/yaml-test-suite-data/33X3/in.yaml test-suite/yaml-test-suite-data/33X3/out.yaml test-suite/yaml-test-suite-data/33X3/test.event test-suite/yaml-test-suite-data/35KP/=== test-suite/yaml-test-suite-data/35KP/in.json test-suite/yaml-test-suite-data/35KP/in.yaml test-suite/yaml-test-suite-data/35KP/out.yaml test-suite/yaml-test-suite-data/35KP/test.event test-suite/yaml-test-suite-data/36F6/=== test-suite/yaml-test-suite-data/36F6/in.json test-suite/yaml-test-suite-data/36F6/in.yaml test-suite/yaml-test-suite-data/36F6/out.yaml test-suite/yaml-test-suite-data/36F6/test.event test-suite/yaml-test-suite-data/3ALJ/=== test-suite/yaml-test-suite-data/3ALJ/in.json test-suite/yaml-test-suite-data/3ALJ/in.yaml test-suite/yaml-test-suite-data/3ALJ/test.event test-suite/yaml-test-suite-data/3GZX/=== test-suite/yaml-test-suite-data/3GZX/in.json test-suite/yaml-test-suite-data/3GZX/in.yaml test-suite/yaml-test-suite-data/3GZX/test.event test-suite/yaml-test-suite-data/3HFZ/=== test-suite/yaml-test-suite-data/3HFZ/error test-suite/yaml-test-suite-data/3HFZ/in.yaml test-suite/yaml-test-suite-data/3HFZ/test.event test-suite/yaml-test-suite-data/3MYT/=== test-suite/yaml-test-suite-data/3MYT/in.json test-suite/yaml-test-suite-data/3MYT/in.yaml test-suite/yaml-test-suite-data/3MYT/out.yaml test-suite/yaml-test-suite-data/3MYT/test.event test-suite/yaml-test-suite-data/3R3P/=== test-suite/yaml-test-suite-data/3R3P/in.json test-suite/yaml-test-suite-data/3R3P/in.yaml test-suite/yaml-test-suite-data/3R3P/out.yaml test-suite/yaml-test-suite-data/3R3P/test.event test-suite/yaml-test-suite-data/3RLN/00/=== test-suite/yaml-test-suite-data/3RLN/00/emit.yaml test-suite/yaml-test-suite-data/3RLN/00/in.json test-suite/yaml-test-suite-data/3RLN/00/in.yaml test-suite/yaml-test-suite-data/3RLN/00/test.event test-suite/yaml-test-suite-data/3RLN/01/=== test-suite/yaml-test-suite-data/3RLN/01/emit.yaml test-suite/yaml-test-suite-data/3RLN/01/in.json test-suite/yaml-test-suite-data/3RLN/01/in.yaml test-suite/yaml-test-suite-data/3RLN/01/test.event test-suite/yaml-test-suite-data/3RLN/02/=== test-suite/yaml-test-suite-data/3RLN/02/emit.yaml test-suite/yaml-test-suite-data/3RLN/02/in.json test-suite/yaml-test-suite-data/3RLN/02/in.yaml test-suite/yaml-test-suite-data/3RLN/02/test.event test-suite/yaml-test-suite-data/3RLN/03/=== test-suite/yaml-test-suite-data/3RLN/03/emit.yaml test-suite/yaml-test-suite-data/3RLN/03/in.json test-suite/yaml-test-suite-data/3RLN/03/in.yaml test-suite/yaml-test-suite-data/3RLN/03/test.event test-suite/yaml-test-suite-data/3RLN/04/=== test-suite/yaml-test-suite-data/3RLN/04/emit.yaml test-suite/yaml-test-suite-data/3RLN/04/in.json test-suite/yaml-test-suite-data/3RLN/04/in.yaml test-suite/yaml-test-suite-data/3RLN/04/test.event test-suite/yaml-test-suite-data/3RLN/05/=== test-suite/yaml-test-suite-data/3RLN/05/emit.yaml test-suite/yaml-test-suite-data/3RLN/05/in.json test-suite/yaml-test-suite-data/3RLN/05/in.yaml test-suite/yaml-test-suite-data/3RLN/05/test.event test-suite/yaml-test-suite-data/3UYS/=== test-suite/yaml-test-suite-data/3UYS/in.json test-suite/yaml-test-suite-data/3UYS/in.yaml test-suite/yaml-test-suite-data/3UYS/out.yaml test-suite/yaml-test-suite-data/3UYS/test.event test-suite/yaml-test-suite-data/4ABK/=== test-suite/yaml-test-suite-data/4ABK/in.yaml test-suite/yaml-test-suite-data/4ABK/out.yaml test-suite/yaml-test-suite-data/4ABK/test.event test-suite/yaml-test-suite-data/4CQQ/=== test-suite/yaml-test-suite-data/4CQQ/in.json test-suite/yaml-test-suite-data/4CQQ/in.yaml test-suite/yaml-test-suite-data/4CQQ/out.yaml test-suite/yaml-test-suite-data/4CQQ/test.event test-suite/yaml-test-suite-data/4EJS/=== test-suite/yaml-test-suite-data/4EJS/error test-suite/yaml-test-suite-data/4EJS/in.yaml test-suite/yaml-test-suite-data/4EJS/test.event test-suite/yaml-test-suite-data/4FJ6/=== test-suite/yaml-test-suite-data/4FJ6/in.yaml test-suite/yaml-test-suite-data/4FJ6/out.yaml test-suite/yaml-test-suite-data/4FJ6/test.event test-suite/yaml-test-suite-data/4GC6/=== test-suite/yaml-test-suite-data/4GC6/in.json test-suite/yaml-test-suite-data/4GC6/in.yaml test-suite/yaml-test-suite-data/4GC6/test.event test-suite/yaml-test-suite-data/4H7K/=== test-suite/yaml-test-suite-data/4H7K/error test-suite/yaml-test-suite-data/4H7K/in.yaml test-suite/yaml-test-suite-data/4H7K/test.event test-suite/yaml-test-suite-data/4HVU/=== test-suite/yaml-test-suite-data/4HVU/error test-suite/yaml-test-suite-data/4HVU/in.yaml test-suite/yaml-test-suite-data/4HVU/test.event test-suite/yaml-test-suite-data/4JVG/=== test-suite/yaml-test-suite-data/4JVG/error test-suite/yaml-test-suite-data/4JVG/in.yaml test-suite/yaml-test-suite-data/4JVG/test.event test-suite/yaml-test-suite-data/4MUZ/00/=== test-suite/yaml-test-suite-data/4MUZ/00/emit.yaml test-suite/yaml-test-suite-data/4MUZ/00/in.json test-suite/yaml-test-suite-data/4MUZ/00/in.yaml test-suite/yaml-test-suite-data/4MUZ/00/test.event test-suite/yaml-test-suite-data/4MUZ/01/=== test-suite/yaml-test-suite-data/4MUZ/01/emit.yaml test-suite/yaml-test-suite-data/4MUZ/01/in.json test-suite/yaml-test-suite-data/4MUZ/01/in.yaml test-suite/yaml-test-suite-data/4MUZ/01/test.event test-suite/yaml-test-suite-data/4MUZ/02/=== test-suite/yaml-test-suite-data/4MUZ/02/emit.yaml test-suite/yaml-test-suite-data/4MUZ/02/in.json test-suite/yaml-test-suite-data/4MUZ/02/in.yaml test-suite/yaml-test-suite-data/4MUZ/02/test.event test-suite/yaml-test-suite-data/4Q9F/=== test-suite/yaml-test-suite-data/4Q9F/in.json test-suite/yaml-test-suite-data/4Q9F/in.yaml test-suite/yaml-test-suite-data/4Q9F/out.yaml test-suite/yaml-test-suite-data/4Q9F/test.event test-suite/yaml-test-suite-data/4QFQ/=== test-suite/yaml-test-suite-data/4QFQ/emit.yaml test-suite/yaml-test-suite-data/4QFQ/in.json test-suite/yaml-test-suite-data/4QFQ/in.yaml test-suite/yaml-test-suite-data/4QFQ/test.event test-suite/yaml-test-suite-data/4RWC/=== test-suite/yaml-test-suite-data/4RWC/in.json test-suite/yaml-test-suite-data/4RWC/in.yaml test-suite/yaml-test-suite-data/4RWC/out.yaml test-suite/yaml-test-suite-data/4RWC/test.event test-suite/yaml-test-suite-data/4UYU/=== test-suite/yaml-test-suite-data/4UYU/in.json test-suite/yaml-test-suite-data/4UYU/in.yaml test-suite/yaml-test-suite-data/4UYU/test.event test-suite/yaml-test-suite-data/4V8U/=== test-suite/yaml-test-suite-data/4V8U/in.json test-suite/yaml-test-suite-data/4V8U/in.yaml test-suite/yaml-test-suite-data/4V8U/out.yaml test-suite/yaml-test-suite-data/4V8U/test.event test-suite/yaml-test-suite-data/4WA9/=== test-suite/yaml-test-suite-data/4WA9/emit.yaml test-suite/yaml-test-suite-data/4WA9/in.json test-suite/yaml-test-suite-data/4WA9/in.yaml test-suite/yaml-test-suite-data/4WA9/out.yaml test-suite/yaml-test-suite-data/4WA9/test.event test-suite/yaml-test-suite-data/4ZYM/=== test-suite/yaml-test-suite-data/4ZYM/emit.yaml test-suite/yaml-test-suite-data/4ZYM/in.json test-suite/yaml-test-suite-data/4ZYM/in.yaml test-suite/yaml-test-suite-data/4ZYM/out.yaml test-suite/yaml-test-suite-data/4ZYM/test.event test-suite/yaml-test-suite-data/52DL/=== test-suite/yaml-test-suite-data/52DL/in.json test-suite/yaml-test-suite-data/52DL/in.yaml test-suite/yaml-test-suite-data/52DL/out.yaml test-suite/yaml-test-suite-data/52DL/test.event test-suite/yaml-test-suite-data/54T7/=== test-suite/yaml-test-suite-data/54T7/in.json test-suite/yaml-test-suite-data/54T7/in.yaml test-suite/yaml-test-suite-data/54T7/out.yaml test-suite/yaml-test-suite-data/54T7/test.event test-suite/yaml-test-suite-data/55WF/=== test-suite/yaml-test-suite-data/55WF/error test-suite/yaml-test-suite-data/55WF/in.yaml test-suite/yaml-test-suite-data/55WF/test.event test-suite/yaml-test-suite-data/565N/=== test-suite/yaml-test-suite-data/565N/in.json test-suite/yaml-test-suite-data/565N/in.yaml test-suite/yaml-test-suite-data/565N/test.event test-suite/yaml-test-suite-data/57H4/=== test-suite/yaml-test-suite-data/57H4/in.json test-suite/yaml-test-suite-data/57H4/in.yaml test-suite/yaml-test-suite-data/57H4/out.yaml test-suite/yaml-test-suite-data/57H4/test.event test-suite/yaml-test-suite-data/58MP/=== test-suite/yaml-test-suite-data/58MP/in.json test-suite/yaml-test-suite-data/58MP/in.yaml test-suite/yaml-test-suite-data/58MP/out.yaml test-suite/yaml-test-suite-data/58MP/test.event test-suite/yaml-test-suite-data/5BVJ/=== test-suite/yaml-test-suite-data/5BVJ/in.json test-suite/yaml-test-suite-data/5BVJ/in.yaml test-suite/yaml-test-suite-data/5BVJ/out.yaml test-suite/yaml-test-suite-data/5BVJ/test.event test-suite/yaml-test-suite-data/5C5M/=== test-suite/yaml-test-suite-data/5C5M/in.json test-suite/yaml-test-suite-data/5C5M/in.yaml test-suite/yaml-test-suite-data/5C5M/out.yaml test-suite/yaml-test-suite-data/5C5M/test.event test-suite/yaml-test-suite-data/5GBF/=== test-suite/yaml-test-suite-data/5GBF/in.json test-suite/yaml-test-suite-data/5GBF/in.yaml test-suite/yaml-test-suite-data/5GBF/out.yaml test-suite/yaml-test-suite-data/5GBF/test.event test-suite/yaml-test-suite-data/5KJE/=== test-suite/yaml-test-suite-data/5KJE/in.json test-suite/yaml-test-suite-data/5KJE/in.yaml test-suite/yaml-test-suite-data/5KJE/out.yaml test-suite/yaml-test-suite-data/5KJE/test.event test-suite/yaml-test-suite-data/5LLU/=== test-suite/yaml-test-suite-data/5LLU/error test-suite/yaml-test-suite-data/5LLU/in.yaml test-suite/yaml-test-suite-data/5LLU/test.event test-suite/yaml-test-suite-data/5MUD/=== test-suite/yaml-test-suite-data/5MUD/in.json test-suite/yaml-test-suite-data/5MUD/in.yaml test-suite/yaml-test-suite-data/5MUD/out.yaml test-suite/yaml-test-suite-data/5MUD/test.event test-suite/yaml-test-suite-data/5NYZ/=== test-suite/yaml-test-suite-data/5NYZ/in.json test-suite/yaml-test-suite-data/5NYZ/in.yaml test-suite/yaml-test-suite-data/5NYZ/out.yaml test-suite/yaml-test-suite-data/5NYZ/test.event test-suite/yaml-test-suite-data/5T43/=== test-suite/yaml-test-suite-data/5T43/emit.yaml test-suite/yaml-test-suite-data/5T43/in.json test-suite/yaml-test-suite-data/5T43/in.yaml test-suite/yaml-test-suite-data/5T43/out.yaml test-suite/yaml-test-suite-data/5T43/test.event test-suite/yaml-test-suite-data/5TRB/=== test-suite/yaml-test-suite-data/5TRB/error test-suite/yaml-test-suite-data/5TRB/in.yaml test-suite/yaml-test-suite-data/5TRB/test.event test-suite/yaml-test-suite-data/5TYM/=== test-suite/yaml-test-suite-data/5TYM/in.json test-suite/yaml-test-suite-data/5TYM/in.yaml test-suite/yaml-test-suite-data/5TYM/test.event test-suite/yaml-test-suite-data/5U3A/=== test-suite/yaml-test-suite-data/5U3A/error test-suite/yaml-test-suite-data/5U3A/in.yaml test-suite/yaml-test-suite-data/5U3A/test.event test-suite/yaml-test-suite-data/5WE3/=== test-suite/yaml-test-suite-data/5WE3/in.json test-suite/yaml-test-suite-data/5WE3/in.yaml test-suite/yaml-test-suite-data/5WE3/out.yaml test-suite/yaml-test-suite-data/5WE3/test.event test-suite/yaml-test-suite-data/62EZ/=== test-suite/yaml-test-suite-data/62EZ/error test-suite/yaml-test-suite-data/62EZ/in.yaml test-suite/yaml-test-suite-data/62EZ/test.event test-suite/yaml-test-suite-data/652Z/=== test-suite/yaml-test-suite-data/652Z/emit.yaml test-suite/yaml-test-suite-data/652Z/in.json test-suite/yaml-test-suite-data/652Z/in.yaml test-suite/yaml-test-suite-data/652Z/out.yaml test-suite/yaml-test-suite-data/652Z/test.event test-suite/yaml-test-suite-data/65WH/=== test-suite/yaml-test-suite-data/65WH/in.json test-suite/yaml-test-suite-data/65WH/in.yaml test-suite/yaml-test-suite-data/65WH/test.event test-suite/yaml-test-suite-data/6BCT/=== test-suite/yaml-test-suite-data/6BCT/in.json test-suite/yaml-test-suite-data/6BCT/in.yaml test-suite/yaml-test-suite-data/6BCT/out.yaml test-suite/yaml-test-suite-data/6BCT/test.event test-suite/yaml-test-suite-data/6BFJ/=== test-suite/yaml-test-suite-data/6BFJ/in.yaml test-suite/yaml-test-suite-data/6BFJ/out.yaml test-suite/yaml-test-suite-data/6BFJ/test.event test-suite/yaml-test-suite-data/6CA3/=== test-suite/yaml-test-suite-data/6CA3/emit.yaml test-suite/yaml-test-suite-data/6CA3/in.json test-suite/yaml-test-suite-data/6CA3/in.yaml test-suite/yaml-test-suite-data/6CA3/test.event test-suite/yaml-test-suite-data/6CK3/=== test-suite/yaml-test-suite-data/6CK3/in.json test-suite/yaml-test-suite-data/6CK3/in.yaml test-suite/yaml-test-suite-data/6CK3/test.event test-suite/yaml-test-suite-data/6FWR/=== test-suite/yaml-test-suite-data/6FWR/emit.yaml test-suite/yaml-test-suite-data/6FWR/in.json test-suite/yaml-test-suite-data/6FWR/in.yaml test-suite/yaml-test-suite-data/6FWR/out.yaml test-suite/yaml-test-suite-data/6FWR/test.event test-suite/yaml-test-suite-data/6H3V/=== test-suite/yaml-test-suite-data/6H3V/in.json test-suite/yaml-test-suite-data/6H3V/in.yaml test-suite/yaml-test-suite-data/6H3V/out.yaml test-suite/yaml-test-suite-data/6H3V/test.event test-suite/yaml-test-suite-data/6HB6/=== test-suite/yaml-test-suite-data/6HB6/in.json test-suite/yaml-test-suite-data/6HB6/in.yaml test-suite/yaml-test-suite-data/6HB6/out.yaml test-suite/yaml-test-suite-data/6HB6/test.event test-suite/yaml-test-suite-data/6JQW/=== test-suite/yaml-test-suite-data/6JQW/in.json test-suite/yaml-test-suite-data/6JQW/in.yaml test-suite/yaml-test-suite-data/6JQW/out.yaml test-suite/yaml-test-suite-data/6JQW/test.event test-suite/yaml-test-suite-data/6JTT/=== test-suite/yaml-test-suite-data/6JTT/error test-suite/yaml-test-suite-data/6JTT/in.yaml test-suite/yaml-test-suite-data/6JTT/test.event test-suite/yaml-test-suite-data/6JWB/=== test-suite/yaml-test-suite-data/6JWB/in.json test-suite/yaml-test-suite-data/6JWB/in.yaml test-suite/yaml-test-suite-data/6JWB/out.yaml test-suite/yaml-test-suite-data/6JWB/test.event test-suite/yaml-test-suite-data/6KGN/=== test-suite/yaml-test-suite-data/6KGN/in.json test-suite/yaml-test-suite-data/6KGN/in.yaml test-suite/yaml-test-suite-data/6KGN/out.yaml test-suite/yaml-test-suite-data/6KGN/test.event test-suite/yaml-test-suite-data/6LVF/=== test-suite/yaml-test-suite-data/6LVF/in.json test-suite/yaml-test-suite-data/6LVF/in.yaml test-suite/yaml-test-suite-data/6LVF/out.yaml test-suite/yaml-test-suite-data/6LVF/test.event test-suite/yaml-test-suite-data/6M2F/=== test-suite/yaml-test-suite-data/6M2F/in.yaml test-suite/yaml-test-suite-data/6M2F/out.yaml test-suite/yaml-test-suite-data/6M2F/test.event test-suite/yaml-test-suite-data/6PBE/=== test-suite/yaml-test-suite-data/6PBE/emit.yaml test-suite/yaml-test-suite-data/6PBE/in.yaml test-suite/yaml-test-suite-data/6PBE/test.event test-suite/yaml-test-suite-data/6S55/=== test-suite/yaml-test-suite-data/6S55/error test-suite/yaml-test-suite-data/6S55/in.yaml test-suite/yaml-test-suite-data/6S55/test.event test-suite/yaml-test-suite-data/6SLA/=== test-suite/yaml-test-suite-data/6SLA/in.json test-suite/yaml-test-suite-data/6SLA/in.yaml test-suite/yaml-test-suite-data/6SLA/out.yaml test-suite/yaml-test-suite-data/6SLA/test.event test-suite/yaml-test-suite-data/6VJK/=== test-suite/yaml-test-suite-data/6VJK/in.json test-suite/yaml-test-suite-data/6VJK/in.yaml test-suite/yaml-test-suite-data/6VJK/out.yaml test-suite/yaml-test-suite-data/6VJK/test.event test-suite/yaml-test-suite-data/6WLZ/=== test-suite/yaml-test-suite-data/6WLZ/emit.yaml test-suite/yaml-test-suite-data/6WLZ/in.json test-suite/yaml-test-suite-data/6WLZ/in.yaml test-suite/yaml-test-suite-data/6WLZ/out.yaml test-suite/yaml-test-suite-data/6WLZ/test.event test-suite/yaml-test-suite-data/6WPF/=== test-suite/yaml-test-suite-data/6WPF/emit.yaml test-suite/yaml-test-suite-data/6WPF/in.json test-suite/yaml-test-suite-data/6WPF/in.yaml test-suite/yaml-test-suite-data/6WPF/out.yaml test-suite/yaml-test-suite-data/6WPF/test.event test-suite/yaml-test-suite-data/6XDY/=== test-suite/yaml-test-suite-data/6XDY/in.json test-suite/yaml-test-suite-data/6XDY/in.yaml test-suite/yaml-test-suite-data/6XDY/out.yaml test-suite/yaml-test-suite-data/6XDY/test.event test-suite/yaml-test-suite-data/6ZKB/=== test-suite/yaml-test-suite-data/6ZKB/emit.yaml test-suite/yaml-test-suite-data/6ZKB/in.json test-suite/yaml-test-suite-data/6ZKB/in.yaml test-suite/yaml-test-suite-data/6ZKB/test.event test-suite/yaml-test-suite-data/735Y/=== test-suite/yaml-test-suite-data/735Y/in.json test-suite/yaml-test-suite-data/735Y/in.yaml test-suite/yaml-test-suite-data/735Y/out.yaml test-suite/yaml-test-suite-data/735Y/test.event test-suite/yaml-test-suite-data/74H7/=== test-suite/yaml-test-suite-data/74H7/in.json test-suite/yaml-test-suite-data/74H7/in.yaml test-suite/yaml-test-suite-data/74H7/out.yaml test-suite/yaml-test-suite-data/74H7/test.event test-suite/yaml-test-suite-data/753E/=== test-suite/yaml-test-suite-data/753E/in.json test-suite/yaml-test-suite-data/753E/in.yaml test-suite/yaml-test-suite-data/753E/out.yaml test-suite/yaml-test-suite-data/753E/test.event test-suite/yaml-test-suite-data/7A4E/=== test-suite/yaml-test-suite-data/7A4E/in.json test-suite/yaml-test-suite-data/7A4E/in.yaml test-suite/yaml-test-suite-data/7A4E/out.yaml test-suite/yaml-test-suite-data/7A4E/test.event test-suite/yaml-test-suite-data/7BMT/=== test-suite/yaml-test-suite-data/7BMT/in.json test-suite/yaml-test-suite-data/7BMT/in.yaml test-suite/yaml-test-suite-data/7BMT/out.yaml test-suite/yaml-test-suite-data/7BMT/test.event test-suite/yaml-test-suite-data/7BUB/=== test-suite/yaml-test-suite-data/7BUB/in.json test-suite/yaml-test-suite-data/7BUB/in.yaml test-suite/yaml-test-suite-data/7BUB/out.yaml test-suite/yaml-test-suite-data/7BUB/test.event test-suite/yaml-test-suite-data/7FWL/=== test-suite/yaml-test-suite-data/7FWL/in.json test-suite/yaml-test-suite-data/7FWL/in.yaml test-suite/yaml-test-suite-data/7FWL/out.yaml test-suite/yaml-test-suite-data/7FWL/test.event test-suite/yaml-test-suite-data/7LBH/=== test-suite/yaml-test-suite-data/7LBH/error test-suite/yaml-test-suite-data/7LBH/in.yaml test-suite/yaml-test-suite-data/7LBH/test.event test-suite/yaml-test-suite-data/7MNF/=== test-suite/yaml-test-suite-data/7MNF/error test-suite/yaml-test-suite-data/7MNF/in.yaml test-suite/yaml-test-suite-data/7MNF/test.event test-suite/yaml-test-suite-data/7T8X/=== test-suite/yaml-test-suite-data/7T8X/in.json test-suite/yaml-test-suite-data/7T8X/in.yaml test-suite/yaml-test-suite-data/7T8X/out.yaml test-suite/yaml-test-suite-data/7T8X/test.event test-suite/yaml-test-suite-data/7TMG/=== test-suite/yaml-test-suite-data/7TMG/in.json test-suite/yaml-test-suite-data/7TMG/in.yaml test-suite/yaml-test-suite-data/7TMG/out.yaml test-suite/yaml-test-suite-data/7TMG/test.event test-suite/yaml-test-suite-data/7W2P/=== test-suite/yaml-test-suite-data/7W2P/in.json test-suite/yaml-test-suite-data/7W2P/in.yaml test-suite/yaml-test-suite-data/7W2P/out.yaml test-suite/yaml-test-suite-data/7W2P/test.event test-suite/yaml-test-suite-data/7Z25/=== test-suite/yaml-test-suite-data/7Z25/in.json test-suite/yaml-test-suite-data/7Z25/in.yaml test-suite/yaml-test-suite-data/7Z25/out.yaml test-suite/yaml-test-suite-data/7Z25/test.event test-suite/yaml-test-suite-data/7ZZ5/=== test-suite/yaml-test-suite-data/7ZZ5/in.json test-suite/yaml-test-suite-data/7ZZ5/in.yaml test-suite/yaml-test-suite-data/7ZZ5/out.yaml test-suite/yaml-test-suite-data/7ZZ5/test.event test-suite/yaml-test-suite-data/82AN/=== test-suite/yaml-test-suite-data/82AN/in.json test-suite/yaml-test-suite-data/82AN/in.yaml test-suite/yaml-test-suite-data/82AN/out.yaml test-suite/yaml-test-suite-data/82AN/test.event test-suite/yaml-test-suite-data/87E4/=== test-suite/yaml-test-suite-data/87E4/in.json test-suite/yaml-test-suite-data/87E4/in.yaml test-suite/yaml-test-suite-data/87E4/out.yaml test-suite/yaml-test-suite-data/87E4/test.event test-suite/yaml-test-suite-data/8CWC/=== test-suite/yaml-test-suite-data/8CWC/in.json test-suite/yaml-test-suite-data/8CWC/in.yaml test-suite/yaml-test-suite-data/8CWC/out.yaml test-suite/yaml-test-suite-data/8CWC/test.event test-suite/yaml-test-suite-data/8G76/=== test-suite/yaml-test-suite-data/8G76/in.json test-suite/yaml-test-suite-data/8G76/in.yaml test-suite/yaml-test-suite-data/8G76/out.yaml test-suite/yaml-test-suite-data/8G76/test.event test-suite/yaml-test-suite-data/8KB6/=== test-suite/yaml-test-suite-data/8KB6/in.json test-suite/yaml-test-suite-data/8KB6/in.yaml test-suite/yaml-test-suite-data/8KB6/out.yaml test-suite/yaml-test-suite-data/8KB6/test.event test-suite/yaml-test-suite-data/8MK2/=== test-suite/yaml-test-suite-data/8MK2/in.json test-suite/yaml-test-suite-data/8MK2/in.yaml test-suite/yaml-test-suite-data/8MK2/test.event test-suite/yaml-test-suite-data/8QBE/=== test-suite/yaml-test-suite-data/8QBE/in.json test-suite/yaml-test-suite-data/8QBE/in.yaml test-suite/yaml-test-suite-data/8QBE/out.yaml test-suite/yaml-test-suite-data/8QBE/test.event test-suite/yaml-test-suite-data/8UDB/=== test-suite/yaml-test-suite-data/8UDB/in.json test-suite/yaml-test-suite-data/8UDB/in.yaml test-suite/yaml-test-suite-data/8UDB/out.yaml test-suite/yaml-test-suite-data/8UDB/test.event test-suite/yaml-test-suite-data/8XDJ/=== test-suite/yaml-test-suite-data/8XDJ/error test-suite/yaml-test-suite-data/8XDJ/in.yaml test-suite/yaml-test-suite-data/8XDJ/test.event test-suite/yaml-test-suite-data/8XYN/=== test-suite/yaml-test-suite-data/8XYN/in.json test-suite/yaml-test-suite-data/8XYN/in.yaml test-suite/yaml-test-suite-data/8XYN/out.yaml test-suite/yaml-test-suite-data/8XYN/test.event test-suite/yaml-test-suite-data/93JH/=== test-suite/yaml-test-suite-data/93JH/in.json test-suite/yaml-test-suite-data/93JH/in.yaml test-suite/yaml-test-suite-data/93JH/out.yaml test-suite/yaml-test-suite-data/93JH/test.event test-suite/yaml-test-suite-data/93WF/=== test-suite/yaml-test-suite-data/93WF/in.json test-suite/yaml-test-suite-data/93WF/in.yaml test-suite/yaml-test-suite-data/93WF/out.yaml test-suite/yaml-test-suite-data/93WF/test.event test-suite/yaml-test-suite-data/96L6/=== test-suite/yaml-test-suite-data/96L6/in.json test-suite/yaml-test-suite-data/96L6/in.yaml test-suite/yaml-test-suite-data/96L6/out.yaml test-suite/yaml-test-suite-data/96L6/test.event test-suite/yaml-test-suite-data/96NN/00/=== test-suite/yaml-test-suite-data/96NN/00/in.json test-suite/yaml-test-suite-data/96NN/00/in.yaml test-suite/yaml-test-suite-data/96NN/00/out.yaml test-suite/yaml-test-suite-data/96NN/00/test.event test-suite/yaml-test-suite-data/96NN/01/=== test-suite/yaml-test-suite-data/96NN/01/in.json test-suite/yaml-test-suite-data/96NN/01/in.yaml test-suite/yaml-test-suite-data/96NN/01/out.yaml test-suite/yaml-test-suite-data/96NN/01/test.event test-suite/yaml-test-suite-data/98YD/=== test-suite/yaml-test-suite-data/98YD/in.json test-suite/yaml-test-suite-data/98YD/in.yaml test-suite/yaml-test-suite-data/98YD/out.yaml test-suite/yaml-test-suite-data/98YD/test.event test-suite/yaml-test-suite-data/9BXH/=== test-suite/yaml-test-suite-data/9BXH/in.json test-suite/yaml-test-suite-data/9BXH/in.yaml test-suite/yaml-test-suite-data/9BXH/out.yaml test-suite/yaml-test-suite-data/9BXH/test.event test-suite/yaml-test-suite-data/9C9N/=== test-suite/yaml-test-suite-data/9C9N/error test-suite/yaml-test-suite-data/9C9N/in.yaml test-suite/yaml-test-suite-data/9C9N/test.event test-suite/yaml-test-suite-data/9CWY/=== test-suite/yaml-test-suite-data/9CWY/error test-suite/yaml-test-suite-data/9CWY/in.yaml test-suite/yaml-test-suite-data/9CWY/test.event test-suite/yaml-test-suite-data/9DXL/=== test-suite/yaml-test-suite-data/9DXL/emit.yaml test-suite/yaml-test-suite-data/9DXL/in.json test-suite/yaml-test-suite-data/9DXL/in.yaml test-suite/yaml-test-suite-data/9DXL/test.event test-suite/yaml-test-suite-data/9FMG/=== test-suite/yaml-test-suite-data/9FMG/in.json test-suite/yaml-test-suite-data/9FMG/in.yaml test-suite/yaml-test-suite-data/9FMG/test.event test-suite/yaml-test-suite-data/9HCY/=== test-suite/yaml-test-suite-data/9HCY/error test-suite/yaml-test-suite-data/9HCY/in.yaml test-suite/yaml-test-suite-data/9HCY/test.event test-suite/yaml-test-suite-data/9J7A/=== test-suite/yaml-test-suite-data/9J7A/in.json test-suite/yaml-test-suite-data/9J7A/in.yaml test-suite/yaml-test-suite-data/9J7A/test.event test-suite/yaml-test-suite-data/9JBA/=== test-suite/yaml-test-suite-data/9JBA/error test-suite/yaml-test-suite-data/9JBA/in.yaml test-suite/yaml-test-suite-data/9JBA/test.event test-suite/yaml-test-suite-data/9KAX/=== test-suite/yaml-test-suite-data/9KAX/in.json test-suite/yaml-test-suite-data/9KAX/in.yaml test-suite/yaml-test-suite-data/9KAX/out.yaml test-suite/yaml-test-suite-data/9KAX/test.event test-suite/yaml-test-suite-data/9KBC/=== test-suite/yaml-test-suite-data/9KBC/error test-suite/yaml-test-suite-data/9KBC/in.yaml test-suite/yaml-test-suite-data/9KBC/test.event test-suite/yaml-test-suite-data/9MAG/=== test-suite/yaml-test-suite-data/9MAG/error test-suite/yaml-test-suite-data/9MAG/in.yaml test-suite/yaml-test-suite-data/9MAG/test.event test-suite/yaml-test-suite-data/9MMA/=== test-suite/yaml-test-suite-data/9MMA/error test-suite/yaml-test-suite-data/9MMA/in.yaml test-suite/yaml-test-suite-data/9MMA/test.event test-suite/yaml-test-suite-data/9MMW/=== test-suite/yaml-test-suite-data/9MMW/in.yaml test-suite/yaml-test-suite-data/9MMW/out.yaml test-suite/yaml-test-suite-data/9MMW/test.event test-suite/yaml-test-suite-data/9MQT/00/=== test-suite/yaml-test-suite-data/9MQT/00/emit.yaml test-suite/yaml-test-suite-data/9MQT/00/in.json test-suite/yaml-test-suite-data/9MQT/00/in.yaml test-suite/yaml-test-suite-data/9MQT/00/out.yaml test-suite/yaml-test-suite-data/9MQT/00/test.event test-suite/yaml-test-suite-data/9MQT/01/=== test-suite/yaml-test-suite-data/9MQT/01/error test-suite/yaml-test-suite-data/9MQT/01/in.json test-suite/yaml-test-suite-data/9MQT/01/in.yaml test-suite/yaml-test-suite-data/9MQT/01/test.event test-suite/yaml-test-suite-data/9SA2/=== test-suite/yaml-test-suite-data/9SA2/in.json test-suite/yaml-test-suite-data/9SA2/in.yaml test-suite/yaml-test-suite-data/9SA2/out.yaml test-suite/yaml-test-suite-data/9SA2/test.event test-suite/yaml-test-suite-data/9SHH/=== test-suite/yaml-test-suite-data/9SHH/in.json test-suite/yaml-test-suite-data/9SHH/in.yaml test-suite/yaml-test-suite-data/9SHH/test.event test-suite/yaml-test-suite-data/9TFX/=== test-suite/yaml-test-suite-data/9TFX/emit.yaml test-suite/yaml-test-suite-data/9TFX/in.json test-suite/yaml-test-suite-data/9TFX/in.yaml test-suite/yaml-test-suite-data/9TFX/out.yaml test-suite/yaml-test-suite-data/9TFX/test.event test-suite/yaml-test-suite-data/9U5K/=== test-suite/yaml-test-suite-data/9U5K/in.json test-suite/yaml-test-suite-data/9U5K/in.yaml test-suite/yaml-test-suite-data/9U5K/out.yaml test-suite/yaml-test-suite-data/9U5K/test.event test-suite/yaml-test-suite-data/9WXW/=== test-suite/yaml-test-suite-data/9WXW/in.json test-suite/yaml-test-suite-data/9WXW/in.yaml test-suite/yaml-test-suite-data/9WXW/out.yaml test-suite/yaml-test-suite-data/9WXW/test.event test-suite/yaml-test-suite-data/9YRD/=== test-suite/yaml-test-suite-data/9YRD/in.json test-suite/yaml-test-suite-data/9YRD/in.yaml test-suite/yaml-test-suite-data/9YRD/out.yaml test-suite/yaml-test-suite-data/9YRD/test.event test-suite/yaml-test-suite-data/A2M4/=== test-suite/yaml-test-suite-data/A2M4/in.json test-suite/yaml-test-suite-data/A2M4/in.yaml test-suite/yaml-test-suite-data/A2M4/out.yaml test-suite/yaml-test-suite-data/A2M4/test.event test-suite/yaml-test-suite-data/A6F9/=== test-suite/yaml-test-suite-data/A6F9/in.json test-suite/yaml-test-suite-data/A6F9/in.yaml test-suite/yaml-test-suite-data/A6F9/out.yaml test-suite/yaml-test-suite-data/A6F9/test.event test-suite/yaml-test-suite-data/A984/=== test-suite/yaml-test-suite-data/A984/in.json test-suite/yaml-test-suite-data/A984/in.yaml test-suite/yaml-test-suite-data/A984/out.yaml test-suite/yaml-test-suite-data/A984/test.event test-suite/yaml-test-suite-data/AB8U/=== test-suite/yaml-test-suite-data/AB8U/in.json test-suite/yaml-test-suite-data/AB8U/in.yaml test-suite/yaml-test-suite-data/AB8U/out.yaml test-suite/yaml-test-suite-data/AB8U/test.event test-suite/yaml-test-suite-data/AVM7/=== test-suite/yaml-test-suite-data/AVM7/in.json test-suite/yaml-test-suite-data/AVM7/in.yaml test-suite/yaml-test-suite-data/AVM7/test.event test-suite/yaml-test-suite-data/AZ63/=== test-suite/yaml-test-suite-data/AZ63/in.json test-suite/yaml-test-suite-data/AZ63/in.yaml test-suite/yaml-test-suite-data/AZ63/test.event test-suite/yaml-test-suite-data/AZW3/=== test-suite/yaml-test-suite-data/AZW3/in.json test-suite/yaml-test-suite-data/AZW3/in.yaml test-suite/yaml-test-suite-data/AZW3/test.event test-suite/yaml-test-suite-data/B3HG/=== test-suite/yaml-test-suite-data/B3HG/emit.yaml test-suite/yaml-test-suite-data/B3HG/in.json test-suite/yaml-test-suite-data/B3HG/in.yaml test-suite/yaml-test-suite-data/B3HG/out.yaml test-suite/yaml-test-suite-data/B3HG/test.event test-suite/yaml-test-suite-data/B63P/=== test-suite/yaml-test-suite-data/B63P/error test-suite/yaml-test-suite-data/B63P/in.yaml test-suite/yaml-test-suite-data/B63P/test.event test-suite/yaml-test-suite-data/BD7L/=== test-suite/yaml-test-suite-data/BD7L/error test-suite/yaml-test-suite-data/BD7L/in.yaml test-suite/yaml-test-suite-data/BD7L/test.event test-suite/yaml-test-suite-data/BEC7/=== test-suite/yaml-test-suite-data/BEC7/in.json test-suite/yaml-test-suite-data/BEC7/in.yaml test-suite/yaml-test-suite-data/BEC7/out.yaml test-suite/yaml-test-suite-data/BEC7/test.event test-suite/yaml-test-suite-data/BF9H/=== test-suite/yaml-test-suite-data/BF9H/error test-suite/yaml-test-suite-data/BF9H/in.yaml test-suite/yaml-test-suite-data/BF9H/test.event test-suite/yaml-test-suite-data/BS4K/=== test-suite/yaml-test-suite-data/BS4K/error test-suite/yaml-test-suite-data/BS4K/in.yaml test-suite/yaml-test-suite-data/BS4K/test.event test-suite/yaml-test-suite-data/BU8L/=== test-suite/yaml-test-suite-data/BU8L/in.json test-suite/yaml-test-suite-data/BU8L/in.yaml test-suite/yaml-test-suite-data/BU8L/out.yaml test-suite/yaml-test-suite-data/BU8L/test.event test-suite/yaml-test-suite-data/C2DT/=== test-suite/yaml-test-suite-data/C2DT/in.json test-suite/yaml-test-suite-data/C2DT/in.yaml test-suite/yaml-test-suite-data/C2DT/out.yaml test-suite/yaml-test-suite-data/C2DT/test.event test-suite/yaml-test-suite-data/C2SP/=== test-suite/yaml-test-suite-data/C2SP/error test-suite/yaml-test-suite-data/C2SP/in.yaml test-suite/yaml-test-suite-data/C2SP/test.event test-suite/yaml-test-suite-data/C4HZ/=== test-suite/yaml-test-suite-data/C4HZ/in.json test-suite/yaml-test-suite-data/C4HZ/in.yaml test-suite/yaml-test-suite-data/C4HZ/out.yaml test-suite/yaml-test-suite-data/C4HZ/test.event test-suite/yaml-test-suite-data/CC74/=== test-suite/yaml-test-suite-data/CC74/in.json test-suite/yaml-test-suite-data/CC74/in.yaml test-suite/yaml-test-suite-data/CC74/out.yaml test-suite/yaml-test-suite-data/CC74/test.event test-suite/yaml-test-suite-data/CFD4/=== test-suite/yaml-test-suite-data/CFD4/in.yaml test-suite/yaml-test-suite-data/CFD4/out.yaml test-suite/yaml-test-suite-data/CFD4/test.event test-suite/yaml-test-suite-data/CML9/=== test-suite/yaml-test-suite-data/CML9/error test-suite/yaml-test-suite-data/CML9/in.yaml test-suite/yaml-test-suite-data/CML9/test.event test-suite/yaml-test-suite-data/CN3R/=== test-suite/yaml-test-suite-data/CN3R/in.json test-suite/yaml-test-suite-data/CN3R/in.yaml test-suite/yaml-test-suite-data/CN3R/out.yaml test-suite/yaml-test-suite-data/CN3R/test.event test-suite/yaml-test-suite-data/CPZ3/=== test-suite/yaml-test-suite-data/CPZ3/in.json test-suite/yaml-test-suite-data/CPZ3/in.yaml test-suite/yaml-test-suite-data/CPZ3/out.yaml test-suite/yaml-test-suite-data/CPZ3/test.event test-suite/yaml-test-suite-data/CQ3W/=== test-suite/yaml-test-suite-data/CQ3W/error test-suite/yaml-test-suite-data/CQ3W/in.yaml test-suite/yaml-test-suite-data/CQ3W/test.event test-suite/yaml-test-suite-data/CT4Q/=== test-suite/yaml-test-suite-data/CT4Q/in.json test-suite/yaml-test-suite-data/CT4Q/in.yaml test-suite/yaml-test-suite-data/CT4Q/out.yaml test-suite/yaml-test-suite-data/CT4Q/test.event test-suite/yaml-test-suite-data/CTN5/=== test-suite/yaml-test-suite-data/CTN5/error test-suite/yaml-test-suite-data/CTN5/in.yaml test-suite/yaml-test-suite-data/CTN5/test.event test-suite/yaml-test-suite-data/CUP7/=== test-suite/yaml-test-suite-data/CUP7/in.json test-suite/yaml-test-suite-data/CUP7/in.yaml test-suite/yaml-test-suite-data/CUP7/out.yaml test-suite/yaml-test-suite-data/CUP7/test.event test-suite/yaml-test-suite-data/CVW2/=== test-suite/yaml-test-suite-data/CVW2/error test-suite/yaml-test-suite-data/CVW2/in.yaml test-suite/yaml-test-suite-data/CVW2/test.event test-suite/yaml-test-suite-data/CXX2/=== test-suite/yaml-test-suite-data/CXX2/error test-suite/yaml-test-suite-data/CXX2/in.yaml test-suite/yaml-test-suite-data/CXX2/test.event test-suite/yaml-test-suite-data/D49Q/=== test-suite/yaml-test-suite-data/D49Q/error test-suite/yaml-test-suite-data/D49Q/in.yaml test-suite/yaml-test-suite-data/D49Q/test.event test-suite/yaml-test-suite-data/D83L/=== test-suite/yaml-test-suite-data/D83L/in.json test-suite/yaml-test-suite-data/D83L/in.yaml test-suite/yaml-test-suite-data/D83L/out.yaml test-suite/yaml-test-suite-data/D83L/test.event test-suite/yaml-test-suite-data/D88J/=== test-suite/yaml-test-suite-data/D88J/in.json test-suite/yaml-test-suite-data/D88J/in.yaml test-suite/yaml-test-suite-data/D88J/out.yaml test-suite/yaml-test-suite-data/D88J/test.event test-suite/yaml-test-suite-data/D9TU/=== test-suite/yaml-test-suite-data/D9TU/in.json test-suite/yaml-test-suite-data/D9TU/in.yaml test-suite/yaml-test-suite-data/D9TU/test.event test-suite/yaml-test-suite-data/DBG4/=== test-suite/yaml-test-suite-data/DBG4/in.json test-suite/yaml-test-suite-data/DBG4/in.yaml test-suite/yaml-test-suite-data/DBG4/out.yaml test-suite/yaml-test-suite-data/DBG4/test.event test-suite/yaml-test-suite-data/DC7X/=== test-suite/yaml-test-suite-data/DC7X/in.json test-suite/yaml-test-suite-data/DC7X/in.yaml test-suite/yaml-test-suite-data/DC7X/out.yaml test-suite/yaml-test-suite-data/DC7X/test.event test-suite/yaml-test-suite-data/DE56/00/=== test-suite/yaml-test-suite-data/DE56/00/in.json test-suite/yaml-test-suite-data/DE56/00/in.yaml test-suite/yaml-test-suite-data/DE56/00/out.yaml test-suite/yaml-test-suite-data/DE56/00/test.event test-suite/yaml-test-suite-data/DE56/01/=== test-suite/yaml-test-suite-data/DE56/01/in.json test-suite/yaml-test-suite-data/DE56/01/in.yaml test-suite/yaml-test-suite-data/DE56/01/out.yaml test-suite/yaml-test-suite-data/DE56/01/test.event test-suite/yaml-test-suite-data/DE56/02/=== test-suite/yaml-test-suite-data/DE56/02/in.json test-suite/yaml-test-suite-data/DE56/02/in.yaml test-suite/yaml-test-suite-data/DE56/02/out.yaml test-suite/yaml-test-suite-data/DE56/02/test.event test-suite/yaml-test-suite-data/DE56/03/=== test-suite/yaml-test-suite-data/DE56/03/in.json test-suite/yaml-test-suite-data/DE56/03/in.yaml test-suite/yaml-test-suite-data/DE56/03/out.yaml test-suite/yaml-test-suite-data/DE56/03/test.event test-suite/yaml-test-suite-data/DE56/04/=== test-suite/yaml-test-suite-data/DE56/04/in.json test-suite/yaml-test-suite-data/DE56/04/in.yaml test-suite/yaml-test-suite-data/DE56/04/out.yaml test-suite/yaml-test-suite-data/DE56/04/test.event test-suite/yaml-test-suite-data/DE56/05/=== test-suite/yaml-test-suite-data/DE56/05/in.json test-suite/yaml-test-suite-data/DE56/05/in.yaml test-suite/yaml-test-suite-data/DE56/05/out.yaml test-suite/yaml-test-suite-data/DE56/05/test.event test-suite/yaml-test-suite-data/DFF7/=== test-suite/yaml-test-suite-data/DFF7/in.yaml test-suite/yaml-test-suite-data/DFF7/out.yaml test-suite/yaml-test-suite-data/DFF7/test.event test-suite/yaml-test-suite-data/DHP8/=== test-suite/yaml-test-suite-data/DHP8/in.json test-suite/yaml-test-suite-data/DHP8/in.yaml test-suite/yaml-test-suite-data/DHP8/out.yaml test-suite/yaml-test-suite-data/DHP8/test.event test-suite/yaml-test-suite-data/DK3J/=== test-suite/yaml-test-suite-data/DK3J/in.json test-suite/yaml-test-suite-data/DK3J/in.yaml test-suite/yaml-test-suite-data/DK3J/out.yaml test-suite/yaml-test-suite-data/DK3J/test.event test-suite/yaml-test-suite-data/DK4H/=== test-suite/yaml-test-suite-data/DK4H/error test-suite/yaml-test-suite-data/DK4H/in.yaml test-suite/yaml-test-suite-data/DK4H/test.event test-suite/yaml-test-suite-data/DK95/00/=== test-suite/yaml-test-suite-data/DK95/00/emit.yaml test-suite/yaml-test-suite-data/DK95/00/in.json test-suite/yaml-test-suite-data/DK95/00/in.yaml test-suite/yaml-test-suite-data/DK95/00/test.event test-suite/yaml-test-suite-data/DK95/01/=== test-suite/yaml-test-suite-data/DK95/01/emit.yaml test-suite/yaml-test-suite-data/DK95/01/error test-suite/yaml-test-suite-data/DK95/01/in.json test-suite/yaml-test-suite-data/DK95/01/in.yaml test-suite/yaml-test-suite-data/DK95/01/test.event test-suite/yaml-test-suite-data/DK95/02/=== test-suite/yaml-test-suite-data/DK95/02/emit.yaml test-suite/yaml-test-suite-data/DK95/02/in.json test-suite/yaml-test-suite-data/DK95/02/in.yaml test-suite/yaml-test-suite-data/DK95/02/test.event test-suite/yaml-test-suite-data/DK95/03/=== test-suite/yaml-test-suite-data/DK95/03/emit.yaml test-suite/yaml-test-suite-data/DK95/03/in.json test-suite/yaml-test-suite-data/DK95/03/in.yaml test-suite/yaml-test-suite-data/DK95/03/test.event test-suite/yaml-test-suite-data/DK95/04/=== test-suite/yaml-test-suite-data/DK95/04/emit.yaml test-suite/yaml-test-suite-data/DK95/04/in.json test-suite/yaml-test-suite-data/DK95/04/in.yaml test-suite/yaml-test-suite-data/DK95/04/test.event test-suite/yaml-test-suite-data/DK95/05/=== test-suite/yaml-test-suite-data/DK95/05/emit.yaml test-suite/yaml-test-suite-data/DK95/05/in.json test-suite/yaml-test-suite-data/DK95/05/in.yaml test-suite/yaml-test-suite-data/DK95/05/test.event test-suite/yaml-test-suite-data/DK95/06/=== test-suite/yaml-test-suite-data/DK95/06/emit.yaml test-suite/yaml-test-suite-data/DK95/06/error test-suite/yaml-test-suite-data/DK95/06/in.json test-suite/yaml-test-suite-data/DK95/06/in.yaml test-suite/yaml-test-suite-data/DK95/06/test.event test-suite/yaml-test-suite-data/DK95/07/=== test-suite/yaml-test-suite-data/DK95/07/emit.yaml test-suite/yaml-test-suite-data/DK95/07/in.json test-suite/yaml-test-suite-data/DK95/07/in.yaml test-suite/yaml-test-suite-data/DK95/07/test.event test-suite/yaml-test-suite-data/DK95/08/=== test-suite/yaml-test-suite-data/DK95/08/emit.yaml test-suite/yaml-test-suite-data/DK95/08/in.json test-suite/yaml-test-suite-data/DK95/08/in.yaml test-suite/yaml-test-suite-data/DK95/08/test.event test-suite/yaml-test-suite-data/DMG6/=== test-suite/yaml-test-suite-data/DMG6/error test-suite/yaml-test-suite-data/DMG6/in.yaml test-suite/yaml-test-suite-data/DMG6/test.event test-suite/yaml-test-suite-data/DWX9/=== test-suite/yaml-test-suite-data/DWX9/emit.yaml test-suite/yaml-test-suite-data/DWX9/in.json test-suite/yaml-test-suite-data/DWX9/in.yaml test-suite/yaml-test-suite-data/DWX9/out.yaml test-suite/yaml-test-suite-data/DWX9/test.event test-suite/yaml-test-suite-data/E76Z/=== test-suite/yaml-test-suite-data/E76Z/in.json test-suite/yaml-test-suite-data/E76Z/in.yaml test-suite/yaml-test-suite-data/E76Z/out.yaml test-suite/yaml-test-suite-data/E76Z/test.event test-suite/yaml-test-suite-data/EB22/=== test-suite/yaml-test-suite-data/EB22/error test-suite/yaml-test-suite-data/EB22/in.yaml test-suite/yaml-test-suite-data/EB22/test.event test-suite/yaml-test-suite-data/EHF6/=== test-suite/yaml-test-suite-data/EHF6/in.json test-suite/yaml-test-suite-data/EHF6/in.yaml test-suite/yaml-test-suite-data/EHF6/out.yaml test-suite/yaml-test-suite-data/EHF6/test.event test-suite/yaml-test-suite-data/EW3V/=== test-suite/yaml-test-suite-data/EW3V/error test-suite/yaml-test-suite-data/EW3V/in.yaml test-suite/yaml-test-suite-data/EW3V/test.event test-suite/yaml-test-suite-data/EX5H/=== test-suite/yaml-test-suite-data/EX5H/emit.yaml test-suite/yaml-test-suite-data/EX5H/in.json test-suite/yaml-test-suite-data/EX5H/in.yaml test-suite/yaml-test-suite-data/EX5H/out.yaml test-suite/yaml-test-suite-data/EX5H/test.event test-suite/yaml-test-suite-data/EXG3/=== test-suite/yaml-test-suite-data/EXG3/emit.yaml test-suite/yaml-test-suite-data/EXG3/in.json test-suite/yaml-test-suite-data/EXG3/in.yaml test-suite/yaml-test-suite-data/EXG3/out.yaml test-suite/yaml-test-suite-data/EXG3/test.event test-suite/yaml-test-suite-data/F2C7/=== test-suite/yaml-test-suite-data/F2C7/in.json test-suite/yaml-test-suite-data/F2C7/in.yaml test-suite/yaml-test-suite-data/F2C7/out.yaml test-suite/yaml-test-suite-data/F2C7/test.event test-suite/yaml-test-suite-data/F3CP/=== test-suite/yaml-test-suite-data/F3CP/in.json test-suite/yaml-test-suite-data/F3CP/in.yaml test-suite/yaml-test-suite-data/F3CP/out.yaml test-suite/yaml-test-suite-data/F3CP/test.event test-suite/yaml-test-suite-data/F6MC/=== test-suite/yaml-test-suite-data/F6MC/emit.yaml test-suite/yaml-test-suite-data/F6MC/in.json test-suite/yaml-test-suite-data/F6MC/in.yaml test-suite/yaml-test-suite-data/F6MC/test.event test-suite/yaml-test-suite-data/F8F9/=== test-suite/yaml-test-suite-data/F8F9/in.json test-suite/yaml-test-suite-data/F8F9/in.yaml test-suite/yaml-test-suite-data/F8F9/out.yaml test-suite/yaml-test-suite-data/F8F9/test.event test-suite/yaml-test-suite-data/FBC9/=== test-suite/yaml-test-suite-data/FBC9/in.json test-suite/yaml-test-suite-data/FBC9/in.yaml test-suite/yaml-test-suite-data/FBC9/out.yaml test-suite/yaml-test-suite-data/FBC9/test.event test-suite/yaml-test-suite-data/FH7J/=== test-suite/yaml-test-suite-data/FH7J/in.yaml test-suite/yaml-test-suite-data/FH7J/out.yaml test-suite/yaml-test-suite-data/FH7J/test.event test-suite/yaml-test-suite-data/FP8R/=== test-suite/yaml-test-suite-data/FP8R/in.json test-suite/yaml-test-suite-data/FP8R/in.yaml test-suite/yaml-test-suite-data/FP8R/out.yaml test-suite/yaml-test-suite-data/FP8R/test.event test-suite/yaml-test-suite-data/FQ7F/=== test-suite/yaml-test-suite-data/FQ7F/in.json test-suite/yaml-test-suite-data/FQ7F/in.yaml test-suite/yaml-test-suite-data/FQ7F/lex.token test-suite/yaml-test-suite-data/FQ7F/test.event test-suite/yaml-test-suite-data/FRK4/=== test-suite/yaml-test-suite-data/FRK4/in.yaml test-suite/yaml-test-suite-data/FRK4/test.event test-suite/yaml-test-suite-data/FTA2/=== test-suite/yaml-test-suite-data/FTA2/in.json test-suite/yaml-test-suite-data/FTA2/in.yaml test-suite/yaml-test-suite-data/FTA2/out.yaml test-suite/yaml-test-suite-data/FTA2/test.event test-suite/yaml-test-suite-data/FUP4/=== test-suite/yaml-test-suite-data/FUP4/in.json test-suite/yaml-test-suite-data/FUP4/in.yaml test-suite/yaml-test-suite-data/FUP4/out.yaml test-suite/yaml-test-suite-data/FUP4/test.event test-suite/yaml-test-suite-data/G4RS/=== test-suite/yaml-test-suite-data/G4RS/in.json test-suite/yaml-test-suite-data/G4RS/in.yaml test-suite/yaml-test-suite-data/G4RS/out.yaml test-suite/yaml-test-suite-data/G4RS/test.event test-suite/yaml-test-suite-data/G5U8/=== test-suite/yaml-test-suite-data/G5U8/error test-suite/yaml-test-suite-data/G5U8/in.yaml test-suite/yaml-test-suite-data/G5U8/test.event test-suite/yaml-test-suite-data/G7JE/=== test-suite/yaml-test-suite-data/G7JE/error test-suite/yaml-test-suite-data/G7JE/in.yaml test-suite/yaml-test-suite-data/G7JE/test.event test-suite/yaml-test-suite-data/G992/=== test-suite/yaml-test-suite-data/G992/in.json test-suite/yaml-test-suite-data/G992/in.yaml test-suite/yaml-test-suite-data/G992/out.yaml test-suite/yaml-test-suite-data/G992/test.event test-suite/yaml-test-suite-data/G9HC/=== test-suite/yaml-test-suite-data/G9HC/error test-suite/yaml-test-suite-data/G9HC/in.yaml test-suite/yaml-test-suite-data/G9HC/test.event test-suite/yaml-test-suite-data/GDY7/=== test-suite/yaml-test-suite-data/GDY7/error test-suite/yaml-test-suite-data/GDY7/in.yaml test-suite/yaml-test-suite-data/GDY7/test.event test-suite/yaml-test-suite-data/GH63/=== test-suite/yaml-test-suite-data/GH63/in.json test-suite/yaml-test-suite-data/GH63/in.yaml test-suite/yaml-test-suite-data/GH63/out.yaml test-suite/yaml-test-suite-data/GH63/test.event test-suite/yaml-test-suite-data/GT5M/=== test-suite/yaml-test-suite-data/GT5M/error test-suite/yaml-test-suite-data/GT5M/in.yaml test-suite/yaml-test-suite-data/GT5M/test.event test-suite/yaml-test-suite-data/H2RW/=== test-suite/yaml-test-suite-data/H2RW/emit.yaml test-suite/yaml-test-suite-data/H2RW/in.json test-suite/yaml-test-suite-data/H2RW/in.yaml test-suite/yaml-test-suite-data/H2RW/out.yaml test-suite/yaml-test-suite-data/H2RW/test.event test-suite/yaml-test-suite-data/H3Z8/=== test-suite/yaml-test-suite-data/H3Z8/in.json test-suite/yaml-test-suite-data/H3Z8/in.yaml test-suite/yaml-test-suite-data/H3Z8/out.yaml test-suite/yaml-test-suite-data/H3Z8/test.event test-suite/yaml-test-suite-data/H7J7/=== test-suite/yaml-test-suite-data/H7J7/error test-suite/yaml-test-suite-data/H7J7/in.yaml test-suite/yaml-test-suite-data/H7J7/test.event test-suite/yaml-test-suite-data/H7TQ/=== test-suite/yaml-test-suite-data/H7TQ/error test-suite/yaml-test-suite-data/H7TQ/in.yaml test-suite/yaml-test-suite-data/H7TQ/test.event test-suite/yaml-test-suite-data/HM87/00/=== test-suite/yaml-test-suite-data/HM87/00/in.json test-suite/yaml-test-suite-data/HM87/00/in.yaml test-suite/yaml-test-suite-data/HM87/00/out.yaml test-suite/yaml-test-suite-data/HM87/00/test.event test-suite/yaml-test-suite-data/HM87/01/=== test-suite/yaml-test-suite-data/HM87/01/in.json test-suite/yaml-test-suite-data/HM87/01/in.yaml test-suite/yaml-test-suite-data/HM87/01/out.yaml test-suite/yaml-test-suite-data/HM87/01/test.event test-suite/yaml-test-suite-data/HMK4/=== test-suite/yaml-test-suite-data/HMK4/in.json test-suite/yaml-test-suite-data/HMK4/in.yaml test-suite/yaml-test-suite-data/HMK4/out.yaml test-suite/yaml-test-suite-data/HMK4/test.event test-suite/yaml-test-suite-data/HMQ5/=== test-suite/yaml-test-suite-data/HMQ5/in.json test-suite/yaml-test-suite-data/HMQ5/in.yaml test-suite/yaml-test-suite-data/HMQ5/out.yaml test-suite/yaml-test-suite-data/HMQ5/test.event test-suite/yaml-test-suite-data/HRE5/=== test-suite/yaml-test-suite-data/HRE5/error test-suite/yaml-test-suite-data/HRE5/in.yaml test-suite/yaml-test-suite-data/HRE5/test.event test-suite/yaml-test-suite-data/HS5T/=== test-suite/yaml-test-suite-data/HS5T/in.json test-suite/yaml-test-suite-data/HS5T/in.yaml test-suite/yaml-test-suite-data/HS5T/out.yaml test-suite/yaml-test-suite-data/HS5T/test.event test-suite/yaml-test-suite-data/HU3P/=== test-suite/yaml-test-suite-data/HU3P/error test-suite/yaml-test-suite-data/HU3P/in.yaml test-suite/yaml-test-suite-data/HU3P/test.event test-suite/yaml-test-suite-data/HWV9/=== test-suite/yaml-test-suite-data/HWV9/in.json test-suite/yaml-test-suite-data/HWV9/in.yaml test-suite/yaml-test-suite-data/HWV9/out.yaml test-suite/yaml-test-suite-data/HWV9/test.event test-suite/yaml-test-suite-data/J3BT/=== test-suite/yaml-test-suite-data/J3BT/in.json test-suite/yaml-test-suite-data/J3BT/in.yaml test-suite/yaml-test-suite-data/J3BT/out.yaml test-suite/yaml-test-suite-data/J3BT/test.event test-suite/yaml-test-suite-data/J5UC/=== test-suite/yaml-test-suite-data/J5UC/in.json test-suite/yaml-test-suite-data/J5UC/in.yaml test-suite/yaml-test-suite-data/J5UC/test.event test-suite/yaml-test-suite-data/J7PZ/=== test-suite/yaml-test-suite-data/J7PZ/in.json test-suite/yaml-test-suite-data/J7PZ/in.yaml test-suite/yaml-test-suite-data/J7PZ/out.yaml test-suite/yaml-test-suite-data/J7PZ/test.event test-suite/yaml-test-suite-data/J7VC/=== test-suite/yaml-test-suite-data/J7VC/in.json test-suite/yaml-test-suite-data/J7VC/in.yaml test-suite/yaml-test-suite-data/J7VC/out.yaml test-suite/yaml-test-suite-data/J7VC/test.event test-suite/yaml-test-suite-data/J9HZ/=== test-suite/yaml-test-suite-data/J9HZ/in.json test-suite/yaml-test-suite-data/J9HZ/in.yaml test-suite/yaml-test-suite-data/J9HZ/out.yaml test-suite/yaml-test-suite-data/J9HZ/test.event test-suite/yaml-test-suite-data/JEF9/00/=== test-suite/yaml-test-suite-data/JEF9/00/in.json test-suite/yaml-test-suite-data/JEF9/00/in.yaml test-suite/yaml-test-suite-data/JEF9/00/out.yaml test-suite/yaml-test-suite-data/JEF9/00/test.event test-suite/yaml-test-suite-data/JEF9/01/=== test-suite/yaml-test-suite-data/JEF9/01/in.json test-suite/yaml-test-suite-data/JEF9/01/in.yaml test-suite/yaml-test-suite-data/JEF9/01/out.yaml test-suite/yaml-test-suite-data/JEF9/01/test.event test-suite/yaml-test-suite-data/JEF9/02/=== test-suite/yaml-test-suite-data/JEF9/02/in.json test-suite/yaml-test-suite-data/JEF9/02/in.yaml test-suite/yaml-test-suite-data/JEF9/02/out.yaml test-suite/yaml-test-suite-data/JEF9/02/test.event test-suite/yaml-test-suite-data/JHB9/=== test-suite/yaml-test-suite-data/JHB9/in.json test-suite/yaml-test-suite-data/JHB9/in.yaml test-suite/yaml-test-suite-data/JHB9/out.yaml test-suite/yaml-test-suite-data/JHB9/test.event test-suite/yaml-test-suite-data/JKF3/=== test-suite/yaml-test-suite-data/JKF3/error test-suite/yaml-test-suite-data/JKF3/in.yaml test-suite/yaml-test-suite-data/JKF3/test.event test-suite/yaml-test-suite-data/JQ4R/=== test-suite/yaml-test-suite-data/JQ4R/in.json test-suite/yaml-test-suite-data/JQ4R/in.yaml test-suite/yaml-test-suite-data/JQ4R/out.yaml test-suite/yaml-test-suite-data/JQ4R/test.event test-suite/yaml-test-suite-data/JR7V/=== test-suite/yaml-test-suite-data/JR7V/in.json test-suite/yaml-test-suite-data/JR7V/in.yaml test-suite/yaml-test-suite-data/JR7V/out.yaml test-suite/yaml-test-suite-data/JR7V/test.event test-suite/yaml-test-suite-data/JS2J/=== test-suite/yaml-test-suite-data/JS2J/in.json test-suite/yaml-test-suite-data/JS2J/in.yaml test-suite/yaml-test-suite-data/JS2J/test.event test-suite/yaml-test-suite-data/JTV5/=== test-suite/yaml-test-suite-data/JTV5/in.json test-suite/yaml-test-suite-data/JTV5/in.yaml test-suite/yaml-test-suite-data/JTV5/out.yaml test-suite/yaml-test-suite-data/JTV5/test.event test-suite/yaml-test-suite-data/JY7Z/=== test-suite/yaml-test-suite-data/JY7Z/error test-suite/yaml-test-suite-data/JY7Z/in.yaml test-suite/yaml-test-suite-data/JY7Z/test.event test-suite/yaml-test-suite-data/K3WX/=== test-suite/yaml-test-suite-data/K3WX/in.json test-suite/yaml-test-suite-data/K3WX/in.yaml test-suite/yaml-test-suite-data/K3WX/out.yaml test-suite/yaml-test-suite-data/K3WX/test.event test-suite/yaml-test-suite-data/K4SU/=== test-suite/yaml-test-suite-data/K4SU/in.json test-suite/yaml-test-suite-data/K4SU/in.yaml test-suite/yaml-test-suite-data/K4SU/test.event test-suite/yaml-test-suite-data/K527/=== test-suite/yaml-test-suite-data/K527/in.json test-suite/yaml-test-suite-data/K527/in.yaml test-suite/yaml-test-suite-data/K527/out.yaml test-suite/yaml-test-suite-data/K527/test.event test-suite/yaml-test-suite-data/K54U/=== test-suite/yaml-test-suite-data/K54U/in.json test-suite/yaml-test-suite-data/K54U/in.yaml test-suite/yaml-test-suite-data/K54U/out.yaml test-suite/yaml-test-suite-data/K54U/test.event test-suite/yaml-test-suite-data/K858/=== test-suite/yaml-test-suite-data/K858/in.json test-suite/yaml-test-suite-data/K858/in.yaml test-suite/yaml-test-suite-data/K858/out.yaml test-suite/yaml-test-suite-data/K858/test.event test-suite/yaml-test-suite-data/KH5V/00/=== test-suite/yaml-test-suite-data/KH5V/00/in.json test-suite/yaml-test-suite-data/KH5V/00/in.yaml test-suite/yaml-test-suite-data/KH5V/00/test.event test-suite/yaml-test-suite-data/KH5V/01/=== test-suite/yaml-test-suite-data/KH5V/01/in.json test-suite/yaml-test-suite-data/KH5V/01/in.yaml test-suite/yaml-test-suite-data/KH5V/01/out.yaml test-suite/yaml-test-suite-data/KH5V/01/test.event test-suite/yaml-test-suite-data/KH5V/02/=== test-suite/yaml-test-suite-data/KH5V/02/in.json test-suite/yaml-test-suite-data/KH5V/02/in.yaml test-suite/yaml-test-suite-data/KH5V/02/out.yaml test-suite/yaml-test-suite-data/KH5V/02/test.event test-suite/yaml-test-suite-data/KK5P/=== test-suite/yaml-test-suite-data/KK5P/in.yaml test-suite/yaml-test-suite-data/KK5P/out.yaml test-suite/yaml-test-suite-data/KK5P/test.event test-suite/yaml-test-suite-data/KMK3/=== test-suite/yaml-test-suite-data/KMK3/in.json test-suite/yaml-test-suite-data/KMK3/in.yaml test-suite/yaml-test-suite-data/KMK3/test.event test-suite/yaml-test-suite-data/KS4U/=== test-suite/yaml-test-suite-data/KS4U/error test-suite/yaml-test-suite-data/KS4U/in.yaml test-suite/yaml-test-suite-data/KS4U/test.event test-suite/yaml-test-suite-data/KSS4/=== test-suite/yaml-test-suite-data/KSS4/emit.yaml test-suite/yaml-test-suite-data/KSS4/in.json test-suite/yaml-test-suite-data/KSS4/in.yaml test-suite/yaml-test-suite-data/KSS4/out.yaml test-suite/yaml-test-suite-data/KSS4/test.event test-suite/yaml-test-suite-data/L24T/00/=== test-suite/yaml-test-suite-data/L24T/00/emit.yaml test-suite/yaml-test-suite-data/L24T/00/in.json test-suite/yaml-test-suite-data/L24T/00/in.yaml test-suite/yaml-test-suite-data/L24T/00/test.event test-suite/yaml-test-suite-data/L24T/01/=== test-suite/yaml-test-suite-data/L24T/01/emit.yaml test-suite/yaml-test-suite-data/L24T/01/in.json test-suite/yaml-test-suite-data/L24T/01/in.yaml test-suite/yaml-test-suite-data/L24T/01/test.event test-suite/yaml-test-suite-data/L383/=== test-suite/yaml-test-suite-data/L383/in.json test-suite/yaml-test-suite-data/L383/in.yaml test-suite/yaml-test-suite-data/L383/out.yaml test-suite/yaml-test-suite-data/L383/test.event test-suite/yaml-test-suite-data/L94M/=== test-suite/yaml-test-suite-data/L94M/in.json test-suite/yaml-test-suite-data/L94M/in.yaml test-suite/yaml-test-suite-data/L94M/out.yaml test-suite/yaml-test-suite-data/L94M/test.event test-suite/yaml-test-suite-data/L9U5/=== test-suite/yaml-test-suite-data/L9U5/in.json test-suite/yaml-test-suite-data/L9U5/in.yaml test-suite/yaml-test-suite-data/L9U5/out.yaml test-suite/yaml-test-suite-data/L9U5/test.event test-suite/yaml-test-suite-data/LE5A/=== test-suite/yaml-test-suite-data/LE5A/in.json test-suite/yaml-test-suite-data/LE5A/in.yaml test-suite/yaml-test-suite-data/LE5A/test.event test-suite/yaml-test-suite-data/LHL4/=== test-suite/yaml-test-suite-data/LHL4/error test-suite/yaml-test-suite-data/LHL4/in.yaml test-suite/yaml-test-suite-data/LHL4/test.event test-suite/yaml-test-suite-data/LP6E/=== test-suite/yaml-test-suite-data/LP6E/in.json test-suite/yaml-test-suite-data/LP6E/in.yaml test-suite/yaml-test-suite-data/LP6E/out.yaml test-suite/yaml-test-suite-data/LP6E/test.event test-suite/yaml-test-suite-data/LQZ7/=== test-suite/yaml-test-suite-data/LQZ7/in.json test-suite/yaml-test-suite-data/LQZ7/in.yaml test-suite/yaml-test-suite-data/LQZ7/out.yaml test-suite/yaml-test-suite-data/LQZ7/test.event test-suite/yaml-test-suite-data/LX3P/=== test-suite/yaml-test-suite-data/LX3P/in.yaml test-suite/yaml-test-suite-data/LX3P/out.yaml test-suite/yaml-test-suite-data/LX3P/test.event test-suite/yaml-test-suite-data/M29M/=== test-suite/yaml-test-suite-data/M29M/in.json test-suite/yaml-test-suite-data/M29M/in.yaml test-suite/yaml-test-suite-data/M29M/out.yaml test-suite/yaml-test-suite-data/M29M/test.event test-suite/yaml-test-suite-data/M2N8/00/=== test-suite/yaml-test-suite-data/M2N8/00/in.yaml test-suite/yaml-test-suite-data/M2N8/00/out.yaml test-suite/yaml-test-suite-data/M2N8/00/test.event test-suite/yaml-test-suite-data/M2N8/01/=== test-suite/yaml-test-suite-data/M2N8/01/in.yaml test-suite/yaml-test-suite-data/M2N8/01/out.yaml test-suite/yaml-test-suite-data/M2N8/01/test.event test-suite/yaml-test-suite-data/M5C3/=== test-suite/yaml-test-suite-data/M5C3/in.json test-suite/yaml-test-suite-data/M5C3/in.yaml test-suite/yaml-test-suite-data/M5C3/out.yaml test-suite/yaml-test-suite-data/M5C3/test.event test-suite/yaml-test-suite-data/M5DY/=== test-suite/yaml-test-suite-data/M5DY/in.yaml test-suite/yaml-test-suite-data/M5DY/out.yaml test-suite/yaml-test-suite-data/M5DY/test.event test-suite/yaml-test-suite-data/M6YH/=== test-suite/yaml-test-suite-data/M6YH/in.json test-suite/yaml-test-suite-data/M6YH/in.yaml test-suite/yaml-test-suite-data/M6YH/out.yaml test-suite/yaml-test-suite-data/M6YH/test.event test-suite/yaml-test-suite-data/M7A3/=== test-suite/yaml-test-suite-data/M7A3/emit.yaml test-suite/yaml-test-suite-data/M7A3/in.json test-suite/yaml-test-suite-data/M7A3/in.yaml test-suite/yaml-test-suite-data/M7A3/test.event test-suite/yaml-test-suite-data/M7NX/=== test-suite/yaml-test-suite-data/M7NX/in.json test-suite/yaml-test-suite-data/M7NX/in.yaml test-suite/yaml-test-suite-data/M7NX/out.yaml test-suite/yaml-test-suite-data/M7NX/test.event test-suite/yaml-test-suite-data/M9B4/=== test-suite/yaml-test-suite-data/M9B4/in.json test-suite/yaml-test-suite-data/M9B4/in.yaml test-suite/yaml-test-suite-data/M9B4/out.yaml test-suite/yaml-test-suite-data/M9B4/test.event test-suite/yaml-test-suite-data/MJS9/=== test-suite/yaml-test-suite-data/MJS9/in.json test-suite/yaml-test-suite-data/MJS9/in.yaml test-suite/yaml-test-suite-data/MJS9/out.yaml test-suite/yaml-test-suite-data/MJS9/test.event test-suite/yaml-test-suite-data/MUS6/00/=== test-suite/yaml-test-suite-data/MUS6/00/error test-suite/yaml-test-suite-data/MUS6/00/in.yaml test-suite/yaml-test-suite-data/MUS6/00/test.event test-suite/yaml-test-suite-data/MUS6/01/=== test-suite/yaml-test-suite-data/MUS6/01/error test-suite/yaml-test-suite-data/MUS6/01/in.yaml test-suite/yaml-test-suite-data/MUS6/01/test.event test-suite/yaml-test-suite-data/MUS6/02/=== test-suite/yaml-test-suite-data/MUS6/02/in.json test-suite/yaml-test-suite-data/MUS6/02/in.yaml test-suite/yaml-test-suite-data/MUS6/02/out.yaml test-suite/yaml-test-suite-data/MUS6/02/test.event test-suite/yaml-test-suite-data/MUS6/03/=== test-suite/yaml-test-suite-data/MUS6/03/in.json test-suite/yaml-test-suite-data/MUS6/03/in.yaml test-suite/yaml-test-suite-data/MUS6/03/out.yaml test-suite/yaml-test-suite-data/MUS6/03/test.event test-suite/yaml-test-suite-data/MUS6/04/=== test-suite/yaml-test-suite-data/MUS6/04/in.json test-suite/yaml-test-suite-data/MUS6/04/in.yaml test-suite/yaml-test-suite-data/MUS6/04/out.yaml test-suite/yaml-test-suite-data/MUS6/04/test.event test-suite/yaml-test-suite-data/MUS6/05/=== test-suite/yaml-test-suite-data/MUS6/05/in.json test-suite/yaml-test-suite-data/MUS6/05/in.yaml test-suite/yaml-test-suite-data/MUS6/05/out.yaml test-suite/yaml-test-suite-data/MUS6/05/test.event test-suite/yaml-test-suite-data/MUS6/06/=== test-suite/yaml-test-suite-data/MUS6/06/in.json test-suite/yaml-test-suite-data/MUS6/06/in.yaml test-suite/yaml-test-suite-data/MUS6/06/out.yaml test-suite/yaml-test-suite-data/MUS6/06/test.event test-suite/yaml-test-suite-data/MXS3/=== test-suite/yaml-test-suite-data/MXS3/in.json test-suite/yaml-test-suite-data/MXS3/in.yaml test-suite/yaml-test-suite-data/MXS3/out.yaml test-suite/yaml-test-suite-data/MXS3/test.event test-suite/yaml-test-suite-data/MYW6/=== test-suite/yaml-test-suite-data/MYW6/in.json test-suite/yaml-test-suite-data/MYW6/in.yaml test-suite/yaml-test-suite-data/MYW6/out.yaml test-suite/yaml-test-suite-data/MYW6/test.event test-suite/yaml-test-suite-data/MZX3/=== test-suite/yaml-test-suite-data/MZX3/in.json test-suite/yaml-test-suite-data/MZX3/in.yaml test-suite/yaml-test-suite-data/MZX3/test.event test-suite/yaml-test-suite-data/N4JP/=== test-suite/yaml-test-suite-data/N4JP/error test-suite/yaml-test-suite-data/N4JP/in.yaml test-suite/yaml-test-suite-data/N4JP/test.event test-suite/yaml-test-suite-data/N782/=== test-suite/yaml-test-suite-data/N782/error test-suite/yaml-test-suite-data/N782/in.yaml test-suite/yaml-test-suite-data/N782/test.event test-suite/yaml-test-suite-data/NAT4/=== test-suite/yaml-test-suite-data/NAT4/emit.yaml test-suite/yaml-test-suite-data/NAT4/in.json test-suite/yaml-test-suite-data/NAT4/in.yaml test-suite/yaml-test-suite-data/NAT4/test.event test-suite/yaml-test-suite-data/NB6Z/=== test-suite/yaml-test-suite-data/NB6Z/in.json test-suite/yaml-test-suite-data/NB6Z/in.yaml test-suite/yaml-test-suite-data/NB6Z/out.yaml test-suite/yaml-test-suite-data/NB6Z/test.event test-suite/yaml-test-suite-data/NHX8/=== test-suite/yaml-test-suite-data/NHX8/emit.yaml test-suite/yaml-test-suite-data/NHX8/in.yaml test-suite/yaml-test-suite-data/NHX8/test.event test-suite/yaml-test-suite-data/NJ66/=== test-suite/yaml-test-suite-data/NJ66/in.json test-suite/yaml-test-suite-data/NJ66/in.yaml test-suite/yaml-test-suite-data/NJ66/out.yaml test-suite/yaml-test-suite-data/NJ66/test.event test-suite/yaml-test-suite-data/NKF9/=== test-suite/yaml-test-suite-data/NKF9/emit.yaml test-suite/yaml-test-suite-data/NKF9/in.yaml test-suite/yaml-test-suite-data/NKF9/test.event test-suite/yaml-test-suite-data/NP9H/=== test-suite/yaml-test-suite-data/NP9H/in.json test-suite/yaml-test-suite-data/NP9H/in.yaml test-suite/yaml-test-suite-data/NP9H/out.yaml test-suite/yaml-test-suite-data/NP9H/test.event test-suite/yaml-test-suite-data/P2AD/=== test-suite/yaml-test-suite-data/P2AD/in.json test-suite/yaml-test-suite-data/P2AD/in.yaml test-suite/yaml-test-suite-data/P2AD/out.yaml test-suite/yaml-test-suite-data/P2AD/test.event test-suite/yaml-test-suite-data/P2EQ/=== test-suite/yaml-test-suite-data/P2EQ/error test-suite/yaml-test-suite-data/P2EQ/in.yaml test-suite/yaml-test-suite-data/P2EQ/test.event test-suite/yaml-test-suite-data/P76L/=== test-suite/yaml-test-suite-data/P76L/in.json test-suite/yaml-test-suite-data/P76L/in.yaml test-suite/yaml-test-suite-data/P76L/out.yaml test-suite/yaml-test-suite-data/P76L/test.event test-suite/yaml-test-suite-data/P94K/=== test-suite/yaml-test-suite-data/P94K/in.json test-suite/yaml-test-suite-data/P94K/in.yaml test-suite/yaml-test-suite-data/P94K/out.yaml test-suite/yaml-test-suite-data/P94K/test.event test-suite/yaml-test-suite-data/PBJ2/=== test-suite/yaml-test-suite-data/PBJ2/in.json test-suite/yaml-test-suite-data/PBJ2/in.yaml test-suite/yaml-test-suite-data/PBJ2/out.yaml test-suite/yaml-test-suite-data/PBJ2/test.event test-suite/yaml-test-suite-data/PRH3/=== test-suite/yaml-test-suite-data/PRH3/emit.yaml test-suite/yaml-test-suite-data/PRH3/in.json test-suite/yaml-test-suite-data/PRH3/in.yaml test-suite/yaml-test-suite-data/PRH3/out.yaml test-suite/yaml-test-suite-data/PRH3/test.event test-suite/yaml-test-suite-data/PUW8/=== test-suite/yaml-test-suite-data/PUW8/in.json test-suite/yaml-test-suite-data/PUW8/in.yaml test-suite/yaml-test-suite-data/PUW8/out.yaml test-suite/yaml-test-suite-data/PUW8/test.event test-suite/yaml-test-suite-data/PW8X/=== test-suite/yaml-test-suite-data/PW8X/in.yaml test-suite/yaml-test-suite-data/PW8X/out.yaml test-suite/yaml-test-suite-data/PW8X/test.event test-suite/yaml-test-suite-data/Q4CL/=== test-suite/yaml-test-suite-data/Q4CL/error test-suite/yaml-test-suite-data/Q4CL/in.yaml test-suite/yaml-test-suite-data/Q4CL/test.event test-suite/yaml-test-suite-data/Q5MG/=== test-suite/yaml-test-suite-data/Q5MG/in.json test-suite/yaml-test-suite-data/Q5MG/in.yaml test-suite/yaml-test-suite-data/Q5MG/out.yaml test-suite/yaml-test-suite-data/Q5MG/test.event test-suite/yaml-test-suite-data/Q88A/=== test-suite/yaml-test-suite-data/Q88A/in.json test-suite/yaml-test-suite-data/Q88A/in.yaml test-suite/yaml-test-suite-data/Q88A/out.yaml test-suite/yaml-test-suite-data/Q88A/test.event test-suite/yaml-test-suite-data/Q8AD/=== test-suite/yaml-test-suite-data/Q8AD/emit.yaml test-suite/yaml-test-suite-data/Q8AD/in.json test-suite/yaml-test-suite-data/Q8AD/in.yaml test-suite/yaml-test-suite-data/Q8AD/out.yaml test-suite/yaml-test-suite-data/Q8AD/test.event test-suite/yaml-test-suite-data/Q9WF/=== test-suite/yaml-test-suite-data/Q9WF/in.yaml test-suite/yaml-test-suite-data/Q9WF/out.yaml test-suite/yaml-test-suite-data/Q9WF/test.event test-suite/yaml-test-suite-data/QB6E/=== test-suite/yaml-test-suite-data/QB6E/error test-suite/yaml-test-suite-data/QB6E/in.yaml test-suite/yaml-test-suite-data/QB6E/test.event test-suite/yaml-test-suite-data/QF4Y/=== test-suite/yaml-test-suite-data/QF4Y/in.json test-suite/yaml-test-suite-data/QF4Y/in.yaml test-suite/yaml-test-suite-data/QF4Y/out.yaml test-suite/yaml-test-suite-data/QF4Y/test.event test-suite/yaml-test-suite-data/QLJ7/=== test-suite/yaml-test-suite-data/QLJ7/error test-suite/yaml-test-suite-data/QLJ7/in.yaml test-suite/yaml-test-suite-data/QLJ7/test.event test-suite/yaml-test-suite-data/QT73/=== test-suite/yaml-test-suite-data/QT73/in.json test-suite/yaml-test-suite-data/QT73/in.yaml test-suite/yaml-test-suite-data/QT73/out.yaml test-suite/yaml-test-suite-data/QT73/test.event test-suite/yaml-test-suite-data/R4YG/=== test-suite/yaml-test-suite-data/R4YG/in.json test-suite/yaml-test-suite-data/R4YG/in.yaml test-suite/yaml-test-suite-data/R4YG/out.yaml test-suite/yaml-test-suite-data/R4YG/test.event test-suite/yaml-test-suite-data/R52L/=== test-suite/yaml-test-suite-data/R52L/in.json test-suite/yaml-test-suite-data/R52L/in.yaml test-suite/yaml-test-suite-data/R52L/out.yaml test-suite/yaml-test-suite-data/R52L/test.event test-suite/yaml-test-suite-data/RHX7/=== test-suite/yaml-test-suite-data/RHX7/error test-suite/yaml-test-suite-data/RHX7/in.yaml test-suite/yaml-test-suite-data/RHX7/test.event test-suite/yaml-test-suite-data/RLU9/=== test-suite/yaml-test-suite-data/RLU9/in.json test-suite/yaml-test-suite-data/RLU9/in.yaml test-suite/yaml-test-suite-data/RLU9/out.yaml test-suite/yaml-test-suite-data/RLU9/test.event test-suite/yaml-test-suite-data/RR7F/=== test-suite/yaml-test-suite-data/RR7F/in.json test-suite/yaml-test-suite-data/RR7F/in.yaml test-suite/yaml-test-suite-data/RR7F/out.yaml test-suite/yaml-test-suite-data/RR7F/test.event test-suite/yaml-test-suite-data/RTP8/=== test-suite/yaml-test-suite-data/RTP8/in.json test-suite/yaml-test-suite-data/RTP8/in.yaml test-suite/yaml-test-suite-data/RTP8/out.yaml test-suite/yaml-test-suite-data/RTP8/test.event test-suite/yaml-test-suite-data/RXY3/=== test-suite/yaml-test-suite-data/RXY3/error test-suite/yaml-test-suite-data/RXY3/in.yaml test-suite/yaml-test-suite-data/RXY3/test.event test-suite/yaml-test-suite-data/RZP5/=== test-suite/yaml-test-suite-data/RZP5/in.yaml test-suite/yaml-test-suite-data/RZP5/out.yaml test-suite/yaml-test-suite-data/RZP5/test.event test-suite/yaml-test-suite-data/RZT7/=== test-suite/yaml-test-suite-data/RZT7/in.json test-suite/yaml-test-suite-data/RZT7/in.yaml test-suite/yaml-test-suite-data/RZT7/out.yaml test-suite/yaml-test-suite-data/RZT7/test.event test-suite/yaml-test-suite-data/S3PD/=== test-suite/yaml-test-suite-data/S3PD/emit.yaml test-suite/yaml-test-suite-data/S3PD/in.yaml test-suite/yaml-test-suite-data/S3PD/test.event test-suite/yaml-test-suite-data/S4GJ/=== test-suite/yaml-test-suite-data/S4GJ/error test-suite/yaml-test-suite-data/S4GJ/in.yaml test-suite/yaml-test-suite-data/S4GJ/test.event test-suite/yaml-test-suite-data/S4JQ/=== test-suite/yaml-test-suite-data/S4JQ/in.json test-suite/yaml-test-suite-data/S4JQ/in.yaml test-suite/yaml-test-suite-data/S4JQ/out.yaml test-suite/yaml-test-suite-data/S4JQ/test.event test-suite/yaml-test-suite-data/S4T7/=== test-suite/yaml-test-suite-data/S4T7/in.json test-suite/yaml-test-suite-data/S4T7/in.yaml test-suite/yaml-test-suite-data/S4T7/test.event test-suite/yaml-test-suite-data/S7BG/=== test-suite/yaml-test-suite-data/S7BG/in.json test-suite/yaml-test-suite-data/S7BG/in.yaml test-suite/yaml-test-suite-data/S7BG/out.yaml test-suite/yaml-test-suite-data/S7BG/test.event test-suite/yaml-test-suite-data/S98Z/=== test-suite/yaml-test-suite-data/S98Z/error test-suite/yaml-test-suite-data/S98Z/in.yaml test-suite/yaml-test-suite-data/S98Z/test.event test-suite/yaml-test-suite-data/S9E8/=== test-suite/yaml-test-suite-data/S9E8/in.json test-suite/yaml-test-suite-data/S9E8/in.yaml test-suite/yaml-test-suite-data/S9E8/out.yaml test-suite/yaml-test-suite-data/S9E8/test.event test-suite/yaml-test-suite-data/SBG9/=== test-suite/yaml-test-suite-data/SBG9/in.yaml test-suite/yaml-test-suite-data/SBG9/out.yaml test-suite/yaml-test-suite-data/SBG9/test.event test-suite/yaml-test-suite-data/SF5V/=== test-suite/yaml-test-suite-data/SF5V/error test-suite/yaml-test-suite-data/SF5V/in.yaml test-suite/yaml-test-suite-data/SF5V/test.event test-suite/yaml-test-suite-data/SKE5/=== test-suite/yaml-test-suite-data/SKE5/in.json test-suite/yaml-test-suite-data/SKE5/in.yaml test-suite/yaml-test-suite-data/SKE5/out.yaml test-suite/yaml-test-suite-data/SKE5/test.event test-suite/yaml-test-suite-data/SM9W/00/=== test-suite/yaml-test-suite-data/SM9W/00/in.json test-suite/yaml-test-suite-data/SM9W/00/in.yaml test-suite/yaml-test-suite-data/SM9W/00/out.yaml test-suite/yaml-test-suite-data/SM9W/00/test.event test-suite/yaml-test-suite-data/SM9W/01/=== test-suite/yaml-test-suite-data/SM9W/01/in.yaml test-suite/yaml-test-suite-data/SM9W/01/out.yaml test-suite/yaml-test-suite-data/SM9W/01/test.event test-suite/yaml-test-suite-data/SR86/=== test-suite/yaml-test-suite-data/SR86/error test-suite/yaml-test-suite-data/SR86/in.yaml test-suite/yaml-test-suite-data/SR86/test.event test-suite/yaml-test-suite-data/SSW6/=== test-suite/yaml-test-suite-data/SSW6/in.json test-suite/yaml-test-suite-data/SSW6/in.yaml test-suite/yaml-test-suite-data/SSW6/out.yaml test-suite/yaml-test-suite-data/SSW6/test.event test-suite/yaml-test-suite-data/SU5Z/=== test-suite/yaml-test-suite-data/SU5Z/error test-suite/yaml-test-suite-data/SU5Z/in.yaml test-suite/yaml-test-suite-data/SU5Z/test.event test-suite/yaml-test-suite-data/SU74/=== test-suite/yaml-test-suite-data/SU74/error test-suite/yaml-test-suite-data/SU74/in.yaml test-suite/yaml-test-suite-data/SU74/test.event test-suite/yaml-test-suite-data/SY6V/=== test-suite/yaml-test-suite-data/SY6V/error test-suite/yaml-test-suite-data/SY6V/in.yaml test-suite/yaml-test-suite-data/SY6V/test.event test-suite/yaml-test-suite-data/SYW4/=== test-suite/yaml-test-suite-data/SYW4/in.json test-suite/yaml-test-suite-data/SYW4/in.yaml test-suite/yaml-test-suite-data/SYW4/out.yaml test-suite/yaml-test-suite-data/SYW4/test.event test-suite/yaml-test-suite-data/T26H/=== test-suite/yaml-test-suite-data/T26H/emit.yaml test-suite/yaml-test-suite-data/T26H/in.json test-suite/yaml-test-suite-data/T26H/in.yaml test-suite/yaml-test-suite-data/T26H/out.yaml test-suite/yaml-test-suite-data/T26H/test.event test-suite/yaml-test-suite-data/T4YY/=== test-suite/yaml-test-suite-data/T4YY/emit.yaml test-suite/yaml-test-suite-data/T4YY/in.json test-suite/yaml-test-suite-data/T4YY/in.yaml test-suite/yaml-test-suite-data/T4YY/out.yaml test-suite/yaml-test-suite-data/T4YY/test.event test-suite/yaml-test-suite-data/T5N4/=== test-suite/yaml-test-suite-data/T5N4/emit.yaml test-suite/yaml-test-suite-data/T5N4/in.json test-suite/yaml-test-suite-data/T5N4/in.yaml test-suite/yaml-test-suite-data/T5N4/out.yaml test-suite/yaml-test-suite-data/T5N4/test.event test-suite/yaml-test-suite-data/T833/=== test-suite/yaml-test-suite-data/T833/error test-suite/yaml-test-suite-data/T833/in.yaml test-suite/yaml-test-suite-data/T833/test.event test-suite/yaml-test-suite-data/TD5N/=== test-suite/yaml-test-suite-data/TD5N/error test-suite/yaml-test-suite-data/TD5N/in.yaml test-suite/yaml-test-suite-data/TD5N/test.event test-suite/yaml-test-suite-data/TE2A/=== test-suite/yaml-test-suite-data/TE2A/in.json test-suite/yaml-test-suite-data/TE2A/in.yaml test-suite/yaml-test-suite-data/TE2A/out.yaml test-suite/yaml-test-suite-data/TE2A/test.event test-suite/yaml-test-suite-data/TL85/=== test-suite/yaml-test-suite-data/TL85/in.json test-suite/yaml-test-suite-data/TL85/in.yaml test-suite/yaml-test-suite-data/TL85/out.yaml test-suite/yaml-test-suite-data/TL85/test.event test-suite/yaml-test-suite-data/TS54/=== test-suite/yaml-test-suite-data/TS54/in.json test-suite/yaml-test-suite-data/TS54/in.yaml test-suite/yaml-test-suite-data/TS54/out.yaml test-suite/yaml-test-suite-data/TS54/test.event test-suite/yaml-test-suite-data/U3C3/=== test-suite/yaml-test-suite-data/U3C3/in.json test-suite/yaml-test-suite-data/U3C3/in.yaml test-suite/yaml-test-suite-data/U3C3/out.yaml test-suite/yaml-test-suite-data/U3C3/test.event test-suite/yaml-test-suite-data/U3XV/=== test-suite/yaml-test-suite-data/U3XV/in.json test-suite/yaml-test-suite-data/U3XV/in.yaml test-suite/yaml-test-suite-data/U3XV/out.yaml test-suite/yaml-test-suite-data/U3XV/test.event test-suite/yaml-test-suite-data/U44R/=== test-suite/yaml-test-suite-data/U44R/error test-suite/yaml-test-suite-data/U44R/in.yaml test-suite/yaml-test-suite-data/U44R/test.event test-suite/yaml-test-suite-data/U99R/=== test-suite/yaml-test-suite-data/U99R/error test-suite/yaml-test-suite-data/U99R/in.yaml test-suite/yaml-test-suite-data/U99R/test.event test-suite/yaml-test-suite-data/U9NS/=== test-suite/yaml-test-suite-data/U9NS/in.json test-suite/yaml-test-suite-data/U9NS/in.yaml test-suite/yaml-test-suite-data/U9NS/test.event test-suite/yaml-test-suite-data/UDM2/=== test-suite/yaml-test-suite-data/UDM2/in.json test-suite/yaml-test-suite-data/UDM2/in.yaml test-suite/yaml-test-suite-data/UDM2/out.yaml test-suite/yaml-test-suite-data/UDM2/test.event test-suite/yaml-test-suite-data/UDR7/=== test-suite/yaml-test-suite-data/UDR7/in.json test-suite/yaml-test-suite-data/UDR7/in.yaml test-suite/yaml-test-suite-data/UDR7/out.yaml test-suite/yaml-test-suite-data/UDR7/test.event test-suite/yaml-test-suite-data/UGM3/=== test-suite/yaml-test-suite-data/UGM3/in.json test-suite/yaml-test-suite-data/UGM3/in.yaml test-suite/yaml-test-suite-data/UGM3/out.yaml test-suite/yaml-test-suite-data/UGM3/test.event test-suite/yaml-test-suite-data/UKK6/00/=== test-suite/yaml-test-suite-data/UKK6/00/in.yaml test-suite/yaml-test-suite-data/UKK6/00/test.event test-suite/yaml-test-suite-data/UKK6/01/=== test-suite/yaml-test-suite-data/UKK6/01/in.json test-suite/yaml-test-suite-data/UKK6/01/in.yaml test-suite/yaml-test-suite-data/UKK6/01/test.event test-suite/yaml-test-suite-data/UKK6/02/=== test-suite/yaml-test-suite-data/UKK6/02/in.yaml test-suite/yaml-test-suite-data/UKK6/02/test.event test-suite/yaml-test-suite-data/UT92/=== test-suite/yaml-test-suite-data/UT92/in.json test-suite/yaml-test-suite-data/UT92/in.yaml test-suite/yaml-test-suite-data/UT92/out.yaml test-suite/yaml-test-suite-data/UT92/test.event test-suite/yaml-test-suite-data/UV7Q/=== test-suite/yaml-test-suite-data/UV7Q/in.json test-suite/yaml-test-suite-data/UV7Q/in.yaml test-suite/yaml-test-suite-data/UV7Q/out.yaml test-suite/yaml-test-suite-data/UV7Q/test.event test-suite/yaml-test-suite-data/V55R/=== test-suite/yaml-test-suite-data/V55R/in.json test-suite/yaml-test-suite-data/V55R/in.yaml test-suite/yaml-test-suite-data/V55R/test.event test-suite/yaml-test-suite-data/V9D5/=== test-suite/yaml-test-suite-data/V9D5/in.yaml test-suite/yaml-test-suite-data/V9D5/test.event test-suite/yaml-test-suite-data/VJP3/00/=== test-suite/yaml-test-suite-data/VJP3/00/error test-suite/yaml-test-suite-data/VJP3/00/in.yaml test-suite/yaml-test-suite-data/VJP3/00/test.event test-suite/yaml-test-suite-data/VJP3/01/=== test-suite/yaml-test-suite-data/VJP3/01/emit.yaml test-suite/yaml-test-suite-data/VJP3/01/in.json test-suite/yaml-test-suite-data/VJP3/01/in.yaml test-suite/yaml-test-suite-data/VJP3/01/out.yaml test-suite/yaml-test-suite-data/VJP3/01/test.event test-suite/yaml-test-suite-data/W42U/=== test-suite/yaml-test-suite-data/W42U/in.json test-suite/yaml-test-suite-data/W42U/in.yaml test-suite/yaml-test-suite-data/W42U/out.yaml test-suite/yaml-test-suite-data/W42U/test.event test-suite/yaml-test-suite-data/W4TN/=== test-suite/yaml-test-suite-data/W4TN/in.json test-suite/yaml-test-suite-data/W4TN/in.yaml test-suite/yaml-test-suite-data/W4TN/out.yaml test-suite/yaml-test-suite-data/W4TN/test.event test-suite/yaml-test-suite-data/W5VH/=== test-suite/yaml-test-suite-data/W5VH/in.json test-suite/yaml-test-suite-data/W5VH/in.yaml test-suite/yaml-test-suite-data/W5VH/test.event test-suite/yaml-test-suite-data/W9L4/=== test-suite/yaml-test-suite-data/W9L4/error test-suite/yaml-test-suite-data/W9L4/in.yaml test-suite/yaml-test-suite-data/W9L4/test.event test-suite/yaml-test-suite-data/WZ62/=== test-suite/yaml-test-suite-data/WZ62/in.json test-suite/yaml-test-suite-data/WZ62/in.yaml test-suite/yaml-test-suite-data/WZ62/out.yaml test-suite/yaml-test-suite-data/WZ62/test.event test-suite/yaml-test-suite-data/X38W/=== test-suite/yaml-test-suite-data/X38W/in.yaml test-suite/yaml-test-suite-data/X38W/out.yaml test-suite/yaml-test-suite-data/X38W/test.event test-suite/yaml-test-suite-data/X4QW/=== test-suite/yaml-test-suite-data/X4QW/error test-suite/yaml-test-suite-data/X4QW/in.yaml test-suite/yaml-test-suite-data/X4QW/test.event test-suite/yaml-test-suite-data/X8DW/=== test-suite/yaml-test-suite-data/X8DW/in.json test-suite/yaml-test-suite-data/X8DW/in.yaml test-suite/yaml-test-suite-data/X8DW/out.yaml test-suite/yaml-test-suite-data/X8DW/test.event test-suite/yaml-test-suite-data/XLQ9/=== test-suite/yaml-test-suite-data/XLQ9/in.json test-suite/yaml-test-suite-data/XLQ9/in.yaml test-suite/yaml-test-suite-data/XLQ9/out.yaml test-suite/yaml-test-suite-data/XLQ9/test.event test-suite/yaml-test-suite-data/XV9V/=== test-suite/yaml-test-suite-data/XV9V/in.json test-suite/yaml-test-suite-data/XV9V/in.yaml test-suite/yaml-test-suite-data/XV9V/out.yaml test-suite/yaml-test-suite-data/XV9V/test.event test-suite/yaml-test-suite-data/XW4D/=== test-suite/yaml-test-suite-data/XW4D/in.yaml test-suite/yaml-test-suite-data/XW4D/out.yaml test-suite/yaml-test-suite-data/XW4D/test.event test-suite/yaml-test-suite-data/Y2GN/=== test-suite/yaml-test-suite-data/Y2GN/in.json test-suite/yaml-test-suite-data/Y2GN/in.yaml test-suite/yaml-test-suite-data/Y2GN/out.yaml test-suite/yaml-test-suite-data/Y2GN/test.event test-suite/yaml-test-suite-data/Y79Y/000/=== test-suite/yaml-test-suite-data/Y79Y/000/error test-suite/yaml-test-suite-data/Y79Y/000/in.yaml test-suite/yaml-test-suite-data/Y79Y/000/test.event test-suite/yaml-test-suite-data/Y79Y/001/=== test-suite/yaml-test-suite-data/Y79Y/001/in.json test-suite/yaml-test-suite-data/Y79Y/001/in.yaml test-suite/yaml-test-suite-data/Y79Y/001/out.yaml test-suite/yaml-test-suite-data/Y79Y/001/test.event test-suite/yaml-test-suite-data/Y79Y/002/=== test-suite/yaml-test-suite-data/Y79Y/002/in.json test-suite/yaml-test-suite-data/Y79Y/002/in.yaml test-suite/yaml-test-suite-data/Y79Y/002/out.yaml test-suite/yaml-test-suite-data/Y79Y/002/test.event test-suite/yaml-test-suite-data/Y79Y/003/=== test-suite/yaml-test-suite-data/Y79Y/003/error test-suite/yaml-test-suite-data/Y79Y/003/in.yaml test-suite/yaml-test-suite-data/Y79Y/003/out.yaml test-suite/yaml-test-suite-data/Y79Y/003/test.event test-suite/yaml-test-suite-data/Y79Y/004/=== test-suite/yaml-test-suite-data/Y79Y/004/error test-suite/yaml-test-suite-data/Y79Y/004/in.yaml test-suite/yaml-test-suite-data/Y79Y/004/out.yaml test-suite/yaml-test-suite-data/Y79Y/004/test.event test-suite/yaml-test-suite-data/Y79Y/005/=== test-suite/yaml-test-suite-data/Y79Y/005/error test-suite/yaml-test-suite-data/Y79Y/005/in.yaml test-suite/yaml-test-suite-data/Y79Y/005/out.yaml test-suite/yaml-test-suite-data/Y79Y/005/test.event test-suite/yaml-test-suite-data/Y79Y/006/=== test-suite/yaml-test-suite-data/Y79Y/006/error test-suite/yaml-test-suite-data/Y79Y/006/in.yaml test-suite/yaml-test-suite-data/Y79Y/006/out.yaml test-suite/yaml-test-suite-data/Y79Y/006/test.event test-suite/yaml-test-suite-data/Y79Y/007/=== test-suite/yaml-test-suite-data/Y79Y/007/error test-suite/yaml-test-suite-data/Y79Y/007/in.yaml test-suite/yaml-test-suite-data/Y79Y/007/out.yaml test-suite/yaml-test-suite-data/Y79Y/007/test.event test-suite/yaml-test-suite-data/Y79Y/008/=== test-suite/yaml-test-suite-data/Y79Y/008/error test-suite/yaml-test-suite-data/Y79Y/008/in.yaml test-suite/yaml-test-suite-data/Y79Y/008/out.yaml test-suite/yaml-test-suite-data/Y79Y/008/test.event test-suite/yaml-test-suite-data/Y79Y/009/=== test-suite/yaml-test-suite-data/Y79Y/009/error test-suite/yaml-test-suite-data/Y79Y/009/in.yaml test-suite/yaml-test-suite-data/Y79Y/009/out.yaml test-suite/yaml-test-suite-data/Y79Y/009/test.event test-suite/yaml-test-suite-data/Y79Y/010/=== test-suite/yaml-test-suite-data/Y79Y/010/in.json test-suite/yaml-test-suite-data/Y79Y/010/in.yaml test-suite/yaml-test-suite-data/Y79Y/010/out.yaml test-suite/yaml-test-suite-data/Y79Y/010/test.event test-suite/yaml-test-suite-data/YD5X/=== test-suite/yaml-test-suite-data/YD5X/in.json test-suite/yaml-test-suite-data/YD5X/in.yaml test-suite/yaml-test-suite-data/YD5X/out.yaml test-suite/yaml-test-suite-data/YD5X/test.event test-suite/yaml-test-suite-data/YJV2/=== test-suite/yaml-test-suite-data/YJV2/error test-suite/yaml-test-suite-data/YJV2/in.yaml test-suite/yaml-test-suite-data/YJV2/test.event test-suite/yaml-test-suite-data/Z67P/=== test-suite/yaml-test-suite-data/Z67P/in.json test-suite/yaml-test-suite-data/Z67P/in.yaml test-suite/yaml-test-suite-data/Z67P/out.yaml test-suite/yaml-test-suite-data/Z67P/test.event test-suite/yaml-test-suite-data/Z9M4/=== test-suite/yaml-test-suite-data/Z9M4/in.json test-suite/yaml-test-suite-data/Z9M4/in.yaml test-suite/yaml-test-suite-data/Z9M4/out.yaml test-suite/yaml-test-suite-data/Z9M4/test.event test-suite/yaml-test-suite-data/ZCZ6/=== test-suite/yaml-test-suite-data/ZCZ6/error test-suite/yaml-test-suite-data/ZCZ6/in.yaml test-suite/yaml-test-suite-data/ZCZ6/test.event test-suite/yaml-test-suite-data/ZF4X/=== test-suite/yaml-test-suite-data/ZF4X/in.json test-suite/yaml-test-suite-data/ZF4X/in.yaml test-suite/yaml-test-suite-data/ZF4X/out.yaml test-suite/yaml-test-suite-data/ZF4X/test.event test-suite/yaml-test-suite-data/ZH7C/=== test-suite/yaml-test-suite-data/ZH7C/in.json test-suite/yaml-test-suite-data/ZH7C/in.yaml test-suite/yaml-test-suite-data/ZH7C/test.event test-suite/yaml-test-suite-data/ZK9H/=== test-suite/yaml-test-suite-data/ZK9H/in.json test-suite/yaml-test-suite-data/ZK9H/in.yaml test-suite/yaml-test-suite-data/ZK9H/out.yaml test-suite/yaml-test-suite-data/ZK9H/test.event test-suite/yaml-test-suite-data/ZL4Z/=== test-suite/yaml-test-suite-data/ZL4Z/error test-suite/yaml-test-suite-data/ZL4Z/in.yaml test-suite/yaml-test-suite-data/ZL4Z/test.event test-suite/yaml-test-suite-data/ZVH3/=== test-suite/yaml-test-suite-data/ZVH3/error test-suite/yaml-test-suite-data/ZVH3/in.yaml test-suite/yaml-test-suite-data/ZVH3/test.event test-suite/yaml-test-suite-data/ZWK4/=== test-suite/yaml-test-suite-data/ZWK4/in.json test-suite/yaml-test-suite-data/ZWK4/in.yaml test-suite/yaml-test-suite-data/ZWK4/out.yaml test-suite/yaml-test-suite-data/ZWK4/test.event test-suite/yaml-test-suite-data/ZXT5/=== test-suite/yaml-test-suite-data/ZXT5/error test-suite/yaml-test-suite-data/ZXT5/in.yaml test-suite/yaml-test-suite-data/ZXT5/test.event xt/02.pod-cover.t xt/03.spelling.t xt/04.pod.t YAML-PP-v0.38.0/Changes0000644000175000017500000003063214556031647013031 0ustar tinatinaRevision history for Perl module YAML::PP v0.38.0 2024-01-30 00:22:42+01:00 - Add support for builtin booleans by default - Add FAQ - Add --cyclic option to yamlpp-load(-dump) v0.37.0 2023-11-09 16:46:43+01:00 - Breaking change: Make cyclic_refs fatal by default for safety, like announced (avoid memory leaks) - Add support for plain scalars ending with colons (Issue #48, ingy++) 0.036 2023-05-10 17:09:48+02:00 - Add option -dumpcode to turn of dumping coderefs in YAML::PP::Schema::Perl - ci updates 0.035 2022-09-30 21:16:16+02:00 - Fix parsing alias as mapping key - Support emitting folded block scalars. Now any input should be able to output as a folded block scalar correctly. Preserving scalar styles will now also preserve those 0.034 2022-06-30 10:31:56+02:00 - Fix parsing empty folded block scalars with trailing linebreaks - Fix error handling (remaining tokens on invalid input) - Support experimental v5.36 booleans - Allow to specify multiple boolean classes (issue #37) 0.033 2022-06-27 16:31:32+02:00 - Fix add_mapping_resolver + on_create (tie existing data) 0.032 2022-03-08 19:02:00+01:00 - Add missing '~' to allowed chars in tags - Restructure directive parsing a bit - Support YAML::PP::Ref in yamlpp-* utility scripts - Add -P to yaml-load-dump --preserve - Add --dump option to yamlpp-parse-emit - yamlpp-load-dump -D JSON::PP: don't output space before colon - Add export tags to YAML::PP::Common - Update yaml-test-suite to 2022-01-17 0.031 2021-12-25 23:43:19+01:00 - Fix several rare test cases: - Support literal escaped tabs - Allow only one digit for block scalar indent indicator - Allow comments at the end of directives - Match word boundary after '%YAML' - Allow tabs and multiple spaces between directive elements - Forbid lines starting with tabs in block mode - After tabs no further indentation elements allowed 0.030 2021-11-07 21:57:28+01:00 - preserve: Keep existing data (issue #44) - Forbid directive without directive end marker - Support explicit empty key/value pairs in flow mappings - Enforce EOL after end of flow context - Forbid multiple question marks in flow mappings 0.029 2021-10-25 00:02:53+02:00 - Fix basic implicit mappings in flow sequences, e.g. [a, b: c, d] 0.028 2021-10-21 22:00:36+02:00 - Fix empty values with properties in flow mappings and sequences (`[ &foo , bar]`, `{ &foo , k: v }`) - Fix: Allow comment lines with tabs in flow - Fix: parsing of explicit block indenting (issue #46) - Automatically tie new hashes inside tied hashes (issue #44) - yamlpp-load-dump: Add options --dump-module and --include* - docs: Add mising constants (issue #45) 0.027 2021-04-09 11:13:28+02:00 - Forbid duplicate keys by default like announced in 0.026 - Add possibility to preserve alias names (see 'preserve' option) - Highlighter: Add option to expand tabs in ansi color mode - yamlpp-events: Add option --module - Improve error message when trying to load an undefined alias - Fix a test for perl 5.8.8 0.026 2020-09-11 00:39:09+02:00 - Add option 'duplicate_keys'. The default allows it for now and will change to forbid in the next release. 0.025 2020-09-06 22:14:07+02:00 - Emitter: Fix indentation issues for non-default indents - Emitter: Add option 'width' for maximum columns - Improve error message for unhandled reftypes 0.024 2020-08-17 12:07:01+02:00 - Parser: fix flow mappings on one line - Improve utility tools yamlpp-load(-dump) (add new options --merge, --perl and --module) #35 - Minor improvements to emitter scalar style output - Emitter supports flow style - Support for preserving flow style in Loader/Dumper - Create preserved nodes from scratch with preserved_* methods - Minor fixes for the Perl schema and globs - Update testsuite to data-2020-08-01 0.023 2020-07-09 22:09:50+02:00 - Support loading and dumping typeglobs. Issue #15 - Dumper: Don't use aliases for JSON::PP/boolean.pm booleans, because they alwas use the same reference. Issue #32 - Fix float comparison in test. Issue #33 - Make aliases in custom tags work - YAML::PP::Highlight: colorize mapping keys 0.022 2020-05-04 17:40:36+02:00 - Emitter: Also quote if string starts with '...' - Emitter: Fix bug when emitting complex keys - Preserve also quoting style of hash keys - Schema: Fix YAML 1.1 integers (no keading zeros) - Scripts: Rename yamlpp5- to yamlpp- and symlink - Scripts: Add options to yamlpp-load-dump - Tests: Support reporting flow style in testsuite event output - Tests: Restructure schema tests and outsource test data - Events: Make version_directive compatible to libyaml - Docs: Restructure 0.021 2020-02-27 19:04:58+01:00 - Add option 'preserve' for preserving hash key order and quoting style when loading and dumping 0.020 2020-02-17 15:35:44+01:00 - Change default schema from JSON to Core (this change was supposed to go in 0.019 but wasn't completely done) - Add option version_directive (print %YAML 1.2) - Add option yaml_version - Add support for detecting the right schema depending on the YAML version directive - Support both %YAML and %TAG directive for a document - Improve emitter (output footer ... after open-ended block scalars) - Improve emitter (quote strings starting with `---` to reduce ambiguity for the reader) 0.019 2020-02-13 16:06:56+01:00 - Important (and possibly breaking) changes: - Change default schema from JSON to Core. Reason: This is the recommended Schema for YAML 1.2, and what people would expect to be the default. - load* in scalar context returns first document. Reason: I think this is the most reasonable behaviour, and it will continue to work the same if you later add documents to a file. - Empty nodes in YAML 1.2 JSON Schema resolve to '' by default like before, but now it can be configured - Fix some control character escaping and encoding issues (issue#16, issue#17) YAML::PP will now just assume all input data are unicode characters and won't do an explicit utf8::upgrade - Fix Core schema resolver for inf: add +.inf, +.Inf, +.INF - Improve emitter regarding empty lists/hashes (no newline before []/{}) - Spelling and grammar fixes (PR#23 @gregoa) - Fix YAML::PP::Grammar pod (PR#22 @gregoa) - Fix yamlpp5-load-dump - Fix error tokens output - Update yaml-test-suite to data-2020-02-11 0.018 2019-07-06 19:40:10+02:00 - Turn scalar style constants into numbers - Deprecate YAML_QUOTED_SCALAR_STYLE 0.017 2019-06-29 14:34:17+02:00 - Add Include plugin - Allow to only bless specific classes for Perl Schema - YAML::PP accepts existing schema in constructor - subschema can be an object - Switch the order of 'equals' and regex tag resolvers 0.016 2019-05-20 12:37:01+02:00 - Change load methods to return the last document in scalar context for compatibility with other YAML loaders - Fix Lexer/Emitter (allowing/forbidding special characters in plain scalars) - Custom representer must fill $node->{data} - Dump: uptf8::upgrade input value (so it can store binary data) 0.015 2019-05-14 21:00:59+02:00 - Support Mac \r and Win \r\n line endings - Add options header and footer - Add support for merge keys 0.014 2019-05-07 21:46:56+02:00 - Change tagtype option in Perl Schema (e.g. tag=!perl+!!perl) - Change on_data handler to pass a reference 0.013 2019-04-30 16:02:52+02:00 - Add option "indent" for dumping - Support both !perl/ and !!perl/ tags - Change default schema from Core to JSON - Add YAML::PP::Schema::Binary for representing binary data 0.012 2019-04-14 14:02:36+02:00 - Fix bug in emitter (strings starting with % must be quoted) - Implement loading of schema classes not prefixed with YAML::PP::Schema (PR#8 @pplu) - Implement loading of perl objects - Fix line number of multiline tokens - Refactor parser/lexer. All tokens (except indentation) are now parsed by the grammar. - Change arguments of resolver callback - Add a catchall resolver for scalars 0.011 2019-03-23 12:03:12+01:00 - Add YAML::PP::Common; use constants for YAML styles - Add YAML::PP::Schema::Perl - Dump perl objects, coderefs etc. - Add YAML::PP::Schema::Tie::IxHash - keep order of hashes - Add YAML::PP::Schema::YAML1_1 - Add class_isa representer (PR#7 @pplu) - Add exceptions in tests for broken inf - Refactor schema testing - Fix indent bugs in emitter (aliases, empty lists/mappings) - Fix bug in emitter for values starting with '? ' or '- ' - Add missing resolvers to Core and YAML1_1 Schema 0.010 2018-11-02 12:53:41+01:00 - Fix regex for start of plain scalars - Large refactoring of lexer/parser. - Adjacent flow mapping values are now supported (JSON compat: `{"foo":23}`) - Empty flow mapping values are now supported - Fix nested flow collections 0.009 2018-09-30 14:10:15+02:00 - Fix yamlpp5-highlight bug from v0.008 - load_file(), LoadFile(), dump_file() and DumpFile() can take filehandles 0.008 2018-09-24 21:49:42+02:00 - Support perl 5.8 - Fix bug in folded block scalar parsing - Support multiple document end markers without content - Allow tabs at the beginning of line for flow nodes - Optimize reading input with many lines - Some internal changes - Refactor test suite - Add YAML::PP::Highlight::Dump() 0.007 2018-06-20 21:36:26+02:00 - Support .inf/.nan - Always output decimal point when dumping floats - YAML directive needs space - Improve emitter - Output multiline strings as literal block scalars - Fix regex for integers in Core Schema - Fix dumping of dualvars - Fix emitting of empty strings - Improve emitter scalar styles - Allow zero indented sequences for complex mapping keys/values - Fix parsing empty quoted strings 0.006 2018-04-01 22:59:31+02:00 - Support YAML Failsafe, JSON and Core Schema - Add dump_file, DumpFile - Add YAML::PP::Writer - Add YAML::PP::Representer - Detect cyclic references when loading - perl boolean false is now the empty string instead of 0 - Add column numbers to error messages - Fixed various bugs in Emitter - Can now emit empty collections like [], {} 0.005 2017-11-23 17:09:55+01:00 - Support reading files - Replace load() with load_string(), dump() with dump_string() - Support legacy interface functions Load, LoadFile, Dump - ... and --- are now correctly invalid in quoted scalars - Improve block scalar handling, passing two more tests - Improve multiline plain handling, passing another test - Partial implementation of flow style collections - Allow unicode in alias/anchor names - Document header at the end is now recognized - Support all valid escapes in double quotes - ...and forbid invalid ones - Multiline quoted strings must be indented - Forbid sequence or mapping as a mapping value on the same line - Forbit sequence after an anchor/tag on the same line 0.004 2017-09-15 13:30:50+02:00 - Improve regex for plain scalars - Support literal unicode characters - Reject undefined tag shorthand handles - Fix JSON test - Update yaml-test-suite 0.003_002 2017-09-09 16:27:28+02:00 - Lots of refactoring - Lots of little bugfixes - Split Loader into Constructor - Add yaml-test-suite to release tarball - Add a Lexer - Better error messages - Add a highlighter for HTML and ANSI colors - Dumper can dump aliases/anchors now 0.003_001 2017-08-07 23:29:51+02:00 - Fix some parsing bugs for quoted strings - Add Dumper and Emitter 0.003 2017-05-31 23:35:44+02:00 - Changes for new Loader API 0.002 2017-04-30 19:07:48+02:00 - Loader: Support stringification of complex mapping keys - Improve regexes for mapping keys, tags, anchors/aliases - Improve number support (int, float, oct, hex) - Reserved directives generate a warning now - Support Carriage Return as line break - Support missing final line break - Make JSON::PP optional in test - Fix bug for perl <= 5.22 0.001 Thu Apr 20 20:46:43 2017 +0200 - First Release YAML-PP-v0.38.0/examples/0000755000175000017500000000000014556031647013350 5ustar tinatinaYAML-PP-v0.38.0/examples/external-vars-templates/0000755000175000017500000000000014556031650020131 5ustar tinatinaYAML-PP-v0.38.0/examples/external-vars-templates/ext.yaml0000644000175000017500000000020114556031650021606 0ustar tinatina--- filename: !external /argv/0 env.LANG: !external /env/LANG argv: !external /argv path: !template "${/config/prefix}/bin/perl" YAML-PP-v0.38.0/examples/external-vars-templates/ext.pl0000644000175000017500000000311014556031647021267 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use YAML::PP; use Data::Dumper; my $ypp = YAML::PP->new( schema => ['Failsafe'] ); my ($filename) = @ARGV; my $external_data = { env => \%ENV, argv => \@ARGV, config => { prefix => '/usr/local' }, }; my $schema = $ypp->schema; $schema->add_resolver( tag => "!external", match => [ all => => sub { my ($constructor, $event) = @_; my $value = $event->{value}; path($external_data, $value) }], implicit => 0, ); $schema->add_resolver( tag => "!template", match => [ all => sub { my ($constructor, $event) = @_; my $value = $event->{value}; template($external_data, $value) }], implicit => 0, ); my $data = $ypp->load_file($filename); say $ypp->dump_string($data); # utility functions # turn /env/FOO into $data->{env}->{FOO} sub path { my ($data, $path) = @_; my @paths = split qr{/}, $path; my $replaced = $data; for my $p (@paths) { next unless length $p; if (ref $replaced eq 'ARRAY') { if ($p !~ tr/0-9//c and $p < @$replaced) { $replaced = $replaced->[ $p ]; } else { return; } } elsif (ref $replaced eq 'HASH') { $replaced = $replaced->{ $p }; } last unless defined $replaced; } return $replaced; } # replace ${/some/path} in string with path(...) sub template { my ($data, $string) = @_; $string =~ s<\$\{([\w/]+)\}> eg; return $string; } YAML-PP-v0.38.0/examples/strings.yaml0000644000175000017500000000572414556031647015735 0ustar tinatina############################################### # Various strings ############################################### '" "': failsafe, json, core, yaml11: ['str', ' ', "' '"] '"@array"': failsafe, json, core, yaml11: ['str', '@array', "'@array'"] '"%percent"': failsafe, json, core, yaml11: ['str', '%percent', "'%percent'"] '"`cmd`"': failsafe, json, core, yaml11: ['str', '`cmd`', "'`cmd`'"] '"!string"': failsafe, json, core, yaml11: ['str', '!string', "'!string'"] '"*string"': failsafe, json, core, yaml11: ['str', '*string', "'*string'"] '"string:"': failsafe, json, core, yaml11: ['str', 'string:', "'string:'"] '"string "': failsafe, json, core, yaml11: ['str', 'string ', "'string '"] '"string\t"': failsafe, json, core, yaml11: ['str', "string\t", '"string\t"'] '"string\r"': failsafe, json, core, yaml11: ['str', "string\r", '"string\r"'] '"key: val"': failsafe, json, core, yaml11: ['str', 'key: val', "'key: val'"] '"-"': failsafe, json, core, yaml11: ['str', '-', "'-'"] '"- "': failsafe, json, core, yaml11: ['str', '- ', "'- '"] '"-\n"': failsafe, json, core, yaml11: ['str', "-\n", "|\n -"] '"-\t"': failsafe, json, core, yaml11: ['str', "-\t", '"-\t"'] '"- a"': failsafe, json, core, yaml11: ['str', '- a', "'- a'"] '":"': failsafe, json, core, yaml11: ['str', ':', "':'"] '"{"': failsafe, json, core, yaml11: ['str', '{', "'{'"] '"}"': failsafe, json, core, yaml11: ['str', '}', "'}'"] '"["': failsafe, json, core, yaml11: ['str', '[', "'['"] '"]"': failsafe, json, core, yaml11: ['str', ']', "']'"] '","': failsafe, json, core, yaml11: ['str', ',', "','"] '"?"': failsafe, json, core, yaml11: ['str', '?', "'?'"] '"? "': failsafe, json, core, yaml11: ['str', '? ', "'? '"] '"? a"': failsafe, json, core, yaml11: ['str', '? a', "'? a'"] '"#"': failsafe, json, core, yaml11: ['str', '#', "'#'"] '"no comment #"': failsafe, json, core, yaml11: ['str', 'no comment #', "'no comment #'"] '"# "': failsafe, json, core, yaml11: ['str', '# ', "'# '"] '"no #comment"': failsafe, json, core, yaml11: ['str', 'no #comment', "'no #comment'"] '"|"': failsafe, json, core, yaml11: ['str', '|', "'|'"] '">"': failsafe, json, core, yaml11: ['str', '>', "'>'"] '"''"': failsafe, json, core, yaml11: ['str', '''', "\"'\""] '"''\""': failsafe, json, core, yaml11: ['str', '''"', "'''\"'"] '"\""': failsafe, json, core, yaml11: ['str', '"', "'\"'"] '"\n "': failsafe, json, core, yaml11: ['str', "\n ", '"\n "'] '" \n"': failsafe, json, core, yaml11: ['str', " \n", '" \n"'] '"foo\nbar"': failsafe, json, core, yaml11: ['str', "foo\nbar", "|-\n foo\n bar"] '"x\n\"y\\z"': failsafe, json, core, yaml11: ['str', "x\n\"y\\z", "|-\n x\n \"y\\z"] '"no comment#"': failsafe, json, core, yaml11: ['str', 'no comment#', "no comment#"] 'foo\bar': failsafe, json, core, yaml11: ['str', 'foo\bar', 'foo\bar'] '^string': failsafe, json, core, yaml11: ['str', '^string', '^string'] 'str"ing': failsafe, json, core, yaml11: ['str', 'str"ing', 'str"ing'] YAML-PP-v0.38.0/examples/yaml-schema-modules.yaml0000644000175000017500000012024614556031647020107 0ustar tinatina--- '!!bool FALSE': YAML: dump: 'FALSE' type: str YAML::Syck: dump: '''FALSE''' type: str YAML::XS: error: 1 type: error '!!bool False': YAML: dump: 'False' type: str YAML::Syck: dump: '''False''' type: str YAML::XS: error: 1 type: error '!!bool N': YAML: dump: N type: str YAML::Syck: dump: '''N''' type: str YAML::XS: error: 1 type: error '!!bool NO': YAML: dump: NO type: str YAML::Syck: dump: '''NO''' type: str YAML::XS: error: 1 type: error '!!bool OFF': YAML: dump: OFF type: str YAML::Syck: dump: '''OFF''' type: str YAML::XS: error: 1 type: error '!!bool ON': YAML: dump: ON type: str YAML::Syck: dump: '''ON''' type: str YAML::XS: error: 1 type: error '!!bool Off': YAML: dump: Off type: str YAML::Syck: dump: '''Off''' type: str YAML::XS: error: 1 type: error '!!bool On': YAML: dump: On type: str YAML::Syck: dump: '''On''' type: str YAML::XS: error: 1 type: error '!!bool TRUE': YAML: dump: 'TRUE' type: str YAML::Syck: dump: '''TRUE''' type: str YAML::XS: error: 1 type: error '!!bool True': YAML: dump: 'True' type: str YAML::Syck: dump: '''True''' type: str YAML::XS: error: 1 type: error '!!bool Y': YAML: dump: Y type: str YAML::Syck: dump: '''Y''' type: str YAML::XS: error: 1 type: error '!!bool YES': YAML: dump: YES type: str YAML::Syck: dump: '''YES''' type: str YAML::XS: error: 1 type: error '!!bool Yes': YAML: dump: Yes type: str YAML::Syck: dump: '''Yes''' type: str YAML::XS: error: 1 type: error '!!bool false': YAML: dump: 'false' type: str YAML::Syck: dump: '''false''' type: str YAML::XS: error: 1 type: error '!!bool n': YAML: dump: n type: str YAML::Syck: dump: '''n''' type: str YAML::XS: error: 1 type: error '!!bool no': YAML: dump: no type: str YAML::Syck: dump: '''no''' type: str YAML::XS: error: 1 type: error '!!bool off': YAML: dump: off type: str YAML::Syck: dump: '''off''' type: str YAML::XS: error: 1 type: error '!!bool on': YAML: dump: on type: str YAML::Syck: dump: '''on''' type: str YAML::XS: error: 1 type: error '!!bool true': YAML: dump: 'true' type: str YAML::Syck: dump: '''true''' type: str YAML::XS: error: 1 type: error '!!bool y': YAML: dump: y type: str YAML::Syck: dump: '''y''' type: str YAML::XS: error: 1 type: error '!!bool yes': YAML: dump: yes type: str YAML::Syck: dump: '''yes''' type: str YAML::XS: error: 1 type: error '!!float +.INF': YAML: dump: '+.INF' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float +.Inf': YAML: dump: '+.Inf' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float +.inf': YAML: dump: '+.inf' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float +0.3e+3': YAML: dump: '+0.3e+3' type: str YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '+0.3e+3' type: float '!!float +0.3e3': YAML: dump: '+0.3e3' type: str YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '+0.3e3' type: float '!!float -.INF': YAML: dump: '-.INF' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float -.Inf': YAML: dump: '-.Inf' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float -.inf': YAML: dump: '-.inf' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float -3.14': YAML: dump: '-3.14' type: float YAML::Syck: dump: '''-3.14''' type: float YAML::XS: dump: '-3.14' type: float '!!float .0': YAML: dump: '0' type: float YAML::Syck: dump: '''0''' type: float YAML::XS: dump: '.0' type: float '!!float .3E-1': YAML: dump: '0.03' type: float YAML::Syck: dump: '''0.03''' type: float YAML::XS: dump: '.3E-1' type: float '!!float .3e+3': YAML: dump: '300' type: int YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '.3e+3' type: float '!!float .3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '.3e3' type: float '!!float .INF': YAML: dump: '.INF' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float .Inf': YAML: dump: '.Inf' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float .NAN': YAML: dump: '.NAN' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float .NaN': YAML: dump: '.NaN' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float .inf': YAML: dump: '.inf' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float .nan': YAML: dump: '.nan' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!float 0.0': YAML: dump: '0' type: float YAML::Syck: dump: '''0''' type: float YAML::XS: dump: '0.0' type: float '!!float 0.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '0.3e3' type: float '!!float 001.23': YAML: dump: '001.23' type: str YAML::Syck: dump: '''1.23''' type: float YAML::XS: dump: '001.23' type: float '!!float 190:20:30.15': YAML: dump: 190:20:30.15 type: str YAML::Syck: dump: '''190''' type: float YAML::XS: error: 1 type: error '!!float 3.14': YAML: dump: '3.14' type: float YAML::Syck: dump: '''3.14''' type: float YAML::XS: dump: '3.14' type: float '!!float 3.3e+3': YAML: dump: '3300' type: int YAML::Syck: dump: '''3300''' type: float YAML::XS: dump: '3.3e+3' type: float '!!float 85.230_15e+03': YAML: dump: 85.230_15e+03 type: str YAML::Syck: dump: '''85.23''' type: float YAML::XS: error: 1 type: error '!!float 85_230.15': YAML: dump: 85_230.15 type: str YAML::Syck: dump: '''85''' type: float YAML::XS: error: 1 type: error '!!int +0': YAML: dump: '+0' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '+0' type: int '!!int +0100_200': YAML: dump: +0100_200 type: str YAML::Syck: dump: '''100''' type: float YAML::XS: error: 1 type: error '!!int +0b100': YAML: dump: +0b100 type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int +190:20:30': YAML: dump: +190:20:30 type: str YAML::Syck: dump: '''190''' type: float YAML::XS: error: 1 type: error '!!int +23': YAML: dump: '+23' type: str YAML::Syck: dump: '23' type: int YAML::XS: dump: '+23' type: int '!!int -0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: int YAML::XS: dump: '-0' type: int '!!int -0100_200': YAML: dump: -0100_200 type: str YAML::Syck: dump: '''-100''' type: float YAML::XS: error: 1 type: error '!!int -0b101': YAML: dump: -0b101 type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int -0x30': YAML: dump: -0x30 type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int -190:20:30': YAML: dump: -190:20:30 type: str YAML::Syck: dump: '''-190''' type: float YAML::XS: error: 1 type: error '!!int -23': YAML: dump: '-23' type: int YAML::Syck: dump: '-23' type: int YAML::XS: dump: '-23' type: int '!!int 0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: int YAML::XS: dump: '0' type: int '!!int 00': YAML: dump: '00' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '00' type: int '!!int 0011': YAML: dump: '0011' type: str YAML::Syck: dump: '11' type: int YAML::XS: dump: '0011' type: int '!!int 010': YAML: dump: '010' type: str YAML::Syck: dump: '10' type: int YAML::XS: dump: '010' type: int '!!int 02_0': YAML: dump: 02_0 type: str YAML::Syck: dump: '''2''' type: float YAML::XS: error: 1 type: error '!!int 07': YAML: dump: '07' type: str YAML::Syck: dump: '7' type: int YAML::XS: dump: '07' type: int '!!int 0b0': YAML: dump: 0b0 type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0b100_101': YAML: dump: 0b100_101 type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0o0': YAML: dump: '0o0' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0o10': YAML: dump: '0o10' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0o7': YAML: dump: '0o7' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0x0': YAML: dump: '0x0' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0x10': YAML: dump: '0x10' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0x2_0': YAML: dump: 0x2_0 type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0x42': YAML: dump: '0x42' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 0xa': YAML: dump: '0xa' type: str YAML::Syck: dump: '''0''' type: float YAML::XS: error: 1 type: error '!!int 100_000': YAML: dump: 100_000 type: str YAML::Syck: dump: '''100''' type: float YAML::XS: error: 1 type: error '!!int 190:20:30': YAML: dump: 190:20:30 type: str YAML::Syck: dump: '''190''' type: float YAML::XS: error: 1 type: error '!!int 23': YAML: dump: '23' type: int YAML::Syck: dump: '23' type: int YAML::XS: dump: '23' type: int '!!null #empty': YAML: dump: '''#empty''' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '!!null NULL': YAML: dump: 'NULL' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: error: 1 type: error '!!null Null': YAML: dump: 'Null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: error: 1 type: error '!!null null': YAML: dump: 'null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '!!null ~': YAML: dump: '''~''' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '!!str #empty': YAML: dump: '''#empty''' type: str YAML::Syck: dump: '''''' type: str YAML::XS: dump: '''''' type: str '!!str +.INF': YAML: dump: '+.INF' type: str YAML::Syck: dump: '+.INF' type: str YAML::XS: dump: '+.INF' type: str '!!str +.Inf': YAML: dump: '+.Inf' type: str YAML::Syck: dump: '+.Inf' type: str YAML::XS: dump: '+.Inf' type: str '!!str +.inf': YAML: dump: '+.inf' type: str YAML::Syck: dump: '+.inf' type: str YAML::XS: dump: '+.inf' type: str '!!str +0': YAML: dump: '+0' type: str YAML::Syck: dump: '+0' type: str YAML::XS: dump: '''+0''' type: str '!!str +0.3e+3': YAML: dump: '+0.3e+3' type: str YAML::Syck: dump: '''+0.3e+3''' type: str YAML::XS: dump: '''+0.3e+3''' type: str '!!str +0.3e3': YAML: dump: '+0.3e3' type: str YAML::Syck: dump: '''+0.3e3''' type: str YAML::XS: dump: '''+0.3e3''' type: str '!!str +0100_200': YAML: dump: +0100_200 type: str YAML::Syck: dump: +0100_200 type: str YAML::XS: dump: +0100_200 type: str '!!str +0b100': YAML: dump: +0b100 type: str YAML::Syck: dump: +0b100 type: str YAML::XS: dump: +0b100 type: str '!!str +190:20:30': YAML: dump: +190:20:30 type: str YAML::Syck: dump: +190:20:30 type: str YAML::XS: dump: +190:20:30 type: str '!!str +23': YAML: dump: '+23' type: str YAML::Syck: dump: '+23' type: str YAML::XS: dump: '''+23''' type: str '!!str -.INF': YAML: dump: '-.INF' type: str YAML::Syck: dump: '-.INF' type: str YAML::XS: dump: '-.INF' type: str '!!str -.Inf': YAML: dump: '-.Inf' type: str YAML::Syck: dump: '-.Inf' type: str YAML::XS: dump: '-.Inf' type: str '!!str -.inf': YAML: dump: '-.inf' type: str YAML::Syck: dump: '-.inf' type: str YAML::XS: dump: '-.inf' type: str '!!str -0': YAML: dump: '0' type: int YAML::Syck: dump: '''-0''' type: str YAML::XS: dump: '''-0''' type: str '!!str -0100_200': YAML: dump: -0100_200 type: str YAML::Syck: dump: -0100_200 type: str YAML::XS: dump: -0100_200 type: str '!!str -0b101': YAML: dump: -0b101 type: str YAML::Syck: dump: -0b101 type: str YAML::XS: dump: -0b101 type: str '!!str -0x30': YAML: dump: -0x30 type: str YAML::Syck: dump: -0x30 type: str YAML::XS: dump: -0x30 type: str '!!str -190:20:30': YAML: dump: -190:20:30 type: str YAML::Syck: dump: -190:20:30 type: str YAML::XS: dump: -190:20:30 type: str '!!str -23': YAML: dump: '-23' type: int YAML::Syck: dump: '-23' type: str YAML::XS: dump: '''-23''' type: str '!!str -3.14': YAML: dump: '-3.14' type: float YAML::Syck: dump: '''-3.14''' type: str YAML::XS: dump: '''-3.14''' type: str '!!str .0': YAML: dump: '0' type: float YAML::Syck: dump: '.0' type: str YAML::XS: dump: '''.0''' type: str '!!str .3E-1': YAML: dump: '0.03' type: float YAML::Syck: dump: '''.3E-1''' type: str YAML::XS: dump: '''.3E-1''' type: str '!!str .3e+3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e+3''' type: str YAML::XS: dump: '''.3e+3''' type: str '!!str .3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e3''' type: str YAML::XS: dump: '''.3e3''' type: str '!!str .INF': YAML: dump: '.INF' type: str YAML::Syck: dump: '.INF' type: str YAML::XS: dump: '.INF' type: str '!!str .Inf': YAML: dump: '.Inf' type: str YAML::Syck: dump: '.Inf' type: str YAML::XS: dump: '.Inf' type: str '!!str .NAN': YAML: dump: '.NAN' type: str YAML::Syck: dump: '.NAN' type: str YAML::XS: dump: '.NAN' type: str '!!str .NaN': YAML: dump: '.NaN' type: str YAML::Syck: dump: '.NaN' type: str YAML::XS: dump: '.NaN' type: str '!!str .inf': YAML: dump: '.inf' type: str YAML::Syck: dump: '.inf' type: str YAML::XS: dump: '.inf' type: str '!!str .nan': YAML: dump: '.nan' type: str YAML::Syck: dump: '.nan' type: str YAML::XS: dump: '.nan' type: str '!!str 0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: str YAML::XS: dump: '''0''' type: str '!!str 0.0': YAML: dump: '0' type: float YAML::Syck: dump: '''0.0''' type: str YAML::XS: dump: '''0.0''' type: str '!!str 0.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''0.3e3''' type: str YAML::XS: dump: '''0.3e3''' type: str '!!str 00': YAML: dump: '00' type: str YAML::Syck: dump: '''00''' type: str YAML::XS: dump: '''00''' type: str '!!str 001.23': YAML: dump: '001.23' type: str YAML::Syck: dump: '''001.23''' type: str YAML::XS: dump: '''001.23''' type: str '!!str 0011': YAML: dump: '0011' type: str YAML::Syck: dump: '''0011''' type: str YAML::XS: dump: '''0011''' type: str '!!str 010': YAML: dump: '010' type: str YAML::Syck: dump: '''010''' type: str YAML::XS: dump: '''010''' type: str '!!str 02_0': YAML: dump: 02_0 type: str YAML::Syck: dump: 02_0 type: str YAML::XS: dump: 02_0 type: str '!!str 07': YAML: dump: '07' type: str YAML::Syck: dump: '''07''' type: str YAML::XS: dump: '''07''' type: str '!!str 0b0': YAML: dump: 0b0 type: str YAML::Syck: dump: 0b0 type: str YAML::XS: dump: 0b0 type: str '!!str 0b100_101': YAML: dump: 0b100_101 type: str YAML::Syck: dump: 0b100_101 type: str YAML::XS: dump: 0b100_101 type: str '!!str 0o0': YAML: dump: '0o0' type: str YAML::Syck: dump: '0o0' type: str YAML::XS: dump: '0o0' type: str '!!str 0o10': YAML: dump: '0o10' type: str YAML::Syck: dump: '0o10' type: str YAML::XS: dump: '0o10' type: str '!!str 0o7': YAML: dump: '0o7' type: str YAML::Syck: dump: '0o7' type: str YAML::XS: dump: '0o7' type: str '!!str 0x0': YAML: dump: '0x0' type: str YAML::Syck: dump: '0x0' type: str YAML::XS: dump: '0x0' type: str '!!str 0x2_0': YAML: dump: 0x2_0 type: str YAML::Syck: dump: 0x2_0 type: str YAML::XS: dump: 0x2_0 type: str '!!str 0xa': YAML: dump: '0xa' type: str YAML::Syck: dump: '0xa' type: str YAML::XS: dump: '0xa' type: str '!!str 100_000': YAML: dump: 100_000 type: str YAML::Syck: dump: 100_000 type: str YAML::XS: dump: 100_000 type: str '!!str 190:20:30': YAML: dump: 190:20:30 type: str YAML::Syck: dump: 190:20:30 type: str YAML::XS: dump: 190:20:30 type: str '!!str 190:20:30.15': YAML: dump: 190:20:30.15 type: str YAML::Syck: dump: 190:20:30.15 type: str YAML::XS: dump: 190:20:30.15 type: str '!!str 23': YAML: dump: '23' type: int YAML::Syck: dump: '23' type: str YAML::XS: dump: '''23''' type: str '!!str 3.14': YAML: dump: '3.14' type: float YAML::Syck: dump: '''3.14''' type: str YAML::XS: dump: '''3.14''' type: str '!!str 3.3e+3': YAML: dump: '3300' type: int YAML::Syck: dump: '''3.3e+3''' type: str YAML::XS: dump: '''3.3e+3''' type: str '!!str 85.230_15e+03': YAML: dump: 85.230_15e+03 type: str YAML::Syck: dump: 85.230_15e+03 type: str YAML::XS: dump: 85.230_15e+03 type: str '!!str 85_230.15': YAML: dump: 85_230.15 type: str YAML::Syck: dump: 85_230.15 type: str YAML::XS: dump: 85_230.15 type: str '!!str FALSE': YAML: dump: 'FALSE' type: str YAML::Syck: dump: '''FALSE''' type: str YAML::XS: dump: 'FALSE' type: str '!!str False': YAML: dump: 'False' type: str YAML::Syck: dump: '''False''' type: str YAML::XS: dump: 'False' type: str '!!str N': YAML: dump: N type: str YAML::Syck: dump: '''N''' type: str YAML::XS: dump: N type: str '!!str NO': YAML: dump: NO type: str YAML::Syck: dump: '''NO''' type: str YAML::XS: dump: NO type: str '!!str NULL': YAML: dump: 'NULL' type: str YAML::Syck: dump: '''NULL''' type: str YAML::XS: dump: 'NULL' type: str '!!str Null': YAML: dump: 'Null' type: str YAML::Syck: dump: '''Null''' type: str YAML::XS: dump: 'Null' type: str '!!str OFF': YAML: dump: OFF type: str YAML::Syck: dump: '''OFF''' type: str YAML::XS: dump: OFF type: str '!!str ON': YAML: dump: ON type: str YAML::Syck: dump: '''ON''' type: str YAML::XS: dump: ON type: str '!!str Off': YAML: dump: Off type: str YAML::Syck: dump: '''Off''' type: str YAML::XS: dump: Off type: str '!!str On': YAML: dump: On type: str YAML::Syck: dump: '''On''' type: str YAML::XS: dump: On type: str '!!str TRUE': YAML: dump: 'TRUE' type: str YAML::Syck: dump: '''TRUE''' type: str YAML::XS: dump: 'TRUE' type: str '!!str True': YAML: dump: 'True' type: str YAML::Syck: dump: '''True''' type: str YAML::XS: dump: 'True' type: str '!!str Y': YAML: dump: Y type: str YAML::Syck: dump: '''Y''' type: str YAML::XS: dump: Y type: str '!!str YES': YAML: dump: YES type: str YAML::Syck: dump: '''YES''' type: str YAML::XS: dump: YES type: str '!!str Yes': YAML: dump: Yes type: str YAML::Syck: dump: '''Yes''' type: str YAML::XS: dump: Yes type: str '!!str false': YAML: dump: 'false' type: str YAML::Syck: dump: '''false''' type: str YAML::XS: dump: '''false''' type: str '!!str n': YAML: dump: n type: str YAML::Syck: dump: '''n''' type: str YAML::XS: dump: n type: str '!!str no': YAML: dump: no type: str YAML::Syck: dump: '''no''' type: str YAML::XS: dump: no type: str '!!str null': YAML: dump: 'null' type: str YAML::Syck: dump: '''null''' type: str YAML::XS: dump: '''null''' type: str '!!str off': YAML: dump: off type: str YAML::Syck: dump: '''off''' type: str YAML::XS: dump: off type: str '!!str on': YAML: dump: on type: str YAML::Syck: dump: '''on''' type: str YAML::XS: dump: on type: str '!!str true': YAML: dump: 'true' type: str YAML::Syck: dump: '''true''' type: str YAML::XS: dump: '''true''' type: str '!!str y': YAML: dump: y type: str YAML::Syck: dump: '''y''' type: str YAML::XS: dump: y type: str '!!str yes': YAML: dump: yes type: str YAML::Syck: dump: '''yes''' type: str YAML::XS: dump: yes type: str '!!str ~': YAML: dump: '''~''' type: str YAML::Syck: dump: '''~''' type: str YAML::XS: dump: '''~''' type: str '" "': YAML: dump: ''' ''' type: str YAML::Syck: dump: '" "' type: str YAML::XS: dump: ''' ''' type: str '"!string"': YAML: dump: '''!string''' type: str YAML::Syck: dump: '"!string"' type: str YAML::XS: dump: '''!string''' type: str '"# "': YAML: dump: '''# ''' type: str YAML::Syck: dump: '"# "' type: str YAML::XS: dump: '''# ''' type: str '"#"': YAML: dump: '''#''' type: str YAML::Syck: dump: '"#"' type: str YAML::XS: dump: '''#''' type: str '"%percent"': YAML: dump: '''%percent''' type: str YAML::Syck: dump: '"%percent"' type: str YAML::XS: dump: '''%percent''' type: str '"''"': YAML: dump: '"''"' type: str YAML::Syck: dump: '"''"' type: str YAML::XS: dump: '''''''''' type: str '"*string"': YAML: dump: '''*string''' type: str YAML::Syck: dump: '"*string"' type: str YAML::XS: dump: '''*string''' type: str '","': YAML: dump: ''',''' type: str YAML::Syck: dump: '","' type: str YAML::XS: dump: ''',''' type: str '"- "': YAML: dump: '''- ''' type: str YAML::Syck: dump: '"- "' type: str YAML::XS: dump: '''- ''' type: str '"- a"': YAML: dump: '''- a''' type: str YAML::Syck: dump: '"- a"' type: str YAML::XS: dump: '''- a''' type: str '"-"': YAML: dump: '''-''' type: str YAML::Syck: dump: '"-"' type: str YAML::XS: dump: '''-''' type: str '"-\n"': YAML: dump: '"-\n"' type: str YAML::Syck: dump: '"-\n"' type: str YAML::XS: dump: |- '- ' type: str '"-\t"': YAML: dump: "'-\t'" type: str YAML::Syck: dump: '"-\t"' type: str YAML::XS: dump: '"-\t"' type: str '":"': YAML: dump: ''':''' type: str YAML::Syck: dump: '":"' type: str YAML::XS: dump: ''':''' type: str '">"': YAML: dump: '''>''' type: str YAML::Syck: dump: '">"' type: str YAML::XS: dump: '''>''' type: str '"? "': YAML: dump: '''? ''' type: str YAML::Syck: dump: '"? "' type: str YAML::XS: dump: '''? ''' type: str '"? a"': YAML: dump: '''? a''' type: str YAML::Syck: dump: '"? a"' type: str YAML::XS: dump: '''? a''' type: str '"?"': YAML: dump: '''?''' type: str YAML::Syck: dump: '"?"' type: str YAML::XS: dump: '''?''' type: str '"@array"': YAML: dump: '''@array''' type: str YAML::Syck: dump: '"@array"' type: str YAML::XS: dump: '''@array''' type: str '"["': YAML: dump: '''[''' type: str YAML::Syck: dump: '"["' type: str YAML::XS: dump: '''[''' type: str '"\""': YAML: dump: '''"''' type: str YAML::Syck: dump: '"\""' type: str YAML::XS: dump: '''"''' type: str '"]"': YAML: dump: ''']''' type: str YAML::Syck: dump: '"]"' type: str YAML::XS: dump: ''']''' type: str '"`cmd`"': YAML: dump: '''`cmd`''' type: str YAML::Syck: dump: '"`cmd`"' type: str YAML::XS: dump: '''`cmd`''' type: str '"foo\nbar"': YAML: dump: '"foo\nbar"' type: str YAML::Syck: dump: '"foo\nbar"' type: str YAML::XS: dump: '"foo\nbar"' type: str '"key: val"': YAML: dump: '''key: val''' type: str YAML::Syck: dump: '"key: val"' type: str YAML::XS: dump: '''key: val''' type: str '"no #comment"': YAML: dump: '''no #comment''' type: str YAML::Syck: dump: '"no #comment"' type: str YAML::XS: dump: '''no #comment''' type: str '"no comment #"': YAML: dump: '''no comment #''' type: str YAML::Syck: dump: '"no comment #"' type: str YAML::XS: dump: '''no comment #''' type: str '"no comment#"': YAML: dump: no comment# type: str YAML::Syck: dump: no comment# type: str YAML::XS: dump: no comment# type: str '"string "': YAML: dump: '''string ''' type: str YAML::Syck: dump: '"string "' type: str YAML::XS: dump: '''string ''' type: str '"string:"': YAML: dump: '''string:''' type: str YAML::Syck: dump: '"string:"' type: str YAML::XS: dump: '''string:''' type: str '"string\r"': YAML: dump: '"string\r"' type: str YAML::Syck: dump: "string\r" type: str YAML::XS: dump: '"string\r"' type: str '"string\t"': YAML: dump: "'string\t'" type: str YAML::Syck: dump: '"string\t"' type: str YAML::XS: dump: '"string\t"' type: str '"x\n\"y\\z"': YAML: dump: '"x\n\"y\\z"' type: str YAML::Syck: dump: '"x\n\"y\\z"' type: str YAML::XS: dump: '"x\n\"y\\z"' type: str '"{"': YAML: dump: '''{''' type: str YAML::Syck: dump: '"{"' type: str YAML::XS: dump: '''{''' type: str '"|"': YAML: dump: '''|''' type: str YAML::Syck: dump: '"|"' type: str YAML::XS: dump: '''|''' type: str '"}"': YAML: dump: '''}''' type: str YAML::Syck: dump: '"}"' type: str YAML::XS: dump: '''}''' type: str '#empty': YAML: dump: '''''' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '+.INF': YAML: dump: '+.INF' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '+.INF' type: str '+.Inf': YAML: dump: '+.Inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '+.Inf' type: str '+.inf': YAML: dump: '+.inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '+.inf' type: str '+0': YAML: dump: '+0' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '+0' type: int '+0.3e+3': YAML: dump: '+0.3e+3' type: str YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '+0.3e+3' type: float '+0.3e3': YAML: dump: '+0.3e3' type: str YAML::Syck: dump: '''+0.3e3''' type: str YAML::XS: dump: '+0.3e3' type: float +0100_200: YAML: dump: +0100_200 type: str YAML::Syck: dump: +0100_200 type: str YAML::XS: dump: +0100_200 type: str +0b100: YAML: dump: +0b100 type: str YAML::Syck: dump: +0b100 type: str YAML::XS: dump: +0b100 type: str +190:20:30: YAML: dump: +190:20:30 type: str YAML::Syck: dump: '685230' type: int YAML::XS: dump: +190:20:30 type: str '+23': YAML: dump: '+23' type: str YAML::Syck: dump: '23' type: int YAML::XS: dump: '+23' type: int '+3.14': YAML: dump: '+3.14' type: str YAML::Syck: dump: '''3.14''' type: float YAML::XS: dump: '+3.14' type: float '-.INF': YAML: dump: '-.INF' type: str YAML::Syck: dump: '''-Inf''' type: inf YAML::XS: dump: '-.INF' type: str '-.Inf': YAML: dump: '-.Inf' type: str YAML::Syck: dump: '''-Inf''' type: inf YAML::XS: dump: '-.Inf' type: str '-.inf': YAML: dump: '-.inf' type: str YAML::Syck: dump: '''-Inf''' type: inf YAML::XS: dump: '-.inf' type: str '-0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: int YAML::XS: dump: '-0' type: int -0100_200: YAML: dump: -0100_200 type: str YAML::Syck: dump: -0100_200 type: str YAML::XS: dump: -0100_200 type: str -0b101: YAML: dump: -0b101 type: str YAML::Syck: dump: -0b101 type: str YAML::XS: dump: -0b101 type: str -0x30: YAML: dump: -0x30 type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: -0x30 type: str -190:20:30: YAML: dump: -190:20:30 type: str YAML::Syck: dump: '''18446744073708868846''' type: int YAML::XS: dump: -190:20:30 type: str '-23': YAML: dump: '-23' type: int YAML::Syck: dump: '-23' type: int YAML::XS: dump: '-23' type: int '-3.14': YAML: dump: '-3.14' type: float YAML::Syck: dump: '''-3.14''' type: float YAML::XS: dump: '-3.14' type: float '.0': YAML: dump: '0' type: float YAML::Syck: dump: '.0' type: str YAML::XS: dump: '.0' type: float '.14': YAML: dump: '0.14' type: float YAML::Syck: dump: '.14' type: str YAML::XS: dump: '.14' type: float '.3E-1': YAML: dump: '0.03' type: float YAML::Syck: dump: '''.3E-1''' type: str YAML::XS: dump: '.3E-1' type: float '.3e+3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e+3''' type: str YAML::XS: dump: '.3e+3' type: float '.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e3''' type: str YAML::XS: dump: '.3e3' type: float '.INF': YAML: dump: '.INF' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '.INF' type: str '.Inf': YAML: dump: '.Inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '.Inf' type: str '.NAN': YAML: dump: '.NAN' type: str YAML::Syck: dump: '''NaN''' type: nan YAML::XS: dump: '.NAN' type: str '.NaN': YAML: dump: '.NaN' type: str YAML::Syck: dump: '''NaN''' type: nan YAML::XS: dump: '.NaN' type: str '.inf': YAML: dump: '.inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '.inf' type: str '.nan': YAML: dump: '.nan' type: str YAML::Syck: dump: '''NaN''' type: nan YAML::XS: dump: '.nan' type: str '0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: int YAML::XS: dump: '0' type: int '0.0': YAML: dump: '0' type: float YAML::Syck: dump: '''0''' type: float YAML::XS: dump: '0.0' type: float '0.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''0.3e3''' type: str YAML::XS: dump: '0.3e3' type: float '00': YAML: dump: '00' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '00' type: int '001.23': YAML: dump: '001.23' type: str YAML::Syck: dump: '''1.23''' type: float YAML::XS: dump: '001.23' type: float '0011': YAML: dump: '0011' type: str YAML::Syck: dump: '9' type: int YAML::XS: dump: '0011' type: int '010': YAML: dump: '010' type: str YAML::Syck: dump: '8' type: int YAML::XS: dump: '010' type: int 02_0: YAML: dump: 02_0 type: str YAML::Syck: dump: 02_0 type: str YAML::XS: dump: 02_0 type: str '07': YAML: dump: '07' type: str YAML::Syck: dump: '7' type: int YAML::XS: dump: '07' type: int '08': YAML: dump: '08' type: str YAML::Syck: dump: '''08''' type: str YAML::XS: dump: '08' type: int 0b0: YAML: dump: 0b0 type: str YAML::Syck: dump: 0b0 type: str YAML::XS: dump: 0b0 type: str 0b100_101: YAML: dump: 0b100_101 type: str YAML::Syck: dump: 0b100_101 type: str YAML::XS: dump: 0b100_101 type: str '0o0': YAML: dump: '0o0' type: str YAML::Syck: dump: '0o0' type: str YAML::XS: dump: '0o0' type: str '0o10': YAML: dump: '0o10' type: str YAML::Syck: dump: '0o10' type: str YAML::XS: dump: '0o10' type: str '0o7': YAML: dump: '0o7' type: str YAML::Syck: dump: '0o7' type: str YAML::XS: dump: '0o7' type: str '0x0': YAML: dump: '0x0' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '0x0' type: str '0x10': YAML: dump: '0x10' type: str YAML::Syck: dump: '16' type: int YAML::XS: dump: '0x10' type: str 0x2_0: YAML: dump: 0x2_0 type: str YAML::Syck: dump: 0x2_0 type: str YAML::XS: dump: 0x2_0 type: str '0x42': YAML: dump: '0x42' type: str YAML::Syck: dump: '66' type: int YAML::XS: dump: '0x42' type: str '0xa': YAML: dump: '0xa' type: str YAML::Syck: dump: '10' type: int YAML::XS: dump: '0xa' type: str 100_000: YAML: dump: 100_000 type: str YAML::Syck: dump: 100_000 type: str YAML::XS: dump: 100_000 type: str 190:20:30: YAML: dump: 190:20:30 type: str YAML::Syck: dump: '685230' type: int YAML::XS: dump: 190:20:30 type: str 190:20:30.15: YAML: dump: 190:20:30.15 type: str YAML::Syck: dump: '''685230.15''' type: float YAML::XS: dump: 190:20:30.15 type: str '23': YAML: dump: '23' type: int YAML::Syck: dump: '23' type: int YAML::XS: dump: '23' type: int '3.14': YAML: dump: '3.14' type: float YAML::Syck: dump: '''3.14''' type: float YAML::XS: dump: '3.14' type: float '3.3e+3': YAML: dump: '3300' type: int YAML::Syck: dump: '''3300''' type: float YAML::XS: dump: '3.3e+3' type: float '3e3': YAML: dump: '3000' type: int YAML::Syck: dump: '''3e3''' type: str YAML::XS: dump: '3e3' type: float 85.230_15e+03: YAML: dump: 85.230_15e+03 type: str YAML::Syck: dump: 85.230_15e+03 type: str YAML::XS: dump: 85.230_15e+03 type: str 85_230.15: YAML: dump: 85_230.15 type: str YAML::Syck: dump: 85_230.15 type: str YAML::XS: dump: 85_230.15 type: str 'FALSE': YAML: dump: 'FALSE' type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: 'FALSE' type: str 'False': YAML: dump: 'False' type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: 'False' type: str N: YAML: dump: N type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: N type: str NO: YAML: dump: NO type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: NO type: str 'NULL': YAML: dump: 'NULL' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: 'NULL' type: str 'Null': YAML: dump: 'Null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: 'Null' type: str OFF: YAML: dump: OFF type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: OFF type: str ON: YAML: dump: ON type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: ON type: str Off: YAML: dump: Off type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: Off type: str On: YAML: dump: On type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: On type: str 'TRUE': YAML: dump: 'TRUE' type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: 'TRUE' type: str 'True': YAML: dump: 'True' type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: 'True' type: str Y: YAML: dump: Y type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: Y type: str YES: YAML: dump: YES type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: YES type: str Yes: YAML: dump: Yes type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: Yes type: str ^string: YAML: dump: '''^string''' type: str YAML::Syck: dump: '"^string"' type: str YAML::XS: dump: ^string type: str 'false': YAML: dump: 'false' type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: 'false' type: bool foo\bar: YAML: dump: foo\bar type: str YAML::Syck: dump: foo\bar type: str YAML::XS: dump: foo\bar type: str n: YAML: dump: n type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: n type: str no: YAML: dump: no type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: no type: str 'null': YAML: dump: 'null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' off: YAML: dump: off type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: off type: str on: YAML: dump: on type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: on type: str str"ing: YAML: dump: str"ing type: str YAML::Syck: dump: str"ing type: str YAML::XS: dump: str"ing type: str 'true': YAML: dump: 'true' type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: 'true' type: bool y: YAML: dump: y type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: y type: str yes: YAML: dump: yes type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: yes type: str '~': YAML: dump: '~' type: 'null' YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' YAML-PP-v0.38.0/examples/schemas.pl0000644000175000017500000000102214556031647015323 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use FindBin '$Bin'; use lib "$Bin/../lib"; use YAML::PP; my $tests_perl = require "$Bin/schema-perl.pm"; my $tests_ixhash = require "$Bin/schema-ixhash.pm"; my %tests = ( %$tests_perl, %$tests_ixhash, ); my %all_data; for my $name (sort keys %tests) { my $test = $tests{ $name }; my $data = eval $test->[0]; $all_data{ $name } = $data; } my $yp = YAML::PP->new( schema => [qw/ JSON Perl Tie::IxHash /] ); my $yaml = $yp->dump_string(\%all_data); print $yaml; YAML-PP-v0.38.0/examples/schema-perl.pm0000644000175000017500000000543314556031647016113 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; my %tests = ( hash => [ <<'EOM', { U => 2, B => 52, } EOM <<'EOM', --- - &1 !perl/hash B: 52 U: 2 - *1 EOM { load_only => 1 }, ], hash_blessed => [ <<'EOM', bless { U => 2, B => 52, }, 'A::Very::Exclusive::Class' EOM <<'EOM', --- - &1 !perl/hash:A::Very::Exclusive::Class B: 52 U: 2 - *1 EOM ], array => [ <<'EOM', [ qw/ one two three four / ] EOM <<'EOM', --- - &1 !perl/array - one - two - three - four - *1 EOM { load_only => 1 }, ], array_blessed => [ <<'EOM', bless [ qw/ one two three four / ], "Just::An::Arrayref" EOM <<'EOM', --- - &1 !perl/array:Just::An::Arrayref - one - two - three - four - *1 EOM ], regexp => [ <<'EOM', my $string = 'unblessed'; qr{$string} EOM <<"EOM", --- - &1 !perl/regexp unblessed - *1 EOM ], regexp_blessed => [ <<'EOM', my $string = 'blessed'; bless qr{$string}, "Foo" EOM <<"EOM", --- - &1 !perl/regexp:Foo blessed - *1 EOM ], circular => [ <<'EOM', my $circle = bless [ 1, 2 ], 'Circle'; push @$circle, $circle; $circle; EOM <<'EOM', --- - &1 !perl/array:Circle - 1 - 2 - *1 - *1 EOM ], coderef => [ <<'EOM', sub { my (%args) = @_; return $args{x} + $args{y}; } EOM qr{- &1 !{1,2}perl/code \|-.*return.*args.*x.*\+.*y}s, { load_code => 1 }, ], coderef_blessed => [ <<'EOM', bless sub { my (%args) = @_; return $args{x} - $args{y}; }, "I::Am::Code" EOM qr{- &1 !{1,2}perl/code:I::Am::Code \|-.*return.*args.*x.*\-.*y}s, { load_code => 1 }, ], scalarref => [ <<'EOM', my $scalar = "some string"; my $scalarref = \$scalar; $scalarref; EOM <<'EOM', --- - &1 !perl/scalar =: some string - *1 EOM ], scalarref_blessed => [ <<'EOM', my $scalar = "some other string"; my $scalarref = bless \$scalar, 'Foo'; $scalarref; EOM <<'EOM', --- - &1 !perl/scalar:Foo =: some other string - *1 EOM ], refref => [ <<'EOM', my $ref = { a => 'hash' }; my $refref = \$ref; $refref; EOM <<'EOM', --- - &1 !perl/ref =: a: hash - *1 EOM ], refref_blessed => [ <<'EOM', my $ref = { a => 'hash' }; my $refref = bless \$ref, 'Foo'; $refref; EOM <<'EOM', --- - &1 !perl/ref:Foo =: a: hash - *1 EOM ], ); \%tests; YAML-PP-v0.38.0/examples/schema-ixhash.pm0000644000175000017500000000205114556031647016426 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; ### TEST DATA ### my %tests = ( ### - Ordered Hashref (Tie::IxHash) order => [ <<'EOM', tie(my %order, 'Tie::IxHash'); %order = ( U => 2, B => 52, c => 64, 19 => 84, Disco => 2000, Year => 2525, days_on_earth => 20_000, ); \%order; EOM <<'EOM', --- - &1 U: 2 B: 52 c: 64 19: 84 Disco: 2000 Year: 2525 days_on_earth: 20000 - *1 EOM ], ### - Blessed Ordered Hashref order_blessed => [ <<'EOM', tie(my %order, 'Tie::IxHash'); %order = ( U => 2, B => 52, c => 64, 19 => 84, Disco => 2000, Year => 2525, days_on_earth => 20_000, ); bless \%order, 'Order'; EOM <<'EOM', --- - &1 !perl/hash:Order U: 2 B: 52 c: 64 19: 84 Disco: 2000 Year: 2525 days_on_earth: 20000 - *1 EOM ], ); ### TEST DATA END ### \%tests; YAML-PP-v0.38.0/README.md0000644000175000017500000000075614556031647013021 0ustar tinatina# Perl module YAML::PP YAML::PP is a modular YAML processor for YAML 1.2. Additionally to loading and dumping it provides a parser and emitter. The parsing events are compatible to the [YAML Test Suite](https://github.com/yaml/yaml-test-suite) and other libraries like [libyaml](https://github.com/yaml/libyaml). Loading and Dumping can be customized. It supports the YAML 1.2 Failsafe, JSON and Core Schemas. You can find the full documentation here: https://metacpan.org/release/YAML-PP YAML-PP-v0.38.0/Makefile.PL0000644000175000017500000000420414556031647013504 0ustar tinatina# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.030. use strict; use warnings; use 5.008000; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "YAML 1.2 Processor", "AUTHOR" => "Tina M\x{fc}ller ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "YAML-PP", "EXE_FILES" => [ "bin/yamlpp-events", "bin/yamlpp-highlight", "bin/yamlpp-load", "bin/yamlpp-load-dump", "bin/yamlpp-parse-emit" ], "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.008000", "NAME" => "YAML::PP", "PREREQ_PM" => { "B" => 0, "B::Deparse" => 0, "Carp" => 0, "Data::Dumper" => 0, "Encode" => 0, "Exporter" => 0, "File::Basename" => 0, "Getopt::Long" => 0, "MIME::Base64" => 0, "Module::Load" => 0, "Scalar::Util" => "1.07", "Tie::Array" => 0, "Tie::Hash" => 0, "base" => 0, "constant" => 0, "overload" => 0, "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "File::Spec" => 0, "FindBin" => 0, "IO::File" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::More" => "0.98", "Test::Warn" => 0, "lib" => 0 }, "VERSION" => "v0.38.0", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "B" => 0, "B::Deparse" => 0, "Carp" => 0, "Data::Dumper" => 0, "Encode" => 0, "Exporter" => 0, "File::Basename" => 0, "File::Spec" => 0, "FindBin" => 0, "Getopt::Long" => 0, "IO::File" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "MIME::Base64" => 0, "Module::Load" => 0, "Scalar::Util" => "1.07", "Test::More" => "0.98", "Test::Warn" => 0, "Tie::Array" => 0, "Tie::Hash" => 0, "base" => 0, "constant" => 0, "lib" => 0, "overload" => 0, "strict" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); YAML-PP-v0.38.0/etc/0000755000175000017500000000000014556031647012305 5ustar tinatinaYAML-PP-v0.38.0/etc/generate-examples.pl0000644000175000017500000000262714556031647016257 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use FindBin '$Bin'; use lib "$Bin/../lib"; use YAML::PP; my $tests_perl = require "$Bin/../examples/schema-perl.pm"; my $tests_ixhash = require "$Bin/../examples/schema-ixhash.pm"; my $schema_perl_pm_file = "$Bin/../lib/YAML/PP/Schema/Perl.pm"; my $schema_ixhash_pm_file = "$Bin/../lib/YAML/PP/Schema/Tie/IxHash.pm"; my $yp = YAML::PP->new( schema => [qw/ JSON Perl Tie::IxHash /] ); generate( file => $schema_perl_pm_file, tests => $tests_perl, ); generate( file => $schema_ixhash_pm_file, tests => $tests_ixhash, ); sub generate { my %args = @_; my $file = $args{file}; my $tests = $args{tests}; open my $fh, '<', $file; my $text = do { local $/; <$fh> }; close $fh; my $examples; for my $name (sort keys %$tests) { my $test = $tests->{ $name }; my $code = $test->[0]; my $data = eval $code; if ($@) { die "Error: $@"; } my $yaml = $yp->dump_string($data); $yaml =~ s/^/ /gm; my $example = <<"EOM"; =item $name # Code $code # YAML $yaml EOM $examples .= $example; } my $pod = <<"EOM"; ### BEGIN EXAMPLE =pod =over 4 $examples =back =cut ### END EXAMPLE EOM $text =~ s/^### BEGIN EXAMPLE.*^### END EXAMPLE\n/$pod/ms; open $fh, '>', $file; print $fh $text; close $fh; } YAML-PP-v0.38.0/etc/test-suite-html.pl0000755000175000017500000002333314556031647015721 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use FindBin '$Bin'; use lib "$Bin/../lib"; use IO::All; use Data::Dumper; use YAML::PP; use YAML::PP::Dumper; use File::Basename qw/ basename dirname /; use HTML::Entities qw/ encode_entities /; use YAML::PP::Highlight; use JSON::XS (); use Encode; chomp(my $version = qx{git describe --dirty}); my $yaml_test_suite = 'test-suite/yaml-test-suite-data/'; my @dirs = grep { m{/[0-9A-Z]{4}$} } map { "$_" } io->dir($yaml_test_suite)->all; my @subdirs; for my $dir (@dirs) { if (-f "$dir/in.yaml") { push @subdirs, $dir; } else { push @subdirs, grep { m{/[0-9]+$} } map { "$_" } io->dir($dir)->all; } } @subdirs = sort @subdirs; my @valid = grep { not -f "$_/error" } @subdirs; my @invalid = grep { -f "$_/error" } @subdirs; my %tags; for my $tagdir (io->dir("$yaml_test_suite/tags")->all) { for my $id (io->dir($tagdir)->all) { my $tag = basename $tagdir; push @{ $tags{ basename $id } }, basename $tag; } } my $html = <<"EOM"; YAML Test Suite Highlighted YAML Test Suite Test Cases | Schema examples | Schema comparison
Generated with YAML::PP $version
Valid (@{[ scalar @valid ]})
Invalid (@{[ scalar @invalid ]})
EOM my $ypp = YAML::PP->new( boolean => 'JSON::PP', schema => [qw/ Core /], ); my $table; for my $dir (sort @valid) { my $test = highlight_test($dir); $table .= $test; } $html .= <<"EOM";

Valid

$table
YAML::PP::Highlight YAML::PP::Loader | Data::Dump YAML::PP::Loader | JSON::XS YAML::PP::Loader | YAML::PP::Dumper YAML::PP::Parser | YAML::PP::Emitter
EOM $table = ''; for my $dir (sort @invalid) { my $test = highlight_test($dir); $table .= $test; } $html .= <<"EOM";

Invalid

$table
YAML::PP::Highlight YAML::PP::Loader | Data::Dump YAML::PP::Loader | JSON::XS YAML::PP::Loader | YAML::PP::Dumper YAML::PP::Parser | YAML::PP::Emitter
EOM sub highlight_test { my ($dir) = @_; my $html; my $file = "$dir/in.yaml"; my $id = basename $dir; my $main_id = $id; if ($id !~ tr/0-9//c) { $main_id = basename(dirname $dir); $id = "$main_id/$id"; } my $title = io->file("$dir/===")->slurp; my $yaml; warn "$id\n"; $yaml = do { open my $fh, '<', $file or die $!; local $/; <$fh> }; $yaml = decode_utf8 $yaml; my $class = "ok"; my @docs; eval { @docs = $ypp->load_string($yaml); }; my $error = $@ || ''; my $tokens = $ypp->loader->parser->tokens; my $diff = 0; if ($error) { $error =~ s{\Q$Bin/../lib/}{}; $class = "error"; my $remaining_tokens = $ypp->loader->parser->_remaining_tokens; push @$tokens, map { +{ %$_, name => 'ERROR' } } @$remaining_tokens; my $out = join '', map { my $value = $_->{value}; my $sub = $_->{subtokens}; if ($sub) { $value = join '', map { defined $_->{orig} ? $_->{orig} : $_->{value} } @$sub; } $value; } @$tokens; if ($out ne $yaml) { local $Data::Dumper::Useqq = 1; warn __PACKAGE__.': '.__LINE__.$".Data::Dumper->Dump([\$out], ['out']); warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$yaml], ['yaml']); warn "$id error diff"; $diff = 1; } } else { my $out = join '', map { my $value = $_->{value}; my $sub = $_->{subtokens}; if ($sub) { $value = join '', map { defined $_->{orig} ? $_->{orig} : $_->{value} } @$sub; } $value; } @$tokens; if ($out ne $yaml) { $class = "diff"; local $Data::Dumper::Useqq = 1; warn __PACKAGE__.': '.__LINE__.$".Data::Dumper->Dump([\$out], ['out']); warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$yaml], ['yaml']); warn "$id diff"; $diff = 1; } } my $coder = JSON::XS->new->ascii->pretty->allow_nonref->canonical; my $json_dump = join "\n", map { "Doc " . ($_+1) . ': ' . $coder->encode( $docs[ $_ ] ); } 0 .. $#docs; my $yppd = YAML::PP->new( boolean => 'JSON::PP' ); my $yaml_dump = $yppd->dump_string(@docs); my @reload_docs = $ypp->load_string($yaml_dump); my $reload_tokens = $ypp->loader->parser->tokens; my $dd = eval { require Data::Dump; 1 }; my $data_dump = join "\n", map { if ($dd) { '$doc' . ($_ + 1) . ' = ' . Data::Dump::dump( $docs[ $_ ] ); } else { local $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys = 1; Data::Dumper->Dump([$docs[ $_ ]], ['doc' . ($_ + 1)]); } } 0 .. $#docs; my $emit_yaml = ''; { my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; push @events, [@args]; }, ); eval { $parser->parse_string($yaml); }; if ($@) { # warn "Error parsing: $@"; } else { my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new(); $emitter->set_writer($writer); eval { for my $event (@events) { my ($type, $info) = @$event; if ($type eq 'sequence_start_event' or $type eq 'mapping_end_event') { delete $info->{style}; } $emitter->$type($info); } }; if ($@) { warn __PACKAGE__.':'.__LINE__.": Error emitting $id: $@\n"; } $emit_yaml = $emitter->writer->output; } } my @emit_docs = eval { $ypp->load_string($emit_yaml) }; my $emit_tokens = $ypp->loader->parser->tokens; $title = decode_utf8($title); $title = encode_entities($title); $error =~ s{\Q$Bin/../lib/}{}g; $error = encode_entities($error); $yaml = encode_entities($yaml); $data_dump = encode_entities($data_dump); $json_dump = encode_entities($json_dump); $yaml_dump = encode_entities($yaml_dump); my $taglist = join ', ', @{ $tags{ $id } || [] }; $html .= <<"EOM"; $id - $title Tags:
$taglist
View source
EOM my $high = YAML::PP::Highlight->htmlcolored($tokens); my $reload_high = YAML::PP::Highlight->htmlcolored($reload_tokens); my $emit_high = YAML::PP::Highlight->htmlcolored($emit_tokens); my $orig = $diff ? qq{
$yaml
} : ''; $html .= <<"EOM";
$high
$error
$orig
$data_dump
$json_dump
$reload_high
$emit_high
EOM return $html; } $html .= <<"EOM"; EOM binmode STDOUT, ":encoding(utf-8)"; say $html; YAML-PP-v0.38.0/etc/yaml-numbers.pl0000644000175000017500000000216714556031647015263 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use YAML (); local $YAML::Numify = 1; use YAML::PP (); use YAML::XS (); use YAML::Syck (); local $YAML::Syck::ImplicitTyping = 1; use YAML::Tiny (); use B (); use Text::Table; my @classes = qw/ YAML YAML::PP YAML::XS YAML::Syck YAML::Tiny /; my $t = Text::Table->new( qw/ Class Version 3 IV NV PV 3.140 IV NV PV 3.00 IV NV PV 0.3e3 IV NV PV Dump /, ); my $yaml = <<'EOM'; - 3 - 3.140 - 3.00 - 0.3e3 EOM my @rows; for my $class (@classes) { my $version = $class->VERSION; my @row = ( $class, $version ); my $decode = $class->can("Load"); my $encode = $class->can("Dump"); my $data = $decode->($yaml); for my $num (@$data) { my $flags = B::svref_2object(\$num)->FLAGS; my $int = $flags & B::SVp_IOK ? 1 : 0; my $float = $flags & B::SVp_NOK ? 1 : 0; my $str = $flags & B::SVp_POK ? 1 : 0; push @row, '', $int, $float, $str; } my $enc = $encode->($data); push @row, $enc; push @rows, \@row; } say "Input:\n$yaml"; $t->load(@rows); say $t; YAML-PP-v0.38.0/etc/generate-schema-html.pl0000644000175000017500000001326414556031647016642 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use Data::Dumper; use FindBin '$Bin'; use lib "$Bin/../lib"; use YAML::PP; use URI::Escape qw/ uri_escape /; my $file = "$Bin/../ext/yaml-test-schema/yaml-schema.yaml"; my $modulesfile = "$Bin/../examples/yaml-schema-modules.yaml"; my $htmlfile = "$Bin/../gh-pages/schema-examples.html"; my $data = YAML::PP::LoadFile($file); my $modules = YAML::PP::LoadFile($modulesfile); my @mods = qw/ YAML YAML::Syck YAML::XS /; my %examples; for my $input (sort keys %$data) { my $schemas = $data->{ $input }; my @keys = keys %$schemas; for my $key (@keys) { my $def = $schemas->{ $key }; my @schemas = split m/ *, */, $key; for my $schema (@schemas) { $examples{ $input }->{ $schema } = $def; } } } my @keys = qw/ failsafe json core yaml11 /; for my $input (sort keys %examples) { my $schemas = $examples{ $input }; my $str = 0; for my $schema (@keys) { my $example = $schemas->{ $schema }; unless ($example) { $example = $schemas->{ $schema } = [ 'todo', '', '', '' ]; } if ($example->[0] eq 'str' or $example->[0] eq 'todo') { $str++; } } if ($str == 4) { delete $examples{ $input }; } } my %type_index = ( null => 0, bool => 1, float => 2, inf => 3, nan => 4, int => 5, str => 6, todo => 7, ); my $table = schema_table(\%examples, $modules); my $html = generate_html($table); open my $fh, '>', $htmlfile or die $!; print $fh $html; close $fh; sub sort_rows { my ($x, $y, $a, $b) = @_; $type_index{ $x->{yaml11}->[0] } <=> $type_index{ $y->{yaml11}->[0] } || $type_index{ $x->{core}->[0] } <=> $type_index{ $y->{core}->[0] } || $type_index{ $x->{json}->[0] } <=> $type_index{ $y->{json}->[0] } || lc $a cmp lc $b || $a cmp $b } sub schema_table { my ($examples) = @_; my $html = ''; my @sorted = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { not m/^!!\w/ } keys %$examples; my @sorted_explicit = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { m/^!!\w/ } keys %$examples; my @all = (@sorted, @sorted_explicit); $html .= qq{\n}; my $header; $header .= qq{}; $header .= join '', map { my $m = $_ eq 'YAML' ? 'YAML.pm' : $_; qq{\n}; } (qw/ Failsafe JSON Core /, 'YAML 1.1', @mods); $header .= qq{\n}; $html .= $header; $html .= qq{} . (qq{} x 7) . qq{\n}; for my $i (0 .. $#all) { my $input = $all[ $i ]; if ($i and $i % 30 == 0) { $html .= $header; } my $schemas = $examples->{ $input }; my $mods = $modules->{ $input }; my $input_escaped = uri_escape($input); $input =~ s/ / /g; $html .= qq{}; } else { $html .= qq{}; } } $html .= qq{\n}; } $html .= "
YAML::PPOther Perl Modules
Input YAML$m
TypeOutput
$input}; for my $mod (@mods) { my $result = $mods->{ $mod }; $schemas->{ $mod } = [ $result->{type}, '', $result->{dump} // '' ]; } for my $schema (@keys, @mods) { my $example = $schemas->{ $schema }; my $class = 'type-str'; my ($type, $perl, $out) = @$example; $class = "type-$type"; for ($out) { s/ / /g; } if ($type eq 'str') { $html .= qq{$type$type
$out
"; return $html; } #sub format_perl { # my ($type, $perl) = @_; # my $perlcode; # local $Data::Dumper::Terse = 1; # local $Data::Dumper::Useqq = 1; # if ($type eq 'null') { # $perlcode = 'undef'; # } # elsif ($type eq 'float' or $type eq 'int') { # $perlcode = $perl; # } # elsif ($type eq 'inf') { # if ($perl eq 'inf-neg()') { # $perlcode = '- "inf" + 0'; # } # else { # $perlcode = '"inf" + 0'; # } # } # elsif ($type eq 'nan') { # $perlcode = '"nan" + 0'; # } # elsif ($type eq 'bool') { # $perlcode = $perl; # } # else { # $perlcode = Data::Dumper->Dump([$perl], ['perl']); # } # return $perlcode; #} sub generate_html { my ($content) = @_; my $html = <<'EOM'; YAML Schema examples in YAML::PP and other Perl Modules YAML Test Suite Test Cases | Schema examples | Schema comparison

The Perl Module YAML::PP implements YAML 1.2. You can choose between several Schemas.
The following table shows which strings result in which native data, depending on the Schema (or other YAML module) you use.
For each of the Schemas and modules, the first column is the type, and the second shows how the data is encoded into YAML again.
Note that the YAML 1.2 JSON Schema is not exactly like the official schema, as all strings would have to be quoted.

EOM $html .= $content; $html .= <<'EOM'; EOM return $html; } YAML-PP-v0.38.0/etc/schema-test-yaml-modules.pl0000644000175000017500000000342214556031647017466 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use Data::Dumper; use FindBin '$Bin'; use lib "$Bin/../lib"; use YAML::PP; use JSON::PP; $YAML::XS::Boolean = 'JSON::PP'; use YAML::XS (); $YAML::Syck::ImplicitTyping = 1; use YAML::Syck (); $YAML::Numify = 1; use YAML (); use B; my $int_flags = B::SVp_IOK; my $float_flags = B::SVp_NOK; #my $yp = YAML::PP->new( schema => my $file = "$Bin/../ext/yaml-test-schema/yaml-schema.yaml"; my $outputfile = "$Bin/../examples/yaml-schema-modules.yaml"; my $data = YAML::PP::LoadFile($file); my %examples; my %output; my %special = ( (0+'nan').'' => 'nan', (0+'inf').'' => 'inf', (0-'inf').'' => 'inf' ); for my $input (sort keys %$data) { for my $mod (qw/ YAML YAML::XS YAML::Syck /) { my $out = $output{ $input }->{ $mod } ||= {}; my $output; my $load = $mod->can("Load"); my $dump = $mod->can("Dump"); my $data = eval { $load->("--- $input") }; if ($@) { $out->{error} = 1; $out->{type} = 'error'; } else { $out->{type} = get_type($data); $output = $dump->($data); chomp $output; $output =~ s/^--- //; $out->{dump} = $output; } } } YAML::PP::DumpFile($outputfile, \%output); sub get_type { my ($value) = @_; return 'null' unless defined $value; if (ref $value) { if (ref $value eq 'JSON::PP::Boolean') { return 'bool'; } return 'unknown'; } my $flags = B::svref_2object(\$value)->FLAGS; if ($flags & $float_flags) { if (exists $special{ $value }) { return $special{ $value }; } return 'float'; } if ($flags & $int_flags) { return 'int'; } return 'str'; } YAML-PP-v0.38.0/etc/generate-grammar.pl0000755000175000017500000000312214556031647016061 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use FindBin '$Bin'; use Data::Dumper; use YAML::XS qw/ Load Dump /; my $grammar_file = "$Bin/grammar.yaml"; open my $fh, '<', $grammar_file or die $!; my $yaml = do { local $/; <$fh> }; close $fh; my $module_file = "$Bin/../lib/YAML/PP/Grammar.pm"; my $grammar = Load $yaml; open $fh, '<', $module_file or die $!; my $replaced = ''; while (my $line = <$fh>) { my $state = $line =~ m/^# START OF GRAMMAR INLINE/ ... $line =~ m/^# END OF GRAMMAR INLINE/; my $state2 = $line =~ m/^ *# START OF YAML INLINE/ ... $line =~ m/^ *# END OF YAML INLINE/; if ($state) { if ($state == 1) { $replaced .= $line; local $Data::Dumper::Indent = 1; local $Data::Dumper::Sortkeys = 1; my $dump = Data::Dumper->Dump([$grammar], ['GRAMMAR']); $replaced .= <<"EOM"; # DO NOT CHANGE THIS # This grammar is automatically generated from etc/grammar.yaml $dump EOM } elsif ($state =~ m/E0$/) { $replaced .= $line; } } elsif ($state2) { if ($state2 == 1) { $replaced .= $line; my $yaml_formatted = $yaml; $yaml_formatted =~ s/^/ /mg; $replaced .= <<"EOM"; # DO NOT CHANGE THIS # This grammar is automatically generated from etc/grammar.yaml $yaml_formatted EOM } elsif ($state2 =~ m/E0$/) { $replaced .= $line; } } else { $replaced .= $line; } } close $fh; open $fh, '>', $module_file or die $!; print $fh $replaced; close $fh; YAML-PP-v0.38.0/etc/grammar.yaml0000644000175000017500000004050114556031647014617 0ustar tinatina--- NODETYPE_NODE: DASH: match: cb_seqstart EOL: { new: FULLNODE } WS: { new: FULLNODE } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } NODETYPE_SCALAR_OR_MAP: # Flow nodes can follow tabs WS: { new: FULLMAPVALUE_INLINE } ALIAS: match: cb_alias EOL: { match: cb_send_alias_from_stack } WS: COLON: match: cb_insert_map_alias EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUESTION: match: cb_questionstart EOL: { new: FULLNODE } WS: { new: FULLNODE } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } WS: COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUOTED_MULTILINE: match: cb_quoted_multiline EOL: { } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar WS: COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } PLAIN_MULTI: match: cb_send_plain_multi EOL: { } COLON: match: cb_insert_empty_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } BLOCK_SCALAR: match: cb_send_block_scalar EOL: { } FLOWSEQ_START: match: cb_start_flowseq new: NEWFLOWSEQ FLOWMAP_START: match: cb_start_flowmap new: NEWFLOWMAP DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: NODETYPE_SCALAR_OR_MAP NODETYPE_COMPLEX: COLON: match: cb_complexcolon EOL: { new: FULLNODE } WS: { new: FULLNODE } DEFAULT: match: cb_empty_complexvalue new: NODETYPE_MAP EOL: new: NODETYPE_COMPLEX RULE_FULLFLOWSCALAR: ANCHOR: match: cb_anchor EOL: { new: RULE_FULLFLOWSCALAR_ANCHOR } DEFAULT: { new: RULE_FULLFLOWSCALAR_ANCHOR } TAG: match: cb_tag EOL: { new: RULE_FULLFLOWSCALAR_TAG } DEFAULT: { new: RULE_FULLFLOWSCALAR_TAG } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FULLFLOWSCALAR_ANCHOR: WS: { new: RULE_FULLFLOWSCALAR_ANCHOR } TAG: match: cb_tag WS: { new: RULE_FLOWSCALAR } EOL: { new: RULE_FLOWSCALAR } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FULLFLOWSCALAR_TAG: WS: { new: RULE_FULLFLOWSCALAR_TAG } ANCHOR: match: cb_anchor WS: { new: RULE_FLOWSCALAR } EOL: { new: RULE_FLOWSCALAR } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FLOWSCALAR: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } WS: { match: cb_send_scalar, return: 1 } DEFAULT: { match: cb_send_scalar, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } PLAIN: match: cb_start_plain EOL: { match: cb_send_scalar } DEFAULT: { match: cb_send_scalar, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } FLOW_COMMA: { match: cb_empty_flow_mapkey, return: 1 } FLOWMAP_END: match: cb_end_flowmap_empty return: 1 FLOWSEQ: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_flow_alias, new: FLOWSEQ_NEXT } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_EMPTY: FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 FLOWSEQ_NEXT: WS: { new: FLOWSEQ_NEXT } EOL: { new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_flow_comma return: 1 FLOWSEQ_END: match: cb_end_flowseq return: 1 FLOWSEQ_MAYBE_KEY: WS: { new: FLOWSEQ_MAYBE_KEY } COLON: WS: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: new: FLOWSEQ_NEXT FLOWMAP_CONTENT: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOWMAP_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOWMAP_EMPTYKEY: FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 NEWFLOWSEQ: EOL: { new: NEWFLOWSEQ } WS: { new: NEWFLOWSEQ } ANCHOR: match: cb_anchor WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } DEFAULT: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } DEFAULT: { new: NEWFLOWSEQ_TAG } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: FLOWSEQ } NODETYPE_FLOWSEQ: EOL: { new: NODETYPE_FLOWSEQ } WS: { new: NODETYPE_FLOWSEQ } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: NEWFLOWSEQ } NODETYPE_FLOWMAPVALUE: WS: { new: NODETYPE_FLOWMAPVALUE } EOL: { new: NODETYPE_FLOWMAPVALUE } COLON: match: cb_flow_colon WS: { new: RULE_FULLFLOWSCALAR } EOL: { new: RULE_FULLFLOWSCALAR } DEFAULT: { new: RULE_FULLFLOWSCALAR } FLOW_COMMA: match: cb_empty_flowmap_value return: 1 FLOWMAP_END: match: cb_end_flowmap_empty return: 1 NEWFLOWSEQ_ANCHOR: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_TAG: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_ANCHOR_SPC: WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWSEQ_TAG_SPC: WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWMAP_ANCHOR: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_TAG: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_ANCHOR_SPC: WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP_TAG_SPC: WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP: EOL: { new: NEWFLOWMAP } WS: { new: NEWFLOWMAP } QUESTION: { match: cb_flow_question, new: FLOWMAP_EXPLICIT_KEY } DEFAULT: { new: FLOWMAP } FLOWMAP_EXPLICIT_KEY: WS: { new: FLOWMAP_EXPLICIT_KEY } EOL: { new: FLOWMAP_EXPLICIT_KEY } FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 DEFAULT: { new: FLOWMAP } FLOWMAP: EOL: { new: FLOWMAP } WS: { new: FLOWMAP } ANCHOR: match: cb_anchor WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } DEFAULT: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } DEFAULT: { new: NEWFLOWMAP_TAG } FLOWMAP_END: match: cb_end_flowmap return: 1 COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR DEFAULT: { new: FLOWMAP_CONTENT } NODETYPE_FLOWMAP: EOL: { new: NODETYPE_FLOWMAP } WS: { new: NODETYPE_FLOWMAP } FLOWMAP_END: match: cb_end_flowmap return: 1 FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWMAP } DEFAULT: { new: NEWFLOWMAP } END_FLOW: EOL: match: cb_end_outer_flow return: 1 RULE_MAPKEY: QUESTION: match: cb_question EOL: { new: FULLNODE } WS: { new: FULLNODE } ALIAS: match: cb_send_alias_key WS: COLON: EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUOTED: match: cb_take_quoted_key WS: COLON: EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } PLAIN: match: cb_mapkey WS: COLON: match: cb_send_mapkey EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_send_mapkey EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_empty_mapkey EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: RULE_MAPKEY NODETYPE_SEQ: DASH: match: cb_seqitem EOL: { new: FULLNODE } WS: { new: FULLNODE } DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: NODETYPE_SEQ NODETYPE_MAP: ANCHOR: match: cb_anchor WS: TAG: match: cb_tag WS: { new: RULE_MAPKEY } DEFAULT: { new: RULE_MAPKEY } TAG: match: cb_tag WS: ANCHOR: match: cb_anchor WS: { new: RULE_MAPKEY } DEFAULT: { new: RULE_MAPKEY } DEFAULT: { new: RULE_MAPKEY } FULLNODE_ANCHOR: TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: ANCHOR: match: cb_anchor WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } ANCHOR: match: cb_anchor WS: TAG: match: cb_tag WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE_ANCHOR } DEFAULT: { new: NODETYPE_NODE } FULLNODE_TAG: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: TAG: match: cb_tag WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP, } TAG: match: cb_tag WS: ANCHOR: match: cb_anchor WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE_TAG } DEFAULT: { new: NODETYPE_NODE } FULLNODE_TAG_ANCHOR: ANCHOR: match: cb_anchor WS: TAG: match: cb_tag WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } TAG: match: cb_tag WS: ANCHOR: match: cb_anchor WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE_TAG_ANCHOR } DEFAULT: { new: NODETYPE_NODE } FULLNODE: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_ANCHOR } WS: TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG } WS: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE } DEFAULT: { new: NODETYPE_NODE } FULLMAPVALUE_INLINE: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_ANCHOR } WS: TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_MAPVALUE_INLINE } DEFAULT: { new: NODETYPE_MAPVALUE_INLINE } TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG } WS: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_MAPVALUE_INLINE } DEFAULT: { new: NODETYPE_MAPVALUE_INLINE } DEFAULT: { new: NODETYPE_MAPVALUE_INLINE } NODETYPE_MAPVALUE_INLINE: ALIAS: match: cb_send_alias EOL: { } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } QUOTED_MULTILINE: match: cb_quoted_multiline EOL: { } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar PLAIN_MULTI: match: cb_send_plain_multi EOL: { } BLOCK_SCALAR: match: cb_send_block_scalar EOL: { } FLOWSEQ_START: match: cb_start_flowseq new: NEWFLOWSEQ FLOWMAP_START: match: cb_start_flowmap new: NEWFLOWMAP DOC_END: match: cb_end_document EOL: { } DOCUMENT_END: DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: DOCUMENT_END STREAM: DOC_END: match: cb_end_document_empty EOL: { } DOC_START: match: cb_doc_start_explicit EOL: { new: FULLNODE } WS: { new: FULLNODE } YAML_DIRECTIVE: match: cb_set_yaml_version_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } RESERVED_DIRECTIVE: match: cb_reserved_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } TAG_DIRECTIVE: match: cb_tag_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } EOL: new: STREAM DEFAULT: match: cb_doc_start_implicit new: FULLNODE DIRECTIVE: DOC_START: match: cb_doc_start_explicit EOL: { new: FULLNODE } WS: { new: FULLNODE } YAML_DIRECTIVE: match: cb_set_yaml_version_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } RESERVED_DIRECTIVE: match: cb_reserved_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } TAG_DIRECTIVE: match: cb_tag_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } EOL: new: DIRECTIVE YAML-PP-v0.38.0/etc/json-numbers.pl0000644000175000017500000000222614556031647015266 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use JSON (); use JSON::PP (); use JSON::XS (); use Cpanel::JSON::XS (); require Mojolicious; use Mojo::JSON (); use B (); use Text::Table; my @classes = qw/ JSON JSON::PP JSON::XS Cpanel::JSON::XS Mojo::JSON /; my $t = Text::Table->new( qw/ Class Version 3 IV NV PV 3.140 IV NV PV 3.00 IV NV PV 0.3e3 IV NV PV encode /, ); my $json = <<'EOM'; [ 3, 3.140, 3.00, 0.3e3 ] EOM my @rows; for my $class (@classes) { my $version = $class eq 'Mojo::JSON' ? Mojolicious->VERSION : $class->VERSION; my @row = ( $class, $version ); my $decode = $class->can("decode_json"); my $encode = $class->can("encode_json"); my $data = $decode->($json); for my $num (@$data) { my $flags = B::svref_2object(\$num)->FLAGS; my $int = $flags & B::SVp_IOK ? 1 : 0; my $float = $flags & B::SVp_NOK ? 1 : 0; my $str = $flags & B::SVp_POK ? 1 : 0; push @row, '', $int, $float, $str; } my $enc = $encode->($data); push @row, $enc; push @rows, \@row; } say "Input: $json"; $t->load(@rows); say $t; YAML-PP-v0.38.0/lib/0000755000175000017500000000000014556031647012300 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/0000755000175000017500000000000014556031647013042 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/PP/0000755000175000017500000000000014556031647013361 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/PP/Type/0000755000175000017500000000000014556031647014302 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/PP/Type/MergeKey.pm0000644000175000017500000000060314556031647016347 0ustar tinatinause strict; use warnings; package YAML::PP::Type::MergeKey; our $VERSION = 'v0.38.0'; # VERSION sub new { my ($class) = @_; return bless {}, $class; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Type::MergeKey - A special node type for merge keys =head1 DESCRIPTION See L =head1 METHODS =over =item new Constructor =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Reader.pm0000644000175000017500000000301214556031647015115 0ustar tinatina# ABSTRACT: Reader class for YAML::PP representing input data use strict; use warnings; package YAML::PP::Reader; our $VERSION = 'v0.38.0'; # VERSION sub input { return $_[0]->{input} } sub set_input { $_[0]->{input} = $_[1] } sub new { my ($class, %args) = @_; my $input = delete $args{input}; return bless { input => $input, }, $class; } sub read { my ($self) = @_; my $pos = pos $self->{input} || 0; my $yaml = substr($self->{input}, $pos); $self->{input} = ''; return $yaml; } sub readline { my ($self) = @_; unless (length $self->{input}) { return; } if ( $self->{input} =~ m/\G([^\r\n]*(?:\n|\r\n|\r|\z))/g ) { my $line = $1; unless (length $line) { $self->{input} = ''; return; } return $line; } return; } package YAML::PP::Reader::File; use Scalar::Util qw/ openhandle /; our @ISA = qw/ YAML::PP::Reader /; use Carp qw/ croak /; sub open_handle { if (openhandle( $_[0]->{input} )) { return $_[0]->{input}; } open my $fh, '<:encoding(UTF-8)', $_[0]->{input} or croak "Could not open '$_[0]->{input}' for reading: $!"; return $fh; } sub read { my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle; if (wantarray) { my @yaml = <$fh>; return @yaml; } else { local $/; my $yaml = <$fh>; return $yaml; } } sub readline { my $fh = $_[0]->{filehandle} ||= $_[0]->open_handle; return scalar <$fh>; } 1; YAML-PP-v0.38.0/lib/YAML/PP/Dumper.pm0000644000175000017500000002032314556031647015153 0ustar tinatinause strict; use warnings; package YAML::PP::Dumper; our $VERSION = 'v0.38.0'; # VERSION use Scalar::Util qw/ blessed refaddr reftype /; use YAML::PP; use YAML::PP::Emitter; use YAML::PP::Representer; use YAML::PP::Writer; use YAML::PP::Writer::File; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_ANY_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE YAML_BLOCK_MAPPING_STYLE YAML_BLOCK_SEQUENCE_STYLE /; sub new { my ($class, %args) = @_; my $header = delete $args{header}; $header = 1 unless defined $header; my $footer = delete $args{footer}; $footer = 0 unless defined $footer; my $version_directive = delete $args{version_directive}; my $preserve = delete $args{preserve}; my $schema = delete $args{schema} || YAML::PP->default_schema( boolean => 'perl', ); my $emitter = delete $args{emitter} || YAML::PP::Emitter->new; unless (blessed($emitter)) { $emitter = YAML::PP::Emitter->new( %$emitter ); } if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my $self = bless { representer => YAML::PP::Representer->new( schema => $schema, preserve => $preserve, ), version_directive => $version_directive, emitter => $emitter, seen => {}, anchors => {}, anchor_num => 0, header => $header, footer => $footer, }, $class; return $self; } sub clone { my ($self) = @_; my $clone = { representer => $self->representer->clone, emitter => $self->emitter->clone, version_directive => $self->version_directive, seen => {}, anchors => {}, anchor_num => 0, header => $self->header, footer => $self->footer, }; return bless $clone, ref $self; } sub init { my ($self) = @_; $self->{seen} = {}; $self->{anchors} = {}; $self->{anchor_num} = 0; } sub emitter { return $_[0]->{emitter} } sub representer { return $_[0]->{representer} } sub set_representer { $_[0]->{representer} = $_[1] } sub header { return $_[0]->{header} } sub footer { return $_[0]->{footer} } sub version_directive { return $_[0]->{version_directive} } sub dump { my ($self, @docs) = @_; $self->emitter->init; $self->emitter->stream_start_event({}); for my $i (0 .. $#docs) { my $header_implicit = ($i == 0 and not $self->header); my %args = ( implicit => $header_implicit, ); if ($self->version_directive) { my ($major, $minor) = split m/\./, $self->representer->schema->yaml_version; $args{version_directive} = { major => $major, minor => $minor }; } $self->emitter->document_start_event( \%args ); $self->init; $self->_check_references($docs[ $i ]); $self->_dump_node($docs[ $i ]); my $footer_implicit = (not $self->footer); $self->emitter->document_end_event({ implicit => $footer_implicit }); } $self->emitter->stream_end_event({}); my $output = $self->emitter->writer->output; $self->emitter->finish; return $output; } sub _dump_node { my ($self, $value) = @_; my $node = { value => $value, }; if (ref $value) { my $seen = $self->{seen}; my $refaddr = refaddr $value; if ($seen->{ $refaddr } and $seen->{ $refaddr } > 1) { my $anchor = $self->{anchors}->{ $refaddr }; unless (defined $anchor) { if ($self->representer->preserve_alias) { if (ref $node->{value} eq 'YAML::PP::Preserve::Scalar') { if (defined $node->{value}->alias) { $node->{anchor} = $node->{value}->alias; $self->{anchors}->{ $refaddr } = $node->{value}->alias; } } elsif (reftype $node->{value} eq 'HASH') { if (my $tied = tied %{ $node->{value} } ) { if (defined $tied->{alias}) { $node->{anchor} = $tied->{alias}; $self->{anchors}->{ $refaddr } = $node->{anchor}; } } } elsif (reftype $node->{value} eq 'ARRAY') { if (my $tied = tied @{ $node->{value} } ) { if (defined $tied->{alias}) { $node->{anchor} = $tied->{alias}; $self->{anchors}->{ $refaddr } = $node->{anchor}; } } } } unless (defined $node->{anchor}) { my $num = ++$self->{anchor_num}; $self->{anchors}->{ $refaddr } = $num; $node->{anchor} = $num; } } else { $node->{value} = $anchor; $self->_emit_node([ alias => $node ]); return; } } } $node = $self->representer->represent_node($node); $self->_emit_node($node); } sub _emit_node { my ($self, $item) = @_; my ($type, $node, %args) = @$item; if ($type eq 'alias') { $self->emitter->alias_event({ value => $node->{value} }); return; } if ($type eq 'mapping') { my $style = $args{style} || YAML_BLOCK_MAPPING_STYLE; # TODO if ($node->{items} and @{ $node->{items} } == 0) { # $style = YAML_FLOW_MAPPING_STYLE; } $self->emitter->mapping_start_event({ anchor => $node->{anchor}, style => $style, tag => $node->{tag}, }); for (@{ $node->{items} }) { $self->_dump_node($_); } $self->emitter->mapping_end_event; return; } if ($type eq 'sequence') { my $style = $args{style} || YAML_BLOCK_SEQUENCE_STYLE; if (@{ $node->{items} } == 0) { # $style = YAML_FLOW_SEQUENCE_STYLE; } $self->emitter->sequence_start_event({ anchor => $node->{anchor}, style => $style, tag => $node->{tag}, }); for (@{ $node->{items} }) { $self->_dump_node($_); } $self->emitter->sequence_end_event; return; } $self->emitter->scalar_event({ value => $node->{items}->[0], style => $node->{style}, anchor => $node->{anchor}, tag => $node->{tag}, }); } sub dump_string { my ($self, @docs) = @_; my $writer = YAML::PP::Writer->new; $self->emitter->set_writer($writer); my $output = $self->dump(@docs); return $output; } sub dump_file { my ($self, $file, @docs) = @_; my $writer = YAML::PP::Writer::File->new(output => $file); $self->emitter->set_writer($writer); my $output = $self->dump(@docs); return $output; } my %_reftypes = ( HASH => 1, ARRAY => 1, Regexp => 1, REGEXP => 1, CODE => 1, SCALAR => 1, REF => 1, GLOB => 1, ); sub _check_references { my ($self, $doc) = @_; my $reftype = reftype $doc or return; my $seen = $self->{seen}; # check which references are used more than once if ($reftype eq 'SCALAR' and grep { ref $doc eq $_ } @{ $self->representer->schema->bool_class || [] }) { # JSON::PP and boolean.pm always return the same reference for booleans # Avoid printing *aliases in those case if (ref $doc eq 'boolean' or ref $doc eq 'JSON::PP::Boolean') { return; } } if (++$seen->{ refaddr $doc } > 1) { # seen already return; } unless ($_reftypes{ $reftype }) { die sprintf "Reference %s not implemented", $reftype; } if ($reftype eq 'HASH') { $self->_check_references($doc->{ $_ }) for keys %$doc; } elsif ($reftype eq 'ARRAY') { $self->_check_references($_) for @$doc; } elsif ($reftype eq 'REF') { $self->_check_references($$doc); } } 1; YAML-PP-v0.38.0/lib/YAML/PP/Emitter.pm0000644000175000017500000007512514556031647015342 0ustar tinatinause strict; use warnings; package YAML::PP::Emitter; our $VERSION = 'v0.38.0'; # VERSION use Data::Dumper; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE /; use constant DEBUG => $ENV{YAML_PP_EMIT_DEBUG} ? 1 : 0; use constant DEFAULT_WIDTH => 80; sub new { my ($class, %args) = @_; my $self = bless { indent => $args{indent} || 2, writer => $args{writer}, width => $args{width} || DEFAULT_WIDTH, }, $class; $self->init; return $self; } sub clone { my ($self) = @_; my $clone = { indent => $self->indent, }; return bless $clone, ref $self; } sub event_stack { return $_[0]->{event_stack} } sub set_event_stack { $_[0]->{event_stack} = $_[1] } sub indent { return $_[0]->{indent} } sub width { return $_[0]->{width} } sub line { return $_[0]->{line} } sub column { return $_[0]->{column} } sub set_indent { $_[0]->{indent} = $_[1] } sub writer { $_[0]->{writer} } sub set_writer { $_[0]->{writer} = $_[1] } sub tagmap { return $_[0]->{tagmap} } sub set_tagmap { $_[0]->{tagmap} = $_[1] } sub init { my ($self) = @_; unless ($self->writer) { $self->set_writer(YAML::PP::Writer->new); } $self->set_tagmap({ 'tag:yaml.org,2002:' => '!!', }); $self->{open_ended} = 0; $self->{line} = 0; $self->{column} = 0; $self->writer->init; } sub mapping_start_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ mapping_start_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $new_indent = $indent; my $yaml = ''; my $props = ''; my $anchor = $info->{anchor}; my $tag = $info->{tag}; if (defined $anchor) { $anchor = "&$anchor"; } if (defined $tag) { $tag = $self->_emit_tag('map', $tag); } $props = join ' ', grep defined, ($anchor, $tag); my $flow = $last->{flow} || 0; $flow++ if ($info->{style} || 0) eq YAML_FLOW_MAPPING_STYLE; my $newline = 0; if ($flow > 1) { if ($last->{type} eq 'SEQ') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "["; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAP') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "{"; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die "Should not happen (index 0 in MAPVALUE)"; } $yaml .= ": "; } if ($props) { $yaml .= " $props "; } $new_indent .= ' ' x $self->indent; } else { if ($last->{type} eq 'DOC') { $newline = $last->{newline}; } else { if ($last->{newline}) { $yaml .= "\n"; $last->{column} = 0; } if ($last->{type} eq 'MAPVALUE') { $new_indent .= ' ' x $self->indent; $newline = 1; } else { $new_indent = $indent; if (not $props and $self->indent == 1) { $new_indent .= ' ' x 2; } else { $new_indent .= ' ' x $self->indent; } if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($last->{type} eq 'SEQ') { $yaml .= '-'; } elsif ($last->{type} eq 'MAP') { $yaml .= "?"; $last->{type} = 'COMPLEX'; } elsif ($last->{type} eq 'COMPLEXVALUE') { $yaml .= ":"; } else { die "Should not happen ($last->{type} in mapping_start)"; } $last->{column} = 1; } $last->{newline} = 0; } if ($props) { $yaml .= $last->{column} ? ' ' : $indent; $yaml .= $props; $newline = 1; } } $self->_write($yaml); my $new_info = { index => 0, indent => $new_indent, info => $info, newline => $newline, column => $self->column, flow => $flow, }; $new_info->{type} = 'MAP'; push @{ $stack }, $new_info; $last->{index}++; $self->{open_ended} = 0; } sub mapping_end_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ mapping_end_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = pop @{ $stack }; if ($last->{index} == 0) { my $indent = $last->{indent}; my $zero_indent = $last->{zero_indent}; if ($last->{zero_indent}) { $indent .= ' ' x $self->indent; } if ($self->column) { $self->_write(" {}\n"); } else { $self->_write("$indent\{}\n"); } } elsif ($last->{flow}) { my $yaml = "}"; if ($last->{flow} == 1) { $yaml .= "\n"; } $self->_write("$yaml"); } $last = $stack->[-1]; $last->{column} = $self->column; if ($last->{type} eq 'SEQ') { } elsif ($last->{type} eq 'MAP') { $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'COMPLEX') { $last->{type} = 'COMPLEXVALUE'; } elsif ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; } } sub sequence_start_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ sequence_start_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $new_indent = $indent; my $yaml = ''; my $props = ''; my $anchor = $info->{anchor}; my $tag = $info->{tag}; if (defined $anchor) { $anchor = "&$anchor"; } if (defined $tag) { $tag = $self->_emit_tag('seq', $tag); } $props = join ' ', grep defined, ($anchor, $tag); my $flow = $last->{flow} || 0; $flow++ if $flow or ($info->{style} || 0) eq YAML_FLOW_SEQUENCE_STYLE; my $newline = 0; my $zero_indent = 0; if ($flow > 1) { if ($last->{type} eq 'SEQ') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "["; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAP') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "{"; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die "Should not happen (index 0 in MAPVALUE)"; } $yaml .= ": "; } if ($props) { $yaml .= " $props "; } $new_indent .= ' ' x $self->indent; } else { if ($last->{type} eq 'DOC') { $newline = $last->{newline}; } else { if ($last->{newline}) { $yaml .= "\n"; $last->{column} = 0; } if ($last->{type} eq 'MAPVALUE') { $zero_indent = 1; $newline = 1; } else { if (not $props and $self->indent == 1) { $new_indent .= ' ' x 2; } else { $new_indent .= ' ' x $self->indent; } if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($last->{type} eq 'SEQ') { $yaml .= "-"; } elsif ($last->{type} eq 'MAP') { $last->{type} = 'COMPLEX'; $zero_indent = 1; $yaml .= "?"; } elsif ($last->{type} eq 'COMPLEXVALUE') { $yaml .= ":"; $zero_indent = 1; } else { die "Should not happen ($last->{type} in sequence_start)"; } $last->{column} = 1; } $last->{newline} = 0; } if ($props) { $yaml .= $last->{column} ? ' ' : $indent; $yaml .= $props; $newline = 1; } } $self->_write($yaml); $last->{index}++; my $new_info = { index => 0, indent => $new_indent, info => $info, zero_indent => $zero_indent, newline => $newline, column => $self->column, flow => $flow, }; $new_info->{type} = 'SEQ'; push @{ $stack }, $new_info; $self->{open_ended} = 0; } sub sequence_end_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ sequence_end_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = pop @{ $stack }; if ($last->{index} == 0) { my $indent = $last->{indent}; my $zero_indent = $last->{zero_indent}; if ($last->{zero_indent}) { $indent .= ' ' x $self->indent; } my $yaml .= $self->column ? ' ' : $indent; $yaml .= "[]"; if ($last->{flow} < 2) { $yaml .= "\n"; } $self->_write($yaml); } elsif ($last->{flow}) { my $yaml = "]"; if ($last->{flow} == 1) { $yaml .= "\n"; } $self->_write($yaml); } $last = $stack->[-1]; $last->{column} = $self->column; if ($last->{type} eq 'SEQ') { } elsif ($last->{type} eq 'MAP') { $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'COMPLEX') { $last->{type} = 'COMPLEXVALUE'; } elsif ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; } } my %forbidden_first = (qw/ ! 1 & 1 * 1 { 1 } 1 [ 1 ] 1 | 1 > 1 @ 1 ` 1 " 1 ' 1 /, '#' => 1, '%' => 1, ',' => 1, " " => 1); my %forbidden_first_plus_space = (qw/ ? 1 - 1 : 1 /); my %control = ( "\x00" => '\0', "\x01" => '\x01', "\x02" => '\x02', "\x03" => '\x03', "\x04" => '\x04', "\x05" => '\x05', "\x06" => '\x06', "\x07" => '\a', "\x08" => '\b', "\x0b" => '\v', "\x0c" => '\f', "\x0e" => '\x0e', "\x0f" => '\x0f', "\x10" => '\x10', "\x11" => '\x11', "\x12" => '\x12', "\x13" => '\x13', "\x14" => '\x14', "\x15" => '\x15', "\x16" => '\x16', "\x17" => '\x17', "\x18" => '\x18', "\x19" => '\x19', "\x1a" => '\x1a', "\x1b" => '\e', "\x1c" => '\x1c', "\x1d" => '\x1d', "\x1e" => '\x1e', "\x1f" => '\x1f', "\x7f" => '\x7f', "\x80" => '\x80', "\x81" => '\x81', "\x82" => '\x82', "\x83" => '\x83', "\x84" => '\x84', "\x86" => '\x86', "\x87" => '\x87', "\x88" => '\x88', "\x89" => '\x89', "\x8a" => '\x8a', "\x8b" => '\x8b', "\x8c" => '\x8c', "\x8d" => '\x8d', "\x8e" => '\x8e', "\x8f" => '\x8f', "\x90" => '\x90', "\x91" => '\x91', "\x92" => '\x92', "\x93" => '\x93', "\x94" => '\x94', "\x95" => '\x95', "\x96" => '\x96', "\x97" => '\x97', "\x98" => '\x98', "\x99" => '\x99', "\x9a" => '\x9a', "\x9b" => '\x9b', "\x9c" => '\x9c', "\x9d" => '\x9d', "\x9e" => '\x9e', "\x9f" => '\x9f', "\x{2029}" => '\P', "\x{2028}" => '\L', "\x85" => '\N', "\xa0" => '\_', ); my $control_re = '\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x84\x86-\x9f\x{d800}-\x{dfff}\x{fffe}\x{ffff}\x{2028}\x{2029}\x85\xa0'; my %to_escape = ( "\n" => '\n', "\t" => '\t', "\r" => '\r', '\\' => '\\\\', '"' => '\\"', %control, ); my $escape_re = $control_re . '\n\t\r'; my $escape_re_without_lb = $control_re . '\t\r'; sub scalar_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ scalar_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $value = $info->{value}; my $flow = $last->{flow}; my $props = ''; my $anchor = $info->{anchor}; my $tag = $info->{tag}; if (defined $anchor) { $anchor = "&$anchor"; } if (defined $tag) { $tag = $self->_emit_tag('scalar', $tag); } $props = join ' ', grep defined, ($anchor, $tag); DEBUG and local $Data::Dumper::Useqq = 1; $value = '' unless defined $value; my $style = $self->_find_best_scalar_style( info => $info, value => $value, ); my $open_ended = 0; if ($style == YAML_PLAIN_SCALAR_STYLE) { $value =~ s/\n/\n\n/g; } elsif ($style == YAML_SINGLE_QUOTED_SCALAR_STYLE) { my $new_indent = $last->{indent} . (' ' x $self->indent); $value =~ s/(\n+)/"\n" x (1 + (length $1))/eg; my @lines = split m/\n/, $value, -1; if (@lines > 1) { for my $line (@lines[1 .. $#lines]) { $line = $new_indent . $line if length $line; } } $value = join "\n", @lines; $value =~ s/'/''/g; $value = "'" . $value . "'"; } elsif ($style == YAML_LITERAL_SCALAR_STYLE) { DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$value], ['value']); my $indicators = ''; if ($value =~ m/\A\n* +/) { $indicators .= $self->indent; } my $indent = $indent . ' ' x $self->indent; if ($value !~ m/\n\z/) { $indicators .= '-'; $value .= "\n"; } elsif ($value =~ m/(\n|\A)\n\z/) { $indicators .= '+'; $open_ended = 1; } $value =~ s/^(?=.)/$indent/gm; $value = "|$indicators\n$value"; } elsif ($style == YAML_FOLDED_SCALAR_STYLE) { DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$value], ['value']); my @lines = split /\n/, $value, -1; DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\@lines], ['lines']); my $trailing = -1; while (@lines) { last if $lines[-1] ne ''; pop @lines; $trailing++; } my %start_with_space; for my $i (0 .. $#lines) { if ($lines[ $i ] =~ m/^[ \t]+/) { $start_with_space{ $i } = 1; } } my $indicators = ''; if ($value =~ m/\A\n* +/) { $indicators .= $self->indent; } my $indent = $indent . ' ' x $self->indent; if ($trailing > 0) { $indicators .= '+'; $open_ended = 1; } elsif ($trailing < 0) { $indicators .= '-'; } $value = ">$indicators\n"; my $got_content = 0; for my $i (0 .. $#lines) { my $line = $lines[ $i ]; my $sp = $start_with_space{ $i } || 0; my $spnext = $i == $#lines ? 1 : $start_with_space{ $i+1 } || 0; my $spprev = $i == 0 ? 1 : $start_with_space{ $i-1 } || 0; my $empty = length $line ? 0 : 1; my $emptynext = $i == $#lines ? '' : length $lines[$i+1] ? 0 : 1; my $nl = 0; if ($empty) { if ($spnext and $spprev) { $nl = 1; } elsif (not $spnext) { $nl = 1; } elsif (not $got_content) { $nl = 1; } } else { $got_content = 1; $value .= "$indent$line\n"; if (not $sp and not $spnext) { $nl = 1; } } if ($nl) { $value .= "\n"; } } $value .= "\n" x ($trailing) if $trailing > 0; } else { $value =~ s/([$escape_re"\\])/$to_escape{ $1 } || sprintf '\\u%04x', ord($1)/eg; $value = '"' . $value . '"'; } DEBUG and warn __PACKAGE__.':'.__LINE__.": (@$stack)\n"; my $yaml = $self->_emit_scalar( indent => $indent, props => $props, value => $value, style => $style, ); $last->{index}++; $last->{newline} = 0; $self->_write($yaml); $last->{column} = $self->column; $self->{open_ended} = $open_ended; } sub _find_best_scalar_style { my ($self, %args) = @_; my $info = $args{info}; my $style = $info->{style}; my $value = $args{value}; my $stack = $self->event_stack; my $last = $stack->[-1]; my $flow = $last->{flow}; my $first = substr($value, 0, 1); if ($value eq '') { if ($flow and $last->{type} ne 'MAPVALUE' and $last->{type} ne 'MAP') { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif (not $style) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } # no control characters anywhere elsif ($value =~ m/[$control_re]/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } $style ||= YAML_PLAIN_SCALAR_STYLE; if ($style == YAML_SINGLE_QUOTED_SCALAR_STYLE) { if ($value =~ m/ \n/ or $value =~ m/\n / or $value =~ m/^\n/ or $value =~ m/\n$/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value eq "\n") { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } } elsif ($style == YAML_LITERAL_SCALAR_STYLE or $style == YAML_FOLDED_SCALAR_STYLE) { if ($value eq '') { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($flow) { # no block scalars in flow if ($value =~ tr/\n//) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } else { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } } elsif ($style == YAML_PLAIN_SCALAR_STYLE) { if (not length $value) { } elsif ($value =~ m/[$escape_re_without_lb]/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value eq "\n") { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value !~ tr/ //c) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value !~ tr/ \n//c) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ tr/\n//) { $style = $flow ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_LITERAL_SCALAR_STYLE; } elsif ($forbidden_first{ $first }) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($flow and $value =~ tr/,[]{}//) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif (substr($value, 0, 3) =~ m/^(?:---|\.\.\.)/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/: /) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/ #/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/[: \t]\z/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/[^\x20-\x3A\x3B-\x7E\x85\xA0-\x{D7FF}\x{E000}-\x{FEFE}\x{FF00}-\x{FFFD}\x{10000}-\x{10FFFF}]/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($forbidden_first_plus_space{ $first }) { if (length ($value) == 1 or substr($value, 1, 1) =~ m/^\s/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } } if ($style == YAML_SINGLE_QUOTED_SCALAR_STYLE and not $info->{style}) { if ($value =~ tr/'// and $value !~ tr/"//) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } } return $style; } sub _emit_scalar { my ($self, %args) = @_; my $props = $args{props}; my $value = $args{value}; my $style = $args{style}; my $stack = $self->event_stack; my $last = $stack->[-1]; my $flow = $last->{flow}; my $yaml = ''; my $pvalue = $props; if ($props and length $value) { $pvalue .= " $value"; } elsif (length $value) { $pvalue .= $value; } if ($flow) { if ($props and not length $value) { $pvalue .= ' '; } $yaml = $self->_emit_flow_scalar( value => $value, pvalue => $pvalue, style => $args{style}, ); } else { $yaml = $self->_emit_block_scalar( props => $props, value => $value, pvalue => $pvalue, indent => $args{indent}, style => $args{style}, ); } return $yaml; } sub _emit_block_scalar { my ($self, %args) = @_; my $props = $args{props}; my $value = $args{value}; my $pvalue = $args{pvalue}; my $indent = $args{indent}; my $style = $args{style}; my $stack = $self->event_stack; my $last = $stack->[-1]; my $yaml; if ($last->{type} eq 'MAP' or $last->{type} eq 'SEQ') { if ($last->{index} == 0 and $last->{newline}) { $yaml .= "\n"; $last->{column} = 0; $last->{newline} = 0; } } my $space = ' '; my $multiline = ($style == YAML_LITERAL_SCALAR_STYLE or $style == YAML_FOLDED_SCALAR_STYLE); if ($last->{type} eq 'MAP') { if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($props and not length $value) { $pvalue .= ' '; } $last->{type} = 'MAPVALUE'; if ($multiline) { # oops, a complex key $yaml .= "? "; $last->{type} = 'COMPLEXVALUE'; } if (not $multiline) { $pvalue .= ":"; } } else { if ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'DOC') { } else { if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; $yaml .= ":"; } elsif ($last->{type} eq 'SEQ') { $yaml .= "-"; } else { die "Should not happen ($last->{type} in scalar_event)"; } $last->{column} = 1; } if (length $pvalue) { if ($last->{column}) { $pvalue = "$space$pvalue"; } } if (not $multiline) { $pvalue .= "\n"; } } $yaml .= $pvalue; return $yaml; } sub _emit_flow_scalar { my ($self, %args) = @_; my $value = $args{value}; my $pvalue = $args{pvalue}; my $stack = $self->event_stack; my $last = $stack->[-1]; my $yaml; if ($last->{type} eq 'SEQ') { if ($last->{index} == 0) { if ($self->column) { $yaml .= ' '; } $yaml .= "["; } else { $yaml .= ", "; } } elsif ($last->{type} eq 'MAP') { if ($last->{index} == 0) { if ($self->column) { $yaml .= ' '; } $yaml .= "{"; } else { $yaml .= ", "; } $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die "Should not happen (index 0 in MAPVALUE)"; } $yaml .= ": "; $last->{type} = 'MAP'; } if ($self->column + length $pvalue > $self->width) { $yaml .= "\n"; $yaml .= $last->{indent}; $yaml .= ' ' x $self->indent; } $yaml .= $pvalue; return $yaml; } sub alias_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ alias_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $flow = $last->{flow}; my $alias = '*' . $info->{value}; my $yaml = ''; if ($last->{type} eq 'MAP' or $last->{type} eq 'SEQ') { if ($last->{index} == 0 and $last->{newline}) { $yaml .= "\n"; $last->{column} = 0; $last->{newline} = 0; } } $yaml .= $last->{column} ? ' ' : $indent; if ($flow) { my $space = ''; if ($last->{type} eq 'SEQ') { if ($last->{index} == 0) { if ($flow == 1) { $yaml .= ' '; } $yaml .= "["; } else { $yaml .= ", "; } } elsif ($last->{type} eq 'MAP') { if ($last->{index} == 0) { if ($flow == 1) { $yaml .= ' '; } $yaml .= "{"; } else { $yaml .= ", "; } $last->{type} = 'MAPVALUE'; $space = ' '; } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die 23; if ($flow == 1) { $yaml .= ' '; } $yaml .= "{"; } else { $yaml .= ": "; } $last->{type} = 'MAP'; } $yaml .= "$alias$space"; } else { if ($last->{type} eq 'MAP') { $yaml .= "$alias :"; $last->{type} = 'MAPVALUE'; } else { if ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'DOC') { # TODO an alias at document level isn't actually valid } else { if ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; $yaml .= ": "; } elsif ($last->{type} eq 'COMPLEX') { $yaml .= ": "; } elsif ($last->{type} eq 'SEQ') { $yaml .= "- "; } else { die "Unexpected"; } } $yaml .= "$alias\n"; } } $self->_write("$yaml"); $last->{index}++; $last->{column} = $self->column; $self->{open_ended} = 0; } sub document_start_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ document_start_event\n"; my ($self, $info) = @_; my $newline = 0; my $implicit = $info->{implicit}; if ($info->{version_directive}) { if ($self->{open_ended}) { $self->_write("...\n"); } $self->_write("%YAML $info->{version_directive}->{major}.$info->{version_directive}->{minor}\n"); $self->{open_ended} = 0; $implicit = 0; # we need --- } unless ($implicit) { $newline = 1; $self->_write("---"); } $self->set_event_stack([ { type => 'DOC', index => 0, indent => '', info => $info, newline => $newline, column => $self->column, } ]); } sub document_end_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ document_end_event\n"; my ($self, $info) = @_; $self->set_event_stack([]); if ($self->{open_ended} or not $info->{implicit}) { $self->_write("...\n"); $self->{open_ended} = 0; } else { $self->{open_ended} = 1; } } sub stream_start_event { } sub stream_end_event { } sub _emit_tag { my ($self, $type, $tag) = @_; my $map = $self->tagmap; for my $key (sort keys %$map) { if ($tag =~ m/^\Q$key\E(.*)/) { $tag = $map->{ $key } . $1; return $tag; } } if ($tag =~ m/^(!.*)/) { $tag = "$1"; } else { $tag = "!<$tag>"; } return $tag; } sub finish { my ($self) = @_; $self->writer->finish; } sub _write { my ($self, $yaml) = @_; return unless length $yaml; my @lines = split m/\n/, $yaml, -1; my $newlines = @lines - 1; $self->{line} += $newlines; if (length $lines[-1]) { if ($newlines) { $self->{column} = length $lines[-1]; } else { $self->{column} += length $lines[-1]; } } else { $self->{column} = 0; } $self->writer->write($yaml); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Emitter - Emitting events =head1 SYNOPSIS my $emitter = YAML::PP::Emitter->new( indent => 4, ); $emitter->init; $emitter->stream_start_event; $emitter->document_start_event({ implicit => 1 }); $emitter->sequence_start_event; $emitter->scalar_event({ value => $input, style => $style }); $emitter->sequence_end_event; $emitter->document_end_event({ implicit => 1 }); $emitter->stream_end_event; my $yaml = $emitter->writer->output; $emitter->finish; =head1 DESCRIPTION The emitter emits events to YAML. It provides methods for each event type. The arguments are mostly the same as the events from L. =head1 METHODS =over =item new my $emitter = YAML::PP::Emitter->new( indent => 4, ); Constructor. Currently takes these options: =over =item indent =item writer =back =item stream_start_event, stream_end_event, document_start_event, document_end_event, sequence_start_event, sequence_end_event, mapping_start_event, mapping_end_event, scalar_event, alias_event =item indent, set_indent Getter/setter for number of indentation spaces. TODO: Currently sequences are always zero-indented. =item writer, set_writer Getter/setter for the writer object. By default L. You can pass your own writer if you want to output the resulting YAML yourself. =item init Initialize =item finish =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Loader.pm0000644000175000017500000000467414556031647015140 0ustar tinatina# ABSTRACT: Load YAML into data with Parser and Constructor use strict; use warnings; package YAML::PP::Loader; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP::Parser; use YAML::PP::Constructor; use YAML::PP::Reader; sub new { my ($class, %args) = @_; my $cyclic_refs = delete $args{cyclic_refs} || 'fatal'; my $default_yaml_version = delete $args{default_yaml_version} || '1.2'; my $preserve = delete $args{preserve}; my $duplicate_keys = delete $args{duplicate_keys}; my $schemas = delete $args{schemas}; $schemas ||= { '1.2' => YAML::PP->default_schema( boolean => 'perl', ) }; my $constructor = delete $args{constructor} || YAML::PP::Constructor->new( schemas => $schemas, cyclic_refs => $cyclic_refs, default_yaml_version => $default_yaml_version, preserve => $preserve, duplicate_keys => $duplicate_keys, ); my $parser = delete $args{parser}; unless ($parser) { $parser = YAML::PP::Parser->new( default_yaml_version => $default_yaml_version, ); } unless ($parser->receiver) { $parser->set_receiver($constructor); } if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my $self = bless { parser => $parser, constructor => $constructor, }, $class; return $self; } sub clone { my ($self) = @_; my $clone = { parser => $self->parser->clone, constructor => $self->constructor->clone, }; bless $clone, ref $self; $clone->parser->set_receiver($clone->constructor); return $clone; } sub parser { return $_[0]->{parser} } sub constructor { return $_[0]->{constructor} } sub filename { my ($self) = @_; my $reader = $self->parser->reader; if ($reader->isa('YAML::PP::Reader::File')) { return $reader->input; } die "Reader is not a YAML::PP::Reader::File"; } sub load_string { my ($self, $yaml) = @_; $self->parser->set_reader(YAML::PP::Reader->new( input => $yaml )); $self->load(); } sub load_file { my ($self, $file) = @_; $self->parser->set_reader(YAML::PP::Reader::File->new( input => $file )); $self->load(); } sub load { my ($self) = @_; my $parser = $self->parser; my $constructor = $self->constructor; $constructor->init; $parser->parse(); my $docs = $constructor->docs; return wantarray ? @$docs : $docs->[0]; } 1; YAML-PP-v0.38.0/lib/YAML/PP/Lexer.pm0000644000175000017500000007347414556031647015015 0ustar tinatinause strict; use warnings; package YAML::PP::Lexer; our $VERSION = 'v0.38.0'; # VERSION use constant TRACE => $ENV{YAML_PP_TRACE} ? 1 : 0; use constant DEBUG => ($ENV{YAML_PP_DEBUG} || $ENV{YAML_PP_TRACE}) ? 1 : 0; use YAML::PP::Grammar qw/ $GRAMMAR /; use Carp qw/ croak /; sub new { my ($class, %args) = @_; my $self = bless { reader => $args{reader}, }, $class; $self->init; return $self; } sub init { my ($self) = @_; $self->{next_tokens} = []; $self->{next_line} = undef; $self->{line} = 0; $self->{offset} = 0; $self->{flowcontext} = 0; } sub next_line { return $_[0]->{next_line} } sub set_next_line { $_[0]->{next_line} = $_[1] } sub reader { return $_[0]->{reader} } sub set_reader { $_[0]->{reader} = $_[1] } sub next_tokens { return $_[0]->{next_tokens} } sub line { return $_[0]->{line} } sub set_line { $_[0]->{line} = $_[1] } sub offset { return $_[0]->{offset} } sub set_offset { $_[0]->{offset} = $_[1] } sub inc_line { return $_[0]->{line}++ } sub context { return $_[0]->{context} } sub set_context { $_[0]->{context} = $_[1] } sub flowcontext { return $_[0]->{flowcontext} } sub set_flowcontext { $_[0]->{flowcontext} = $_[1] } sub block { return $_[0]->{block} } sub set_block { $_[0]->{block} = $_[1] } my $RE_WS = '[\t ]'; my $RE_LB = '[\r\n]'; my $RE_DOC_END = qr/\A(\.\.\.)(?=$RE_WS|$)/m; my $RE_DOC_START = qr/\A(---)(?=$RE_WS|$)/m; my $RE_EOL = qr/\A($RE_WS+#.*|$RE_WS+)\z/; #my $RE_COMMENT_EOL = qr/\A(#.*)?(?:$RE_LB|\z)/; #ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” my $RE_NS_WORD_CHAR = '[0-9A-Za-z-]'; my $RE_URI_CHAR = '(?:' . '%[0-9a-fA-F]{2}' .'|'. q{[0-9A-Za-z#;/?:@&=+$,_.!*'\(\)\[\]-]} . ')'; my $RE_NS_TAG_CHAR = '(?:' . '%[0-9a-fA-F]{2}' .'|'. q{[0-9A-Za-z#;/?:@&=+$_.~*'\(\)-]} . ')'; # [#x21-#x7E] /* 8 bit */ # | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] /* 16 bit */ # | [#x10000-#x10FFFF] /* 32 bit */ #nb-char ::= c-printable - b-char - c-byte-order-mark #my $RE_NB_CHAR = '[\x21-\x7E]'; my $RE_ANCHOR_CAR = '[\x21-\x2B\x2D-\x5A\x5C\x5E-\x7A\x7C\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_START = '[\x21\x22\x24-\x39\x3B-\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_END = '[\x21-\x39\x3B-\x7E\x85\xA0-\x{D7FF}\x{E000}-\x{FEFE}\x{FF00}-\x{FFFD}\x{10000}-\x{10FFFF}]'; my $RE_PLAIN_FIRST = '[\x24\x28-\x29\x2B\x2E-\x39\x3B-\x3D\x41-\x5A\x5C\x5E-\x5F\x61-\x7A\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_START_FLOW = '[\x21\x22\x24-\x2B\x2D-\x39\x3B-\x5A\x5C\x5E-\x7A\x7C\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_END_FLOW = '[\x21-\x2B\x2D-\x39\x3B-\x5A\x5C\x5E-\x7A\x7C\x7E\x85\xA0-\x{D7FF}\x{E000}-\x{FEFE}\x{FF00}-\x{FFFD}\x{10000}-\x{10FFFF}]'; my $RE_PLAIN_FIRST_FLOW = '[\x24\x28-\x29\x2B\x2E-\x39\x3B-\x3D\x41-\x5A\x5C\x5E-\x5F\x61-\x7A\x7C\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; # c-indicators #! 21 #" 22 ## 23 #% 25 #& 26 #' 27 #* 2A #, 2C FLOW #- 2D XX #: 3A XX #> 3E #? 3F XX #@ 40 #[ 5B FLOW #] 5D FLOW #` 60 #{ 7B FLOW #| 7C #} 7D FLOW my $RE_PLAIN_WORD = "(?::+$RE_PLAIN_END|$RE_PLAIN_START)(?::+$RE_PLAIN_END|$RE_PLAIN_END)*"; my $RE_PLAIN_FIRST_WORD = "(?:[:?-]+$RE_PLAIN_END|$RE_PLAIN_FIRST)(?::+$RE_PLAIN_END|$RE_PLAIN_END)*"; my $RE_PLAIN_WORDS = "(?:$RE_PLAIN_FIRST_WORD(?:$RE_WS+$RE_PLAIN_WORD)*)"; my $RE_PLAIN_WORDS2 = "(?:$RE_PLAIN_WORD(?:$RE_WS+$RE_PLAIN_WORD)*)"; my $RE_PLAIN_WORD_FLOW = "(?::+$RE_PLAIN_END_FLOW|$RE_PLAIN_START_FLOW)(?::+$RE_PLAIN_END_FLOW|$RE_PLAIN_END_FLOW)*"; my $RE_PLAIN_FIRST_WORD_FLOW = "(?:[:?-]+$RE_PLAIN_END_FLOW|$RE_PLAIN_FIRST_FLOW)(?::+$RE_PLAIN_END_FLOW|$RE_PLAIN_END_FLOW)*"; my $RE_PLAIN_WORDS_FLOW = "(?:$RE_PLAIN_FIRST_WORD_FLOW(?:$RE_WS+$RE_PLAIN_WORD_FLOW)*)"; my $RE_PLAIN_WORDS_FLOW2 = "(?:$RE_PLAIN_WORD_FLOW(?:$RE_WS+$RE_PLAIN_WORD_FLOW)*)"; #c-secondary-tag-handle ::= “!” “!” #c-named-tag-handle ::= “!” ns-word-char+ “!” #ns-tag-char ::= ns-uri-char - “!” - c-flow-indicator #ns-global-tag-prefix ::= ns-tag-char ns-uri-char* #c-ns-local-tag-prefix ::= “!” ns-uri-char* my $RE_TAG = "!(?:$RE_NS_WORD_CHAR*!$RE_NS_TAG_CHAR+|$RE_NS_TAG_CHAR+|<$RE_URI_CHAR+>|)"; #c-ns-anchor-property ::= “&” ns-anchor-name #ns-char ::= nb-char - s-white #ns-anchor-char ::= ns-char - c-flow-indicator #ns-anchor-name ::= ns-anchor-char+ my $RE_SEQSTART = qr/\A(-)(?=$RE_WS|$)/m; my $RE_COMPLEX = qr/(\?)(?=$RE_WS|$)/m; my $RE_COMPLEXCOLON = qr/\A(:)(?=$RE_WS|$)/m; my $RE_ANCHOR = "&$RE_ANCHOR_CAR+"; my $RE_ALIAS = "\\*$RE_ANCHOR_CAR+"; my %REGEXES = ( ANCHOR => qr{($RE_ANCHOR)}, TAG => qr{($RE_TAG)}, ALIAS => qr{($RE_ALIAS)}, SINGLEQUOTED => qr{(?:''|[^'\r\n]+)*}, ); sub _fetch_next_line { my ($self) = @_; my $next_line = $self->next_line; if (defined $next_line ) { return $next_line; } my $line = $self->reader->readline; unless (defined $line) { $self->set_next_line(undef); return; } $self->set_block(1); $self->inc_line; $line =~ m/\A( *)([^\r\n]*)([\r\n]|\z)/ or die "Unexpected"; $next_line = [ $1, $2, $3 ]; $self->set_next_line($next_line); # $ESCAPE_CHAR from YAML.pm if ($line =~ tr/\x00-\x08\x0b-\x0c\x0e-\x1f//) { $self->exception("Control characters are not allowed"); } return $next_line; } my %TOKEN_NAMES = ( '"' => 'DOUBLEQUOTE', "'" => 'SINGLEQUOTE', '|' => 'LITERAL', '>' => 'FOLDED', '!' => 'TAG', '*' => 'ALIAS', '&' => 'ANCHOR', ':' => 'COLON', '-' => 'DASH', '?' => 'QUESTION', '[' => 'FLOWSEQ_START', ']' => 'FLOWSEQ_END', '{' => 'FLOWMAP_START', '}' => 'FLOWMAP_END', ',' => 'FLOW_COMMA', '---' => 'DOC_START', '...' => 'DOC_END', ); sub fetch_next_tokens { my ($self) = @_; my $next = $self->next_tokens; return $next if @$next; my $next_line = $self->_fetch_next_line; if (not $next_line) { return []; } my $spaces = $next_line->[0]; my $yaml = \$next_line->[1]; if (not length $$yaml) { $self->_push_tokens([ EOL => join('', @$next_line), $self->line ]); $self->set_next_line(undef); return $next; } if (substr($$yaml, 0, 1) eq '#') { $self->_push_tokens([ EOL => join('', @$next_line), $self->line ]); $self->set_next_line(undef); return $next; } if (not $spaces and substr($$yaml, 0, 1) eq "%") { $self->_fetch_next_tokens_directive($yaml, $next_line->[2]); $self->set_context(0); $self->set_next_line(undef); return $next; } if (not $spaces and $$yaml =~ s/\A(---|\.\.\.)(?=$RE_WS|\z)//) { $self->_push_tokens([ $TOKEN_NAMES{ $1 } => $1, $self->line ]); } elsif ($self->flowcontext and $$yaml =~ m/\A[ \t]+(#.*)?\z/) { $self->_push_tokens([ EOL => join('', @$next_line), $self->line ]); $self->set_next_line(undef); return $next; } else { $self->_push_tokens([ SPACE => $spaces, $self->line ]); } my $partial = $self->_fetch_next_tokens($next_line); unless ($partial) { $self->set_next_line(undef); } return $next; } my %ANCHOR_ALIAS_TAG = ( '&' => 1, '*' => 1, '!' => 1 ); my %BLOCK_SCALAR = ( '|' => 1, '>' => 1 ); my %COLON_DASH_QUESTION = ( ':' => 1, '-' => 1, '?' => 1 ); my %QUOTED = ( '"' => 1, "'" => 1 ); my %FLOW = ( '{' => 1, '[' => 1, '}' => 1, ']' => 1, ',' => 1 ); my %CONTEXT = ( '"' => 1, "'" => 1, '>' => 1, '|' => 1 ); my $RE_ESCAPES = qr{(?: \\([ \\\/_0abefnrtvLNP\t"]) | \\x([0-9a-fA-F]{2}) | \\u([A-Fa-f0-9]{4}) | \\U([A-Fa-f0-9]{4,8}) )}x; my %CONTROL = ( '\\' => '\\', '/' => '/', n => "\n", t => "\t", r => "\r", b => "\b", 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'v' => "\x0b", "\t" => "\t", 'P' => "\x{2029}", L => "\x{2028}", 'N' => "\x85", '0' => "\0", '_' => "\xa0", ' ' => ' ', q/"/ => q/"/, ); sub _fetch_next_tokens { TRACE and warn __PACKAGE__.':'.__LINE__.": _fetch_next_tokens\n"; my ($self, $next_line) = @_; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; my @tokens; while (1) { unless (length $$yaml) { push @tokens, ( EOL => $eol, $self->line ); $self->_push_tokens(\@tokens); return; } my $first = substr($$yaml, 0, 1); my $plain = 0; if ($self->context) { if ($$yaml =~ s/\A($RE_WS*)://) { push @tokens, ( WS => $1, $self->line ) if $1; push @tokens, ( COLON => ':', $self->line ); $self->set_context(0); next; } if ($$yaml =~ s/\A($RE_WS*(?: #.*))\z//) { push @tokens, ( EOL => $1 . $eol, $self->line ); $self->_push_tokens(\@tokens); return; } $self->set_context(0); } if ($CONTEXT{ $first }) { push @tokens, ( CONTEXT => $first, $self->line ); $self->_push_tokens(\@tokens); return 1; } elsif ($COLON_DASH_QUESTION{ $first }) { my $token_name = $TOKEN_NAMES{ $first }; if ($$yaml =~ s/\A\Q$first\E($RE_WS+|\z)//) { my $after = $1; if (not $self->flowcontext and not $self->block) { push @tokens, ERROR => $first . $after, $self->line; $self->_push_tokens(\@tokens); $self->exception("Tabs can not be used for indentation"); } if ($after =~ tr/\t//) { $self->set_block(0); } my $token_name = $TOKEN_NAMES{ $first }; push @tokens, ( $token_name => $first, $self->line ); if (not defined $1) { push @tokens, ( EOL => $eol, $self->line ); $self->_push_tokens(\@tokens); return; } my $ws = $1; if ($$yaml =~ s/\A(#.*|)\z//) { push @tokens, ( EOL => $ws . $1 . $eol, $self->line ); $self->_push_tokens(\@tokens); return; } push @tokens, ( WS => $ws, $self->line ); next; } elsif ($self->flowcontext and $$yaml =~ s/\A:(?=[,\{\}\[\]])//) { push @tokens, ( $token_name => $first, $self->line ); next; } $plain = 1; } elsif ($ANCHOR_ALIAS_TAG{ $first }) { my $token_name = $TOKEN_NAMES{ $first }; my $REGEX = $REGEXES{ $token_name }; if ($$yaml =~ s/\A$REGEX//) { push @tokens, ( $token_name => $1, $self->line ); } else { push @tokens, ( "Invalid $token_name" => $$yaml, $self->line ); $self->_push_tokens(\@tokens); return; } } elsif ($first eq ' ' or $first eq "\t") { if ($$yaml =~ s/\A($RE_WS+)//) { my $ws = $1; if ($$yaml =~ s/\A((?:#.*)?\z)//) { push @tokens, ( EOL => $ws . $1 . $eol, $self->line ); $self->_push_tokens(\@tokens); return; } push @tokens, ( WS => $ws, $self->line ); } } elsif ($FLOW{ $first }) { push @tokens, ( $TOKEN_NAMES{ $first } => $first, $self->line ); substr($$yaml, 0, 1, ''); my $flowcontext = $self->flowcontext; if ($first eq '{' or $first eq '[') { $self->set_flowcontext(++$flowcontext); } elsif ($first eq '}' or $first eq ']') { $self->set_flowcontext(--$flowcontext); } } else { $plain = 1; } if ($plain) { push @tokens, ( CONTEXT => '', $self->line ); $self->_push_tokens(\@tokens); return 1; } } return; } sub fetch_plain { my ($self, $indent, $context) = @_; my $next_line = $self->next_line; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; my $REGEX = $RE_PLAIN_WORDS; if ($self->flowcontext) { $REGEX = $RE_PLAIN_WORDS_FLOW; } my @tokens; unless ($$yaml =~ s/\A($REGEX(?:[:]+(?=\:(\s|\z)))?)//) { $self->_push_tokens(\@tokens); $self->exception("Invalid plain scalar"); } my $plain = $1; push @tokens, ( PLAIN => $plain, $self->line ); if ($$yaml =~ s/\A(?:($RE_WS+#.*)|($RE_WS*))\z//) { if (defined $1) { push @tokens, ( EOL => $1 . $eol, $self->line ); $self->_push_tokens(\@tokens); $self->set_next_line(undef); return; } else { push @tokens, ( EOL => $2. $eol, $self->line ); $self->set_next_line(undef); } } else { $self->_push_tokens(\@tokens); my $partial = $self->_fetch_next_tokens($next_line); if (not $partial) { $self->set_next_line(undef); } return; } my $RE2 = $RE_PLAIN_WORDS2; if ($self->flowcontext) { $RE2 = $RE_PLAIN_WORDS_FLOW2; } my $fetch_next = 0; my @lines = ($plain); my @next; LOOP: while (1) { $next_line = $self->_fetch_next_line; if (not $next_line) { last LOOP; } my $spaces = $next_line->[0]; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; if (not length $$yaml) { push @tokens, ( EOL => $spaces . $eol, $self->line ); $self->set_next_line(undef); push @lines, ''; next LOOP; } if (not $spaces and $$yaml =~ s/\A(---|\.\.\.)(?=$RE_WS|\z)//) { push @next, $TOKEN_NAMES{ $1 } => $1, $self->line; $fetch_next = 1; last LOOP; } if ((length $spaces) < $indent) { last LOOP; } my $ws = ''; if ($$yaml =~ s/\A($RE_WS+)//) { $ws = $1; } if (not length $$yaml) { push @tokens, ( EOL => $spaces . $ws . $eol, $self->line ); $self->set_next_line(undef); push @lines, ''; next LOOP; } if ($$yaml =~ s/\A(#.*)\z//) { push @tokens, ( EOL => $spaces . $ws . $1 . $eol, $self->line ); $self->set_next_line(undef); last LOOP; } if ($$yaml =~ s/\A($RE2)//) { push @tokens, INDENT => $spaces, $self->line; push @tokens, WS => $ws, $self->line; push @tokens, PLAIN => $1, $self->line; push @lines, $1; my $ws = ''; if ($$yaml =~ s/\A($RE_WS+)//) { $ws = $1; } if (not length $$yaml) { push @tokens, EOL => $ws . $eol, $self->line; $self->set_next_line(undef); next LOOP; } if ($$yaml =~ s/\A(#.*)\z//) { push @tokens, EOL => $ws . $1 . $eol, $self->line; $self->set_next_line(undef); last LOOP; } else { push @tokens, WS => $ws, $self->line if $ws; $fetch_next = 1; } } else { push @tokens, SPACE => $spaces, $self->line; push @tokens, WS => $ws, $self->line; if ($self->flowcontext) { $fetch_next = 1; } else { push @tokens, ERROR => $$yaml, $self->line; } } last LOOP; } # remove empty lines at the end while (@lines > 1 and $lines[-1] eq '') { pop @lines; } if (@lines > 1) { my $value = YAML::PP::Render->render_multi_val(\@lines); my @eol; if ($tokens[-3] eq 'EOL') { @eol = splice @tokens, -3; } $self->push_subtokens( { name => 'PLAIN_MULTI', value => $value }, \@tokens); $self->_push_tokens([ @eol, @next ]); } else { $self->_push_tokens([ @tokens, @next ]); } @tokens = (); if ($fetch_next) { my $partial = $self->_fetch_next_tokens($next_line); if (not $partial) { $self->set_next_line(undef); } } return; } sub fetch_block { my ($self, $indent, $context) = @_; my $next_line = $self->next_line; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; my @tokens; my $token_name = $TOKEN_NAMES{ $context }; $$yaml =~ s/\A\Q$context\E// or die "Unexpected"; push @tokens, ( $token_name => $context, $self->line ); my $current_indent = $indent; my $started = 0; my $set_indent = 0; my $chomp = ''; if ($$yaml =~ s/\A([1-9])([+-]?)//) { push @tokens, ( BLOCK_SCALAR_INDENT => $1, $self->line ); $set_indent = $1; $chomp = $2 if $2; push @tokens, ( BLOCK_SCALAR_CHOMP => $2, $self->line ) if $2; } elsif ($$yaml =~ s/\A([+-])([1-9])?//) { push @tokens, ( BLOCK_SCALAR_CHOMP => $1, $self->line ); $chomp = $1; push @tokens, ( BLOCK_SCALAR_INDENT => $2, $self->line ) if $2; $set_indent = $2 if $2; } if ($set_indent) { $started = 1; $indent-- if $indent > 0; $current_indent = $indent + $set_indent; } if (not length $$yaml) { push @tokens, ( EOL => $eol, $self->line ); } elsif ($$yaml =~ s/\A($RE_WS*(?:$RE_WS#.*|))\z//) { push @tokens, ( EOL => $1 . $eol, $self->line ); } else { $self->_push_tokens(\@tokens); $self->exception("Invalid block scalar"); } my @lines; while (1) { $self->set_next_line(undef); $next_line = $self->_fetch_next_line; if (not $next_line) { last; } my $spaces = $next_line->[0]; my $content = $next_line->[1]; my $eol = $next_line->[2]; if (not $spaces and $content =~ m/\A(---|\.\.\.)(?=$RE_WS|\z)/) { last; } if ((length $spaces) < $current_indent) { if (length $content) { if ($content =~ m/\A\t/) { $self->_push_tokens(\@tokens); $self->exception("Invalid block scalar"); } last; } else { push @lines, ''; push @tokens, ( EOL => $spaces . $eol, $self->line ); next; } } if ((length $spaces) > $current_indent) { if ($started) { ($spaces, my $more_spaces) = unpack "a${current_indent}a*", $spaces; $content = $more_spaces . $content; } } unless (length $content) { push @lines, ''; push @tokens, ( INDENT => $spaces, $self->line, EOL => $eol, $self->line ); unless ($started) { $current_indent = length $spaces; } next; } unless ($started) { $started = 1; $current_indent = length $spaces; } push @lines, $content; push @tokens, ( INDENT => $spaces, $self->line, BLOCK_SCALAR_CONTENT => $content, $self->line, EOL => $eol, $self->line, ); } my $value = YAML::PP::Render->render_block_scalar($context, $chomp, \@lines); my @eol = splice @tokens, -3; $self->push_subtokens( { name => 'BLOCK_SCALAR', value => $value }, \@tokens ); $self->_push_tokens([ @eol ]); return 0; } sub fetch_quoted { my ($self, $indent, $context) = @_; my $next_line = $self->next_line; my $yaml = \$next_line->[1]; my $spaces = $next_line->[0]; my $token_name = $TOKEN_NAMES{ $context }; $$yaml =~ s/\A\Q$context// or die "Unexpected";; my @tokens = ( $token_name => $context, $self->line ); my $start = 1; my @values; while (1) { unless ($start) { $next_line = $self->_fetch_next_line or do { for (my $i = 0; $i < @tokens; $i+= 3) { my $token = $tokens[ $i + 1 ]; if (ref $token) { $tokens[ $i + 1 ] = $token->{orig}; } } $self->_push_tokens(\@tokens); $self->exception("Missing closing quote <$context> at EOF"); }; $start = 0; $spaces = $next_line->[0]; $yaml = \$next_line->[1]; if (not length $$yaml) { push @tokens, ( EOL => $spaces . $next_line->[2], $self->line ); $self->set_next_line(undef); push @values, { value => '', orig => '' }; next; } elsif (not $spaces and $$yaml =~ m/\A(---|\.\.\.)(?=$RE_WS|\z)/) { for (my $i = 0; $i < @tokens; $i+= 3) { my $token = $tokens[ $i + 1 ]; if (ref $token) { $tokens[ $i + 1 ] = $token->{orig}; } } $self->_push_tokens(\@tokens); $self->exception("Missing closing quote <$context> or invalid document marker"); } elsif ((length $spaces) < $indent) { for (my $i = 0; $i < @tokens; $i+= 3) { my $token = $tokens[ $i + 1 ]; if (ref $token) { $tokens[ $i + 1 ] = $token->{orig}; } } $self->_push_tokens(\@tokens); $self->exception("Wrong indendation or missing closing quote <$context>"); } if ($$yaml =~ s/\A($RE_WS+)//) { $spaces .= $1; } push @tokens, ( WS => $spaces, $self->line ); } my $v = $self->_read_quoted_tokens($start, $context, $yaml, \@tokens); push @values, $v; if ($tokens[-3] eq $token_name) { if ($start) { $self->push_subtokens( { name => 'QUOTED', value => $v->{value} }, \@tokens ); } else { my $value = YAML::PP::Render->render_quoted($context, \@values); $self->push_subtokens( { name => 'QUOTED_MULTILINE', value => $value }, \@tokens ); } $self->set_context(1) if $self->flowcontext; if (length $$yaml) { my $partial = $self->_fetch_next_tokens($next_line); if (not $partial) { $self->set_next_line(undef); } return 0; } else { @tokens = (); push @tokens, ( EOL => $next_line->[2], $self->line ); $self->_push_tokens(\@tokens); $self->set_next_line(undef); return; } } $tokens[-2] .= $next_line->[2]; $self->set_next_line(undef); $start = 0; } } sub _read_quoted_tokens { my ($self, $start, $first, $yaml, $tokens) = @_; my $quoted = ''; my $decoded = ''; my $token_name = $TOKEN_NAMES{ $first }; my $eol = ''; if ($first eq "'") { my $regex = $REGEXES{SINGLEQUOTED}; if ($$yaml =~ s/\A($regex)//) { $quoted .= $1; $decoded .= $1; $decoded =~ s/''/'/g; } unless (length $$yaml) { if ($quoted =~ s/($RE_WS+)\z//) { $eol = $1; $decoded =~ s/($eol)\z//; } } } else { ($quoted, $decoded, $eol) = $self->_read_doublequoted($yaml); } my $value = { value => $decoded, orig => $quoted }; if ($$yaml =~ s/\A$first//) { if ($start) { push @$tokens, ( $token_name . 'D' => $value, $self->line ); } else { push @$tokens, ( $token_name . 'D_LINE' => $value, $self->line ); } push @$tokens, ( $token_name => $first, $self->line ); return $value; } if (length $$yaml) { push @$tokens, ( $token_name . 'D' => $value->{orig}, $self->line ); $self->_push_tokens($tokens); $self->exception("Invalid quoted <$first> string"); } push @$tokens, ( $token_name . 'D_LINE' => $value, $self->line ); push @$tokens, ( EOL => $eol, $self->line ); return $value; } sub _read_doublequoted { my ($self, $yaml) = @_; my $quoted = ''; my $decoded = ''; my $eol = ''; while (1) { my $last = 1; if ($$yaml =~ s/\A([^"\\ \t]+)//) { $quoted .= $1; $decoded .= $1; $last = 0; } if ($$yaml =~ s/\A($RE_ESCAPES)//) { $quoted .= $1; my $dec = defined $2 ? $CONTROL{ $2 } : defined $3 ? chr hex $3 : defined $4 ? chr hex $4 : chr hex $5; $decoded .= $dec; $last = 0; } if ($$yaml =~ s/\A([ \t]+)//) { my $spaces = $1; if (length $$yaml) { $quoted .= $spaces; $decoded .= $spaces; $last = 0; } else { $eol = $spaces; last; } } if ($$yaml =~ s/\A(\\)\z//) { $quoted .= $1; $decoded .= $1; last; } last if $last; } return ($quoted, $decoded, $eol); } sub _fetch_next_tokens_directive { my ($self, $yaml, $eol) = @_; my @tokens; my $trailing_ws = ''; my $warn = $ENV{YAML_PP_RESERVED_DIRECTIVE} || 'warn'; if ($$yaml =~ s/\A(\s*%YAML[ \t]+([0-9]+\.[0-9]+))//) { my $dir = $1; my $version = $2; if ($$yaml =~ s/\A($RE_WS+)//) { $trailing_ws = $1; } elsif (length $$yaml) { push @tokens, ( 'Invalid directive' => $dir.$$yaml.$eol, $self->line ); $self->_push_tokens(\@tokens); return; } if ($version !~ m/^1\.[12]$/) { if ($warn eq 'warn') { warn "Unsupported YAML version '$dir'"; } elsif ($warn eq 'fatal') { push @tokens, ( 'Unsupported YAML version' => $dir, $self->line ); $self->_push_tokens(\@tokens); return; } } push @tokens, ( YAML_DIRECTIVE => $dir, $self->line ); } elsif ($$yaml =~ s/\A(\s*%TAG[ \t]+(!$RE_NS_WORD_CHAR*!|!)[ \t]+(tag:\S+|!$RE_URI_CHAR+))($RE_WS*)//) { push @tokens, ( TAG_DIRECTIVE => $1, $self->line ); # TODO my $tag_alias = $2; my $tag_url = $3; $trailing_ws = $4; } elsif ($$yaml =~ s/\A(\s*\A%(?:\w+).*)//) { push @tokens, ( RESERVED_DIRECTIVE => $1, $self->line ); if ($warn eq 'warn') { warn "Found reserved directive '$1'"; } elsif ($warn eq 'fatal') { die "Found reserved directive '$1'"; } } else { push @tokens, ( 'Invalid directive' => $$yaml, $self->line ); push @tokens, ( EOL => $eol, $self->line ); $self->_push_tokens(\@tokens); return; } if (not length $$yaml) { push @tokens, ( EOL => $eol, $self->line ); } elsif ($trailing_ws and $$yaml =~ s/\A(#.*)?\z//) { push @tokens, ( EOL => "$trailing_ws$1$eol", $self->line ); $self->_push_tokens(\@tokens); return; } elsif ($$yaml =~ s/\A([ \t]+#.*)?\z//) { push @tokens, ( EOL => "$1$eol", $self->line ); $self->_push_tokens(\@tokens); return; } else { push @tokens, ( 'Invalid directive' => $trailing_ws.$$yaml, $self->line ); push @tokens, ( EOL => $eol, $self->line ); } $self->_push_tokens(\@tokens); return; } sub _push_tokens { my ($self, $new_tokens) = @_; my $next = $self->next_tokens; my $line = $self->line; my $column = $self->offset; for (my $i = 0; $i < @$new_tokens; $i += 3) { my $value = $new_tokens->[ $i + 1 ]; my $name = $new_tokens->[ $i ]; my $line = $new_tokens->[ $i + 2 ]; my $push = { name => $name, line => $line, column => $column, value => $value, }; $column += length $value unless $name eq 'CONTEXT'; push @$next, $push; if ($name eq 'EOL') { $column = 0; } } $self->set_offset($column); return $next; } sub push_subtokens { my ($self, $token, $subtokens) = @_; my $next = $self->next_tokens; my $line = $self->line; my $column = $self->offset; $token->{column} = $column; $token->{subtokens} = \my @sub; for (my $i = 0; $i < @$subtokens; $i+=3) { my $name = $subtokens->[ $i ]; my $value = $subtokens->[ $i + 1 ]; my $line = $subtokens->[ $i + 2 ]; my $push = { name => $subtokens->[ $i ], line => $line, column => $column, }; if (ref $value eq 'HASH') { %$push = ( %$push, %$value ); $column += length $value->{orig}; } else { $push->{value} = $value; $column += length $value; } if ($push->{name} eq 'EOL') { $column = 0; } push @sub, $push; } $token->{line} = $sub[0]->{line}; push @$next, $token; $self->set_offset($column); return $next; } sub exception { my ($self, $msg) = @_; my $next = $self->next_tokens; $next = []; my $line = @$next ? $next->[0]->{line} : $self->line; my @caller = caller(0); my $yaml = ''; if (my $nl = $self->next_line) { $yaml = join '', @$nl; $yaml = $nl->[1]; } my $e = YAML::PP::Exception->new( line => $line, column => $self->offset + 1, msg => $msg, next => $next, where => $caller[1] . ' line ' . $caller[2], yaml => $yaml, ); croak $e; } 1; YAML-PP-v0.38.0/lib/YAML/PP/Highlight.pm0000644000175000017500000001424514556031647015634 0ustar tinatinause strict; use warnings; package YAML::PP::Highlight; our $VERSION = 'v0.38.0'; # VERSION our @EXPORT_OK = qw/ Dump /; use base 'Exporter'; use YAML::PP; use YAML::PP::Parser; use Encode; sub Dump { my (@docs) = @_; # Dumping objects is safe, so we enable the Perl schema here require YAML::PP::Schema::Perl; my $yp = YAML::PP->new( schema => [qw/ + Perl /] ); my $yaml = $yp->dump_string(@docs); my ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); my $highlighted = YAML::PP::Highlight->ansicolored($tokens); encode_utf8 $highlighted; } my %ansicolors = ( ANCHOR => [qw/ green /], ALIAS => [qw/ bold green /], TAG => [qw/ bold blue /], INDENT => [qw/ white on_grey3 /], COMMENT => [qw/ grey12 /], COLON => [qw/ bold magenta /], DASH => [qw/ bold magenta /], QUESTION => [qw/ bold magenta /], YAML_DIRECTIVE => [qw/ cyan /], TAG_DIRECTIVE => [qw/ bold cyan /], SINGLEQUOTE => [qw/ bold green /], SINGLEQUOTED => [qw/ green /], SINGLEQUOTED_LINE => [qw/ green /], DOUBLEQUOTE => [qw/ bold green /], DOUBLEQUOTED => [qw/ green /], DOUBLEQUOTED_LINE => [qw/ green /], LITERAL => [qw/ bold yellow /], FOLDED => [qw/ bold yellow /], DOC_START => [qw/ bold /], DOC_END => [qw/ bold /], BLOCK_SCALAR_CONTENT => [qw/ yellow /], TAB => [qw/ on_blue /], ERROR => [qw/ bold red /], EOL => [qw/ grey12 /], TRAILING_SPACE => [qw/ on_grey6 /], FLOWSEQ_START => [qw/ bold magenta /], FLOWSEQ_END => [qw/ bold magenta /], FLOWMAP_START => [qw/ bold magenta /], FLOWMAP_END => [qw/ bold magenta /], FLOW_COMMA => [qw/ bold magenta /], PLAINKEY => [qw/ bright_blue /], ); sub ansicolored { my ($class, $tokens, %args) = @_; my $expand_tabs = $args{expand_tabs}; $expand_tabs = 1 unless defined $expand_tabs; require Term::ANSIColor; local $Term::ANSIColor::EACHLINE = "\n"; my $ansi = ''; my $highlighted = ''; my @list = $class->transform($tokens); for my $token (@list) { my $name = $token->{name}; my $str = $token->{value}; my $color = $ansicolors{ $name }; if ($color) { $str = Term::ANSIColor::colored($color, $str); } $highlighted .= $str; } if ($expand_tabs) { # Tabs can't be displayed with ansicolors $highlighted =~ s/\t/' ' x 8/eg; } $ansi .= $highlighted; return $ansi; } my %htmlcolors = ( ANCHOR => 'anchor', ALIAS => 'alias', SINGLEQUOTE => 'singlequote', DOUBLEQUOTE => 'doublequote', SINGLEQUOTED => 'singlequoted', DOUBLEQUOTED => 'doublequoted', SINGLEQUOTED_LINE => 'singlequoted', DOUBLEQUOTED_LINE => 'doublequoted', INDENT => 'indent', DASH => 'dash', COLON => 'colon', QUESTION => 'question', YAML_DIRECTIVE => 'yaml_directive', TAG_DIRECTIVE => 'tag_directive', TAG => 'tag', COMMENT => 'comment', LITERAL => 'literal', FOLDED => 'folded', DOC_START => 'doc_start', DOC_END => 'doc_end', BLOCK_SCALAR_CONTENT => 'block_scalar_content', TAB => 'tab', ERROR => 'error', EOL => 'eol', TRAILING_SPACE => 'trailing_space', FLOWSEQ_START => 'flowseq_start', FLOWSEQ_END => 'flowseq_end', FLOWMAP_START => 'flowmap_start', FLOWMAP_END => 'flowmap_end', FLOW_COMMA => 'flow_comma', PLAINKEY => 'plainkey', NOEOL => 'noeol', ); sub htmlcolored { require HTML::Entities; my ($class, $tokens) = @_; my $html = ''; my @list = $class->transform($tokens); for my $token (@list) { my $name = $token->{name}; my $str = $token->{value}; my $colorclass = $htmlcolors{ $name } || 'default'; $str = HTML::Entities::encode_entities($str); $html .= qq{$str}; } return $html; } sub transform { my ($class, $tokens) = @_; my @list; for my $token (@$tokens) { my @values; my $value = $token->{value}; my $subtokens = $token->{subtokens}; if ($subtokens) { @values = @$subtokens; } else { @values = $token; } for my $token (@values) { my $value = defined $token->{orig} ? $token->{orig} : $token->{value}; if ($token->{name} eq 'EOL' and not length $value) { push @list, { name => 'NOEOL', value => '' }; next; } push @list, map { $_ =~ tr/\t/\t/ ? { name => 'TAB', value => $_ } : { name => $token->{name}, value => $_ } } split m/(\t+)/, $value; } } for my $i (0 .. $#list) { my $token = $list[ $i ]; my $name = $token->{name}; my $str = $token->{value}; my $trailing_space = 0; if ($token->{name} eq 'EOL') { if ($str =~ m/ +([\r\n]|\z)/) { $token->{name} = "TRAILING_SPACE"; } } elsif ($i < $#list) { if ($name eq 'PLAIN') { for my $n ($i+1 .. $#list) { my $next = $list[ $n ]; last if $next->{name} eq 'EOL'; next if $next->{name} =~ m/^(WS|SPACE)$/; if ($next->{name} eq 'COLON') { $token->{name} = 'PLAINKEY'; } } } my $next = $list[ $i + 1]; if ($next->{name} eq 'EOL') { if ($str =~ m/ \z/ and $name =~ m/^(BLOCK_SCALAR_CONTENT|WS|INDENT)$/) { $token->{name} = "TRAILING_SPACE"; } } } } return @list; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Highlight - Syntax highlighting utilities =head1 SYNOPSIS use YAML::PP::Highlight qw/ Dump /; my $highlighted = Dump $data; =head1 FUNCTIONS =over =item Dump =back use YAML::PP::Highlight qw/ Dump /; my $highlighted = Dump $data; my $highlighted = Dump @docs; It will dump the given data, and then parse it again to create tokens, which are then highlighted with ansi colors. The return value is ansi colored YAML. YAML-PP-v0.38.0/lib/YAML/PP/Render.pm0000644000175000017500000000706114556031647015142 0ustar tinatina# ABSTRACT: YAML::PP Rendering functions use strict; use warnings; package YAML::PP::Render; our $VERSION = 'v0.38.0'; # VERSION use constant TRACE => $ENV{YAML_PP_TRACE} ? 1 : 0; sub render_quoted { my ($self, $style, $lines) = @_; my $quoted = ''; my $addspace = 0; for my $i (0 .. $#$lines) { my $line = $lines->[ $i ]; my $value = $line->{value}; my $last = $i == $#$lines; my $first = $i == 0; if ($value eq '') { if ($first) { $addspace = 1; } elsif ($last) { $quoted .= ' ' if $addspace; } else { $addspace = 0; $quoted .= "\n"; } next; } $quoted .= ' ' if $addspace; $addspace = 1; if ($style eq '"') { if ($line->{orig} =~ m/\\$/) { $line->{value} =~ s/\\$//; $value =~ s/\\$//; $addspace = 0; } } $quoted .= $value; } return $quoted; } sub render_block_scalar { my ($self, $block_type, $chomp, $lines) = @_; my ($folded, $keep, $trim); if ($block_type eq '>') { $folded = 1; } if ($chomp eq '+') { $keep = 1; } elsif ($chomp eq '-') { $trim = 1; } my $string = ''; if (not $keep) { # remove trailing empty lines while (@$lines) { last if $lines->[-1] ne ''; pop @$lines; } } if ($folded) { my $prev = 'START'; my $trailing = ''; if ($keep) { while (@$lines and $lines->[-1] eq '') { pop @$lines; $trailing .= "\n"; } } for my $i (0 .. $#$lines) { my $line = $lines->[ $i ]; my $type = $line eq '' ? 'EMPTY' : $line =~ m/\A[ \t]/ ? 'MORE' : 'CONTENT'; if ($prev eq 'MORE' and $type eq 'EMPTY') { $type = 'MORE'; } elsif ($prev eq 'CONTENT') { if ($type ne 'CONTENT') { $string .= "\n"; } elsif ($type eq 'CONTENT') { $string .= ' '; } } elsif ($prev eq 'START' and $type eq 'EMPTY') { $string .= "\n"; $type = 'START'; } elsif ($prev eq 'EMPTY' and $type ne 'CONTENT') { $string .= "\n"; } $string .= $line; if ($type eq 'MORE' and $i < $#$lines) { $string .= "\n"; } $prev = $type; } if ($keep) { $string .= $trailing; } $string .= "\n" if @$lines and not $trim; } else { for my $i (0 .. $#$lines) { $string .= $lines->[ $i ]; $string .= "\n" if ($i != $#$lines or not $trim); } } TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$string], ['string']); return $string; } sub render_multi_val { my ($self, $multi) = @_; my $string = ''; my $start = 1; for my $line (@$multi) { if (not $start) { if ($line eq '') { $string .= "\n"; $start = 1; } else { $string .= " $line"; } } else { $string .= $line; $start = 0; } } return $string; } 1; YAML-PP-v0.38.0/lib/YAML/PP/Constructor.pm0000644000175000017500000003113214556031647016244 0ustar tinatina# ABSTRACT: Construct data structure from Parser Events use strict; use warnings; package YAML::PP::Constructor; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; use Scalar::Util qw/ reftype /; use Carp qw/ croak /; use constant DEBUG => ($ENV{YAML_PP_LOAD_DEBUG} or $ENV{YAML_PP_LOAD_TRACE}) ? 1 : 0; use constant TRACE => $ENV{YAML_PP_LOAD_TRACE} ? 1 : 0; my %cyclic_refs = qw/ allow 1 ignore 1 warn 1 fatal 1 /; sub new { my ($class, %args) = @_; my $default_yaml_version = delete $args{default_yaml_version}; my $duplicate_keys = delete $args{duplicate_keys}; unless (defined $duplicate_keys) { $duplicate_keys = 0; } my $preserve = delete $args{preserve} || 0; if ($preserve == 1) { $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS; } my $cyclic_refs = delete $args{cyclic_refs} || 'fatal'; die "Invalid value for cyclic_refs: $cyclic_refs" unless $cyclic_refs{ $cyclic_refs }; my $schemas = delete $args{schemas}; if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my $self = bless { default_yaml_version => $default_yaml_version, schemas => $schemas, cyclic_refs => $cyclic_refs, preserve => $preserve, duplicate_keys => $duplicate_keys, }, $class; $self->init; return $self; } sub clone { my ($self) = @_; my $clone = { schemas => $self->{schemas}, schema => $self->{schema}, default_yaml_version => $self->{default_yaml_version}, cyclic_refs => $self->cyclic_refs, preserve => $self->{preserve}, }; return bless $clone, ref $self; } sub init { my ($self) = @_; $self->set_docs([]); $self->set_stack([]); $self->set_anchors({}); $self->set_yaml_version($self->default_yaml_version); $self->set_schema($self->schemas->{ $self->yaml_version } ); } sub docs { return $_[0]->{docs} } sub stack { return $_[0]->{stack} } sub anchors { return $_[0]->{anchors} } sub set_docs { $_[0]->{docs} = $_[1] } sub set_stack { $_[0]->{stack} = $_[1] } sub set_anchors { $_[0]->{anchors} = $_[1] } sub schemas { return $_[0]->{schemas} } sub schema { return $_[0]->{schema} } sub set_schema { $_[0]->{schema} = $_[1] } sub cyclic_refs { return $_[0]->{cyclic_refs} } sub set_cyclic_refs { $_[0]->{cyclic_refs} = $_[1] } sub yaml_version { return $_[0]->{yaml_version} } sub set_yaml_version { $_[0]->{yaml_version} = $_[1] } sub default_yaml_version { return $_[0]->{default_yaml_version} } sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER } sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE } sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE } sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS } sub duplicate_keys { return $_[0]->{duplicate_keys} } sub document_start_event { my ($self, $event) = @_; my $stack = $self->stack; if ($event->{version_directive}) { my $version = $event->{version_directive}; $version = "$version->{major}.$version->{minor}"; if ($self->{schemas}->{ $version }) { $self->set_yaml_version($version); $self->set_schema($self->schemas->{ $version }); } else { $self->set_yaml_version($self->default_yaml_version); $self->set_schema($self->schemas->{ $self->default_yaml_version }); } } my $ref = []; push @$stack, { type => 'document', ref => $ref, data => $ref, event => $event }; } sub document_end_event { my ($self, $event) = @_; my $stack = $self->stack; my $last = pop @$stack; $last->{type} eq 'document' or die "Expected mapping, but got $last->{type}"; if (@$stack) { die "Got unexpected end of document"; } my $docs = $self->docs; push @$docs, $last->{ref}->[0]; $self->set_anchors({}); $self->set_stack([]); } sub mapping_start_event { my ($self, $event) = @_; my ($data, $on_data) = $self->schema->create_mapping($self, $event); my $ref = { type => 'mapping', ref => [], data => \$data, event => $event, on_data => $on_data, }; my $stack = $self->stack; my $preserve_order = $self->preserve_order; my $preserve_style = $self->preserve_flow_style; my $preserve_alias = $self->preserve_alias; if (($preserve_order or $preserve_style or $preserve_alias) and not tied(%$data)) { tie %$data, 'YAML::PP::Preserve::Hash', %$data; } if ($preserve_style) { my $t = tied %$data; $t->{style} = $event->{style}; } push @$stack, $ref; if (defined(my $anchor = $event->{anchor})) { if ($preserve_alias) { my $t = tied %$data; unless (exists $self->anchors->{ $anchor }) { # Repeated anchors cannot be preserved $t->{alias} = $anchor; } } $self->anchors->{ $anchor } = { data => $ref->{data} }; } } sub mapping_end_event { my ($self, $event) = @_; my $stack = $self->stack; my $last = pop @$stack; my ($ref, $data) = @{ $last }{qw/ ref data /}; $last->{type} eq 'mapping' or die "Expected mapping, but got $last->{type}"; my @merge_keys; my @ref; for (my $i = 0; $i < @$ref; $i += 2) { my $key = $ref->[ $i ]; if (ref $key eq 'YAML::PP::Type::MergeKey') { my $merge = $ref->[ $i + 1 ]; if ((reftype($merge) || '') eq 'HASH') { push @merge_keys, $merge; } elsif ((reftype($merge) || '') eq 'ARRAY') { for my $item (@$merge) { if ((reftype($item) || '') eq 'HASH') { push @merge_keys, $item; } else { die "Expected hash for merge key"; } } } else { die "Expected hash or array for merge key"; } } else { push @ref, $key, $ref->[ $i + 1 ]; } } for my $merge (@merge_keys) { for my $key (keys %$merge) { unless (exists $$data->{ $key }) { $$data->{ $key } = $merge->{ $key }; } } } my $on_data = $last->{on_data} || sub { my ($self, $hash, $items) = @_; my %seen; for (my $i = 0; $i < @$items; $i += 2) { my ($key, $value) = @$items[ $i, $i + 1 ]; $key = '' unless defined $key; if (ref $key) { $key = $self->stringify_complex($key); } if ($seen{ $key }++ and not $self->duplicate_keys) { croak "Duplicate key '$key'"; } $$hash->{ $key } = $value; } }; $on_data->($self, $data, \@ref); push @{ $stack->[-1]->{ref} }, $$data; if (defined(my $anchor = $last->{event}->{anchor})) { $self->anchors->{ $anchor }->{finished} = 1; } return; } sub sequence_start_event { my ($self, $event) = @_; my ($data, $on_data) = $self->schema->create_sequence($self, $event); my $ref = { type => 'sequence', ref => [], data => \$data, event => $event, on_data => $on_data, }; my $stack = $self->stack; my $preserve_style = $self->preserve_flow_style; my $preserve_alias = $self->preserve_alias; if ($preserve_style or $preserve_alias and not tied(@$data)) { tie @$data, 'YAML::PP::Preserve::Array', @$data; my $t = tied @$data; $t->{style} = $event->{style}; } push @$stack, $ref; if (defined(my $anchor = $event->{anchor})) { if ($preserve_alias) { my $t = tied @$data; unless (exists $self->anchors->{ $anchor }) { # Repeated anchors cannot be preserved $t->{alias} = $anchor; } } $self->anchors->{ $anchor } = { data => $ref->{data} }; } } sub sequence_end_event { my ($self, $event) = @_; my $stack = $self->stack; my $last = pop @$stack; $last->{type} eq 'sequence' or die "Expected mapping, but got $last->{type}"; my ($ref, $data) = @{ $last }{qw/ ref data /}; my $on_data = $last->{on_data} || sub { my ($self, $array, $items) = @_; push @$$array, @$items; }; $on_data->($self, $data, $ref); push @{ $stack->[-1]->{ref} }, $$data; if (defined(my $anchor = $last->{event}->{anchor})) { my $test = $self->anchors->{ $anchor }; $self->anchors->{ $anchor }->{finished} = 1; } return; } sub stream_start_event {} sub stream_end_event {} sub scalar_event { my ($self, $event) = @_; DEBUG and warn "CONTENT $event->{value} ($event->{style})\n"; my $value = $self->schema->load_scalar($self, $event); my $last = $self->stack->[-1]; my $preserve_alias = $self->preserve_alias; my $preserve_style = $self->preserve_scalar_style; if (($preserve_style or $preserve_alias) and not ref $value) { my %args = ( value => $value, tag => $event->{tag}, ); if ($preserve_style) { $args{style} = $event->{style}; } if ($preserve_alias and defined $event->{anchor}) { my $anchor = $event->{anchor}; unless (exists $self->anchors->{ $anchor }) { # Repeated anchors cannot be preserved $args{alias} = $event->{anchor}; } } $value = YAML::PP::Preserve::Scalar->new( %args ); } if (defined (my $name = $event->{anchor})) { $self->anchors->{ $name } = { data => \$value, finished => 1 }; } push @{ $last->{ref} }, $value; } sub alias_event { my ($self, $event) = @_; my $value; my $name = $event->{value}; if (my $anchor = $self->anchors->{ $name }) { # We know this is a cyclic ref since the node hasn't # been constructed completely yet unless ($anchor->{finished} ) { my $cyclic_refs = $self->cyclic_refs; if ($cyclic_refs ne 'allow') { if ($cyclic_refs eq 'fatal') { croak "Found cyclic ref for alias '$name'"; } if ($cyclic_refs eq 'warn') { $anchor = { data => \undef }; warn "Found cyclic ref for alias '$name'"; } elsif ($cyclic_refs eq 'ignore') { $anchor = { data => \undef }; } } } $value = $anchor->{data}; } else { croak "No anchor defined for alias '$name'"; } my $last = $self->stack->[-1]; push @{ $last->{ref} }, $$value; } sub stringify_complex { my ($self, $data) = @_; return $data if ( ref $data eq 'YAML::PP::Preserve::Scalar' and ($self->preserve_scalar_style or $self->preserve_alias) ); require Data::Dumper; local $Data::Dumper::Quotekeys = 0; local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 0; local $Data::Dumper::Useqq = 0; local $Data::Dumper::Sortkeys = 1; my $string = Data::Dumper->Dump([$data], ['data']); $string =~ s/^\$data = //; return $string; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Constructor - Constructing data structure from parsing events =head1 METHODS =over =item new The Constructor constructor my $constructor = YAML::PP::Constructor->new( schema => $schema, cyclic_refs => $cyclic_refs, ); =item init Resets any data being used during construction. $constructor->init; =item document_start_event, document_end_event, mapping_start_event, mapping_end_event, sequence_start_event, sequence_end_event, scalar_event, alias_event, stream_start_event, stream_end_event These methods are called from L: $constructor->document_start_event($event); =item anchors, set_anchors Helper for storing anchors during construction =item docs, set_docs Helper for storing resulting documents during construction =item stack, set_stack Helper for storing data during construction =item cyclic_refs, set_cyclic_refs Option for controlling the behaviour when finding circular references =item schema, set_schema Holds a L object =item stringify_complex When constructing a hash and getting a non-scalar key, this method is used to stringify the key. It uses a terse Data::Dumper output. Other modules, like L, use the default stringification, C for example. =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Common.pm0000644000175000017500000001573114556031647015156 0ustar tinatinause strict; use warnings; package YAML::PP::Common; our $VERSION = 'v0.38.0'; # VERSION use base 'Exporter'; my @p = qw/ PRESERVE_ALL PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; my @s = qw/ YAML_ANY_SCALAR_STYLE YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_QUOTED_SCALAR_STYLE YAML_ANY_SEQUENCE_STYLE YAML_BLOCK_SEQUENCE_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_ANY_MAPPING_STYLE YAML_BLOCK_MAPPING_STYLE YAML_FLOW_MAPPING_STYLE /; our @EXPORT_OK = (@s, @p); our %EXPORT_TAGS = ( PRESERVE => [@p], STYLES => [@s], ); use constant { YAML_ANY_SCALAR_STYLE => 0, YAML_PLAIN_SCALAR_STYLE => 1, YAML_SINGLE_QUOTED_SCALAR_STYLE => 2, YAML_DOUBLE_QUOTED_SCALAR_STYLE => 3, YAML_LITERAL_SCALAR_STYLE => 4, YAML_FOLDED_SCALAR_STYLE => 5, YAML_QUOTED_SCALAR_STYLE => 'Q', # deprecated YAML_ANY_SEQUENCE_STYLE => 0, YAML_BLOCK_SEQUENCE_STYLE => 1, YAML_FLOW_SEQUENCE_STYLE => 2, YAML_ANY_MAPPING_STYLE => 0, YAML_BLOCK_MAPPING_STYLE => 1, YAML_FLOW_MAPPING_STYLE => 2, PRESERVE_ORDER => 2, PRESERVE_SCALAR_STYLE => 4, PRESERVE_FLOW_STYLE => 8, PRESERVE_ALIAS => 16, PRESERVE_ALL => 31, }; my %scalar_style_to_string = ( YAML_PLAIN_SCALAR_STYLE() => ':', YAML_SINGLE_QUOTED_SCALAR_STYLE() => "'", YAML_DOUBLE_QUOTED_SCALAR_STYLE() => '"', YAML_LITERAL_SCALAR_STYLE() => '|', YAML_FOLDED_SCALAR_STYLE() => '>', ); sub event_to_test_suite { my ($event, $args) = @_; my $ev = $event->{name}; my $string; my $content = $event->{value}; my $properties = ''; $properties .= " &$event->{anchor}" if defined $event->{anchor}; $properties .= " <$event->{tag}>" if defined $event->{tag}; if ($ev eq 'document_start_event') { $string = "+DOC"; $string .= " ---" unless $event->{implicit}; } elsif ($ev eq 'document_end_event') { $string = "-DOC"; $string .= " ..." unless $event->{implicit}; } elsif ($ev eq 'stream_start_event') { $string = "+STR"; } elsif ($ev eq 'stream_end_event') { $string = "-STR"; } elsif ($ev eq 'mapping_start_event') { $string = "+MAP"; if ($event->{style} and $event->{style} eq YAML_FLOW_MAPPING_STYLE) { $string .= ' {}' if $args->{flow}; } $string .= $properties; if (0) { # doesn't match yaml-test-suite format } } elsif ($ev eq 'sequence_start_event') { $string = "+SEQ"; if ($event->{style} and $event->{style} eq YAML_FLOW_SEQUENCE_STYLE) { $string .= ' []' if $args->{flow}; } $string .= $properties; if (0) { # doesn't match yaml-test-suite format } } elsif ($ev eq 'mapping_end_event') { $string = "-MAP"; } elsif ($ev eq 'sequence_end_event') { $string = "-SEQ"; } elsif ($ev eq 'scalar_event') { $string = '=VAL'; $string .= $properties; $content =~ s/\\/\\\\/g; $content =~ s/\t/\\t/g; $content =~ s/\r/\\r/g; $content =~ s/\n/\\n/g; $content =~ s/[\b]/\\b/g; $string .= ' ' . $scalar_style_to_string{ $event->{style} } . $content; } elsif ($ev eq 'alias_event') { $string = "=ALI *$content"; } return $string; } sub test_suite_to_event { my ($str) = @_; my $event = {}; if ($str =~ s/^\+STR//) { $event->{name} = 'stream_start_event'; } elsif ($str =~ s/^\-STR//) { $event->{name} = 'stream_end_event'; } elsif ($str =~ s/^\+DOC//) { $event->{name} = 'document_start_event'; if ($str =~ s/^ ---//) { $event->{implicit} = 0; } else { $event->{implicit} = 1; } } elsif ($str =~ s/^\-DOC//) { $event->{name} = 'document_end_event'; if ($str =~ s/^ \.\.\.//) { $event->{implicit} = 0; } else { $event->{implicit} = 1; } } elsif ($str =~ s/^\+SEQ//) { $event->{name} = 'sequence_start_event'; if ($str =~ s/^ \&(\S+)//) { $event->{anchor} = $1; } if ($str =~ s/^ <(\S+)>//) { $event->{tag} = $1; } } elsif ($str =~ s/^\-SEQ//) { $event->{name} = 'sequence_end_event'; } elsif ($str =~ s/^\+MAP//) { $event->{name} = 'mapping_start_event'; if ($str =~ s/^ \&(\S+)//) { $event->{anchor} = $1; } if ($str =~ s/^ <(\S+)>//) { $event->{tag} = $1; } } elsif ($str =~ s/^\-MAP//) { $event->{name} = 'mapping_end_event'; } elsif ($str =~ s/^=VAL//) { $event->{name} = 'scalar_event'; if ($str =~ s/^ <(\S+)>//) { $event->{tag} = $1; } if ($str =~ s/^ [:'">|]//) { $event->{style} = $1; } if ($str =~ s/^(.*)//) { $event->{value} = $1; } } elsif ($str =~ s/^=ALI//) { $event->{name} = 'alias_event'; if ($str =~ s/^ \*(.*)//) { $event->{value} = $1; } } else { die "Could not parse event '$str'"; } return $event; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Common - Constants and common functions =head1 SYNOPSIS use YAML::PP::Common ':STYLES'; # or use YAML::PP::Common qw/ YAML_ANY_SCALAR_STYLE YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_QUOTED_SCALAR_STYLE YAML_ANY_SEQUENCE_STYLE YAML_BLOCK_SEQUENCE_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_ANY_MAPPING_STYLE YAML_BLOCK_MAPPING_STYLE YAML_FLOW_MAPPING_STYLE /; use YAML::PP::Common ':PRESERVE'; # or use YAML::PP::Common qw/ PRESERVE_ALL PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /: =head1 DESCRIPTION This module provides common constants and functions for modules working with YAML::PP events. =head1 FUNCTIONS =over =item event_to_test_suite my $string = YAML::PP::Common::event_to_test_suite($event_prom_parser); For examples of the returned format look into this distributions's directory C which is a copy of L. =item test_suite_to_event my $event = YAML::PP::Common::test_suite_to_event($str); Turns an event string in test suite format into an event hashref. Not complete yet. =back YAML-PP-v0.38.0/lib/YAML/PP/Representer.pm0000644000175000017500000001573414556031647016227 0ustar tinatinause strict; use warnings; package YAML::PP::Representer; our $VERSION = 'v0.38.0'; # VERSION use Scalar::Util qw/ reftype blessed refaddr /; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_ANY_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE YAML_BLOCK_MAPPING_STYLE YAML_BLOCK_SEQUENCE_STYLE PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; use B; sub new { my ($class, %args) = @_; my $preserve = delete $args{preserve} || 0; if ($preserve == 1) { $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS; } my $self = bless { schema => delete $args{schema}, preserve => $preserve, }, $class; if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } return $self; } sub clone { my ($self) = @_; my $clone = { schema => $self->schema, preserve => $self->{preserve}, }; return bless $clone, ref $self; } sub schema { return $_[0]->{schema} } sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER } sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE } sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE } sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS } sub represent_node { my ($self, $node) = @_; my $preserve_alias = $self->preserve_alias; my $preserve_style = $self->preserve_scalar_style; if ($preserve_style or $preserve_alias) { if (ref $node->{value} eq 'YAML::PP::Preserve::Scalar') { my $value = $node->{value}->value; if ($preserve_style) { $node->{style} = $node->{value}->style; } # $node->{tag} = $node->{value}->tag; $node->{value} = $value; } } $node->{reftype} = reftype($node->{value}); if (not $node->{reftype} and reftype(\$node->{value}) eq 'GLOB') { $node->{reftype} = 'GLOB'; } if ($node->{reftype}) { $self->_represent_noderef($node); } else { $self->_represent_node_nonref($node); } $node->{reftype} = (reftype $node->{data}) || ''; if ($node->{reftype} eq 'HASH' and my $tied = tied(%{ $node->{data} })) { my $representers = $self->schema->representers; $tied = ref $tied; if (my $def = $representers->{tied_equals}->{ $tied }) { my $code = $def->{code}; my $done = $code->($self, $node); } } if ($node->{reftype} eq 'HASH') { unless (defined $node->{items}) { # by default we sort hash keys my @keys; if ($self->preserve_order) { @keys = keys %{ $node->{data} }; } else { @keys = sort keys %{ $node->{data} }; } for my $key (@keys) { push @{ $node->{items} }, $key, $node->{data}->{ $key }; } } my %args; if ($self->preserve_flow_style and reftype $node->{value} eq 'HASH') { if (my $tied = tied %{ $node->{value} } ) { $args{style} = $tied->{style}; } } return [ mapping => $node, %args ]; } elsif ($node->{reftype} eq 'ARRAY') { unless (defined $node->{items}) { @{ $node->{items} } = @{ $node->{data} }; } my %args; if ($self->preserve_flow_style and reftype $node->{value} eq 'ARRAY') { if (my $tied = tied @{ $node->{value} } ) { $args{style} = $tied->{style}; } } return [ sequence => $node, %args ]; } elsif ($node->{reftype}) { die "Cannot handle reftype '$node->{reftype}' (you might want to enable YAML::PP::Schema::Perl)"; } else { unless (defined $node->{items}) { $node->{items} = [$node->{data}]; } return [ scalar => $node ]; } } my $bool_code = <<'EOM'; sub { my ($x) = @_; use experimental qw/ builtin /; builtin::is_bool($x); } EOM my $is_bool; sub _represent_node_nonref { my ($self, $node) = @_; my $representers = $self->schema->representers; if (not defined $node->{value}) { if (my $undef = $representers->{undef}) { return 1 if $undef->($self, $node); } else { $node->{style} = YAML_SINGLE_QUOTED_SCALAR_STYLE; $node->{data} = ''; return 1; } } if ($] >= 5.036000 and my $rep = $representers->{bool}) { $is_bool ||= eval $bool_code; if ($is_bool->($node->{value})) { return $rep->{code}->($self, $node); } } for my $rep (@{ $representers->{flags} }) { my $check_flags = $rep->{flags}; my $flags = B::svref_2object(\$node->{value})->FLAGS; if ($flags & $check_flags) { return 1 if $rep->{code}->($self, $node); } } if (my $rep = $representers->{equals}->{ $node->{value} }) { return 1 if $rep->{code}->($self, $node); } for my $rep (@{ $representers->{regex} }) { if ($node->{value} =~ $rep->{regex}) { return 1 if $rep->{code}->($self, $node); } } unless (defined $node->{data}) { $node->{data} = $node->{value}; } unless (defined $node->{style}) { $node->{style} = YAML_ANY_SCALAR_STYLE; $node->{style} = ""; } } sub _represent_noderef { my ($self, $node) = @_; my $representers = $self->schema->representers; if (my $classname = blessed($node->{value})) { if (my $def = $representers->{class_equals}->{ $classname }) { my $code = $def->{code}; return 1 if $code->($self, $node); } for my $matches (@{ $representers->{class_matches} }) { my ($re, $code) = @$matches; if (ref $re and $classname =~ $re or $re) { return 1 if $code->($self, $node); } } for my $isa (@{ $representers->{class_isa} }) { my ($class_name, $code) = @$isa; if ($node->{ value }->isa($class_name)) { return 1 if $code->($self, $node); } } } if ($node->{reftype} eq 'SCALAR' and my $scalarref = $representers->{scalarref}) { my $code = $scalarref->{code}; return 1 if $code->($self, $node); } if ($node->{reftype} eq 'REF' and my $refref = $representers->{refref}) { my $code = $refref->{code}; return 1 if $code->($self, $node); } if ($node->{reftype} eq 'CODE' and my $coderef = $representers->{coderef}) { my $code = $coderef->{code}; return 1 if $code->($self, $node); } if ($node->{reftype} eq 'GLOB' and my $glob = $representers->{glob}) { my $code = $glob->{code}; return 1 if $code->($self, $node); } $node->{data} = $node->{value}; } 1; YAML-PP-v0.38.0/lib/YAML/PP/Perl.pm0000644000175000017500000000276714556031647014635 0ustar tinatinause strict; use warnings; package YAML::PP::Perl; our $VERSION = 'v0.38.0'; # VERSION use base 'Exporter'; use base 'YAML::PP'; our @EXPORT_OK = qw/ Load Dump LoadFile DumpFile /; use YAML::PP; use YAML::PP::Schema::Perl; sub new { my ($class, %args) = @_; $args{schema} ||= [qw/ Core Perl /]; $class->SUPER::new(%args); } sub Load { my ($yaml) = @_; __PACKAGE__->new->load_string($yaml); } sub LoadFile { my ($file) = @_; __PACKAGE__->new->load_file($file); } sub Dump { my (@data) = @_; __PACKAGE__->new->dump_string(@data); } sub DumpFile { my ($file, @data) = @_; __PACKAGE__->new->dump_file($file, @data); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Perl - Convenience module for loading and dumping Perl objects =head1 SYNOPSIS use YAML::PP::Perl; my @docs = YAML::PP::Perl->new->load_string($yaml); my @docs = YAML::PP::Perl::Load($yaml); # same as use YAML::PP; my $yp = YAML::PP->new( schema => [qw/ Core Perl /] ); my @docs = $yp->load_string($yaml); =head1 DESCRIPTION This is just for convenience. It will create a YAML::PP object using the default schema (C) and the L schema. See L for documentation. =head1 METHODS =over =item Load, Dump, LoadFile, DumpFile These work like the functions in L, just adding the C schema. =item new Constructor, works like in L, just adds the C schema to the list of arguments. =back YAML-PP-v0.38.0/lib/YAML/PP/Exception.pm0000644000175000017500000000360514556031647015661 0ustar tinatinause strict; use warnings; package YAML::PP::Exception; our $VERSION = 'v0.38.0'; # VERSION use overload '""' => \&to_string; sub new { my ($class, %args) = @_; my $self = bless { line => $args{line}, msg => $args{msg}, next => $args{next}, where => $args{where}, yaml => $args{yaml}, got => $args{got}, expected => $args{expected}, column => $args{column}, }, $class; return $self; } sub to_string { my ($self) = @_; my $next = $self->{next}; my $line = $self->{line}; my $column = $self->{column}; my $yaml = ''; for my $token (@$next) { last if $token->{name} eq 'EOL'; $yaml .= $token->{value}; } $column = '???' unless defined $column; my $remaining_yaml = $self->{yaml}; $remaining_yaml = '' unless defined $remaining_yaml; $yaml .= $remaining_yaml; { local $@; # avoid bug in old Data::Dumper require Data::Dumper; local $Data::Dumper::Useqq = 1; local $Data::Dumper::Terse = 1; $yaml = Data::Dumper->Dump([$yaml], ['yaml']); chomp $yaml; } my $lines = 5; my @fields; if ($self->{got} and $self->{expected}) { $lines = 6; $line = $self->{got}->{line}; $column = $self->{got}->{column} + 1; @fields = ( "Line" => $line, "Column" => $column, "Expected", join(" ", @{ $self->{expected} }), "Got", $self->{got}->{name}, "Where", $self->{where}, "YAML", $yaml, ); } else { @fields = ( "Line" => $line, "Column" => $column, "Message", $self->{msg}, "Where", $self->{where}, "YAML", $yaml, ); } my $fmt = join "\n", ("%-10s: %s") x $lines; my $string = sprintf $fmt, @fields; return $string; } 1; YAML-PP-v0.38.0/lib/YAML/PP/Writer/0000755000175000017500000000000014556031647014635 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/PP/Writer/File.pm0000644000175000017500000000346114556031647016056 0ustar tinatinause strict; use warnings; package YAML::PP::Writer::File; our $VERSION = 'v0.38.0'; # VERSION use Scalar::Util qw/ openhandle /; use base qw/ YAML::PP::Writer /; use Carp qw/ croak /; sub _open_handle { my ($self) = @_; if (openhandle($self->{output})) { $self->{filehandle} = $self->{output}; return $self->{output}; } open my $fh, '>:encoding(UTF-8)', $self->{output} or croak "Could not open '$self->{output}' for writing: $!"; $self->{filehandle} = $fh; return $fh; } sub write { my ($self, $line) = @_; my $fh = $self->{filehandle}; print $fh $line; } sub init { my ($self) = @_; my $fh = $self->_open_handle; } sub finish { my ($self) = @_; if (openhandle($self->{output})) { # Original argument was a file handle, so the caller needs # to close it return; } close $self->{filehandle}; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Writer::File - Write YAML output to file or file handle =head1 SYNOPSIS my $writer = YAML::PP::Writer::File->new(output => $file); =head1 DESCRIPTION The L sends its output to the writer. You can use your own writer. if you want to send the YAML output to somewhere else. See t/44.writer.t for an example. =head1 METHODS =over =item new my $writer = YAML::PP::Writer::File->new(output => $file); my $writer = YAML::PP::Writer::File->new(output => $filehandle); Constructor. =item write $writer->write('- '); =item init $writer->init; Initialize =item finish $writer->finish; Gets called when the output ends. If The argument was a filename, the filehandle will be closed. If the argument was a filehandle, the caller needs to close it. =item output, set_output Getter/setter for the YAML output =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Writer.pm0000644000175000017500000000235214556031647015175 0ustar tinatina# ABSTRACT: Writer class for YAML::PP representing output data use strict; use warnings; package YAML::PP::Writer; our $VERSION = 'v0.38.0'; # VERSION sub output { return $_[0]->{output} } sub set_output { $_[0]->{output} = $_[1] } sub new { my ($class, %args) = @_; my $output = delete $args{output}; $output = '' unless defined $output; return bless { output => $output, }, $class; } sub write { my ($self, $line) = @_; $self->{output} .= $line; } sub init { $_[0]->set_output(''); } sub finish { my ($self) = @_; $_[0]->set_output(undef); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Writer - Write YAML output =head1 SYNOPSIS my $writer = YAML::PP::Writer->new; =head1 DESCRIPTION The L sends its output to the writer. You can use your own writer. if you want to send the YAML output to somewhere else. See t/44.writer.t for an example. =head1 METHODS =over =item new my $writer = YAML::PP::Writer->new; Constructor. =item write $writer->write('- '); =item init $writer->init; Initialize =item finish $writer->finish; Gets called when the output ends. =item output, set_output Getter/setter for the YAML output =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema.pm0000644000175000017500000002654314556031647015131 0ustar tinatinause strict; use warnings; package YAML::PP::Schema; use B; use Module::Load qw//; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE /; use Scalar::Util qw/ blessed /; sub new { my ($class, %args) = @_; my $yaml_version = delete $args{yaml_version}; my $bool = delete $args{boolean}; $bool = 'perl' unless defined $bool; if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my $true; my $false; my @bool_class; my @bools = split m/,/, $bool; for my $b (@bools) { if ($b eq '*') { push @bool_class, ('boolean', 'JSON::PP::Boolean'); last; } elsif ($b eq 'JSON::PP') { require JSON::PP; $true ||= \&_bool_jsonpp_true; $false ||= \&_bool_jsonpp_false; push @bool_class, 'JSON::PP::Boolean'; } elsif ($b eq 'boolean') { require boolean; $true ||= \&_bool_booleanpm_true; $false ||= \&_bool_booleanpm_false; push @bool_class, 'boolean'; } elsif ($b eq 'perl' or $b eq 'perl_experimental') { push @bool_class, 'perl'; } else { die "Invalid value for 'boolean': '$b'. Allowed: ('perl', 'boolean', 'JSON::PP')"; } } # Ensure booleans are resolved $true ||= \&_bool_perl_true; $false ||= \&_bool_perl_false; my %representers = ( 'undef' => undef, flags => [], equals => {}, regex => [], class_equals => {}, class_matches => [], class_isa => [], scalarref => undef, refref => undef, coderef => undef, glob => undef, tied_equals => {}, bool => undef, ); my $self = bless { yaml_version => $yaml_version, resolvers => {}, representers => \%representers, true => $true, false => $false, bool_class => \@bool_class, }, $class; return $self; } sub resolvers { return $_[0]->{resolvers} } sub representers { return $_[0]->{representers} } sub true { return $_[0]->{true} } sub false { return $_[0]->{false} } sub bool_class { return @{ $_[0]->{bool_class} } ? $_[0]->{bool_class} : undef } sub yaml_version { return $_[0]->{yaml_version} } my %LOADED_SCHEMA = ( JSON => 1, ); my %DEFAULT_SCHEMA = ( '1.2' => 'Core', '1.1' => 'YAML1_1', ); sub load_subschemas { my ($self, @schemas) = @_; my $yaml_version = $self->yaml_version; my $i = 0; while ($i < @schemas) { my $item = $schemas[ $i ]; if ($item eq '+') { $item = $DEFAULT_SCHEMA{ $yaml_version }; } $i++; if (blessed($item)) { $item->register( schema => $self, ); next; } my @options; while ($i < @schemas and ( $schemas[ $i ] =~ m/^[^A-Za-z]/ or $schemas[ $i ] =~ m/^[a-zA-Z0-9]+=/ ) ) { push @options, $schemas[ $i ]; $i++; } my $class; if ($item =~ m/^\:(.*)/) { $class = "$1"; unless ($class =~ m/\A[A-Za-z0-9_:]+\z/) { die "Module name '$class' is invalid"; } Module::Load::load $class; } else { $class = "YAML::PP::Schema::$item"; unless ($class =~ m/\A[A-Za-z0-9_:]+\z/) { die "Module name '$class' is invalid"; } $LOADED_SCHEMA{ $item } ||= Module::Load::load $class; } $class->register( schema => $self, options => \@options, ); } } sub add_resolver { my ($self, %args) = @_; my $tag = $args{tag}; my $rule = $args{match}; my $resolvers = $self->resolvers; my ($type, @rule) = @$rule; my $implicit = $args{implicit}; $implicit = 1 unless defined $implicit; my $resolver_list = []; if ($tag) { if (ref $tag eq 'Regexp') { my $res = $resolvers->{tags} ||= []; push @$res, [ $tag, {} ]; push @$resolver_list, $res->[-1]->[1]; } else { my $res = $resolvers->{tag}->{ $tag } ||= {}; push @$resolver_list, $res; } } if ($implicit) { push @$resolver_list, $resolvers->{value} ||= {}; } for my $res (@$resolver_list) { if ($type eq 'equals') { my ($match, $value) = @rule; unless (exists $res->{equals}->{ $match }) { $res->{equals}->{ $match } = $value; } next; } elsif ($type eq 'regex') { my ($match, $value) = @rule; push @{ $res->{regex} }, [ $match => $value ]; } elsif ($type eq 'all') { my ($value) = @rule; $res->{all} = $value; } } } sub add_sequence_resolver { my ($self, %args) = @_; return $self->add_collection_resolver(sequence => %args); } sub add_mapping_resolver { my ($self, %args) = @_; return $self->add_collection_resolver(mapping => %args); } sub add_collection_resolver { my ($self, $type, %args) = @_; my $tag = $args{tag}; my $implicit = $args{implicit}; my $resolvers = $self->resolvers; if ($tag and ref $tag eq 'Regexp') { my $res = $resolvers->{ $type }->{tags} ||= []; push @$res, [ $tag, { on_create => $args{on_create}, on_data => $args{on_data}, } ]; } elsif ($tag) { my $res = $resolvers->{ $type }->{tag}->{ $tag } ||= { on_create => $args{on_create}, on_data => $args{on_data}, }; } } sub add_representer { my ($self, %args) = @_; my $representers = $self->representers; if (my $flags = $args{flags}) { my $rep = $representers->{flags}; push @$rep, \%args; return; } if (my $regex = $args{regex}) { my $rep = $representers->{regex}; push @$rep, \%args; return; } if (my $regex = $args{class_matches}) { my $rep = $representers->{class_matches}; push @$rep, [ $args{class_matches}, $args{code} ]; return; } if (my $bool = $args{bool} and $] >= 5.036000) { $representers->{bool} = { code => $args{code}, }; return; } if (my $class_equals = $args{class_equals}) { my $rep = $representers->{class_equals}; $rep->{ $class_equals } = { code => $args{code}, }; return; } if (my $class_isa = $args{class_isa}) { my $rep = $representers->{class_isa}; push @$rep, [ $args{class_isa}, $args{code} ]; return; } if (my $tied_equals = $args{tied_equals}) { my $rep = $representers->{tied_equals}; $rep->{ $tied_equals } = { code => $args{code}, }; return; } if (defined(my $equals = $args{equals})) { my $rep = $representers->{equals}; $rep->{ $equals } = { code => $args{code}, }; return; } if (defined(my $scalarref = $args{scalarref})) { $representers->{scalarref} = { code => $args{code}, }; return; } if (defined(my $refref = $args{refref})) { $representers->{refref} = { code => $args{code}, }; return; } if (defined(my $coderef = $args{coderef})) { $representers->{coderef} = { code => $args{code}, }; return; } if (defined(my $glob = $args{glob})) { $representers->{glob} = { code => $args{code}, }; return; } if (my $undef = $args{undefined}) { $representers->{undef} = $undef; return; } } sub load_scalar { my ($self, $constructor, $event) = @_; my $tag = $event->{tag}; my $value = $event->{value}; my $resolvers = $self->resolvers; my $res; if ($tag) { $res = $resolvers->{tag}->{ $tag }; if (not $res and my $matches = $resolvers->{tags}) { for my $match (@$matches) { my ($re, $rule) = @$match; if ($tag =~ $re) { $res = $rule; last; } } } } else { $res = $resolvers->{value}; if ($event->{style} ne YAML_PLAIN_SCALAR_STYLE) { return $value; } } if (my $equals = $res->{equals}) { if (exists $equals->{ $value }) { my $res = $equals->{ $value }; if (ref $res eq 'CODE') { return $res->($constructor, $event); } return $res; } } if (my $regex = $res->{regex}) { for my $item (@$regex) { my ($re, $sub) = @$item; my @matches = $value =~ $re; if (@matches) { return $sub->($constructor, $event, \@matches); } } } if (my $catch_all = $res->{all}) { if (ref $catch_all eq 'CODE') { return $catch_all->($constructor, $event); } return $catch_all; } return $value; } sub create_sequence { my ($self, $constructor, $event) = @_; my $tag = $event->{tag}; my $data = []; my $on_data; my $resolvers = $self->resolvers->{sequence}; if ($tag) { if (my $equals = $resolvers->{tag}->{ $tag }) { my $on_create = $equals->{on_create}; $on_data = $equals->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } if (my $matches = $resolvers->{tags}) { for my $match (@$matches) { my ($re, $actions) = @$match; my $on_create = $actions->{on_create}; if ($tag =~ $re) { $on_data = $actions->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } } } } return ($data, $on_data); } sub create_mapping { my ($self, $constructor, $event) = @_; my $tag = $event->{tag}; my $data = {}; my $on_data; my $resolvers = $self->resolvers->{mapping}; if ($tag) { if (my $equals = $resolvers->{tag}->{ $tag }) { my $on_create = $equals->{on_create}; $on_data = $equals->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } if (my $matches = $resolvers->{tags}) { for my $match (@$matches) { my ($re, $actions) = @$match; my $on_create = $actions->{on_create}; if ($tag =~ $re) { $on_data = $actions->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } } } } return ($data, $on_data); } sub _bool_jsonpp_true { JSON::PP::true() } sub _bool_booleanpm_true { boolean::true() } sub _bool_perl_true { !!1 } sub _bool_jsonpp_false { JSON::PP::false() } sub _bool_booleanpm_false { boolean::false() } sub _bool_perl_false { !!0 } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema - Schema for YAML::PP YAML-PP-v0.38.0/lib/YAML/PP/Grammar.pm0000644000175000017500000013610514556031647015313 0ustar tinatinause strict; use warnings; package YAML::PP::Grammar; our $VERSION = 'v0.38.0'; # VERSION use base 'Exporter'; our @EXPORT_OK = qw/ $GRAMMAR /; our $GRAMMAR = {}; # START OF GRAMMAR INLINE # DO NOT CHANGE THIS # This grammar is automatically generated from etc/grammar.yaml $GRAMMAR = { 'DIRECTIVE' => { 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_doc_start_explicit' }, 'EOL' => { 'new' => 'DIRECTIVE' }, 'RESERVED_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_reserved_directive' }, 'TAG_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_tag_directive' }, 'YAML_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_set_yaml_version_directive' } }, 'DOCUMENT_END' => { 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'DOCUMENT_END' } }, 'END_FLOW' => { 'EOL' => { 'match' => 'cb_end_outer_flow', 'return' => 1 } }, 'FLOWMAP' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'NEWFLOWMAP_ANCHOR' }, 'EOL' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' }, 'WS' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' }, 'match' => 'cb_anchor' }, 'COLON' => { 'EOL' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'DEFAULT' => { 'new' => 'FLOWMAP_CONTENT' }, 'EOL' => { 'new' => 'FLOWMAP' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap', 'return' => 1 }, 'TAG' => { 'DEFAULT' => { 'new' => 'NEWFLOWMAP_TAG' }, 'EOL' => { 'new' => 'NEWFLOWMAP_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWMAP_TAG_SPC' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'FLOWMAP' } }, 'FLOWMAP_CONTENT' => { 'ALIAS' => { 'match' => 'cb_send_alias', 'return' => 1 }, 'COLON' => { 'EOL' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'match' => 'cb_flowkey_plain', 'return' => 1 }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'return' => 1 }, 'QUOTED' => { 'match' => 'cb_flowkey_quoted', 'return' => 1 }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'return' => 1 } }, 'FLOWMAP_EMPTYKEY' => { 'FLOWMAP_END' => { 'match' => 'cb_end_empty_flowmap_key_value', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_key_value', 'return' => 1 } }, 'FLOWMAP_EXPLICIT_KEY' => { 'DEFAULT' => { 'new' => 'FLOWMAP' }, 'EOL' => { 'new' => 'FLOWMAP_EXPLICIT_KEY' }, 'FLOWMAP_END' => { 'match' => 'cb_end_empty_flowmap_key_value', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_key_value', 'return' => 1 }, 'WS' => { 'new' => 'FLOWMAP_EXPLICIT_KEY' } }, 'FLOWMAP_PROPS' => { 'COLON' => { 'EOL' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_END' => { 'match' => 'cb_end_empty_flowmap_key_value', 'return' => 1 }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_key_value', 'return' => 1 }, 'PLAIN' => { 'match' => 'cb_flowkey_plain', 'return' => 1 }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'return' => 1 }, 'QUOTED' => { 'match' => 'cb_flowkey_quoted', 'return' => 1 }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'return' => 1 } }, 'FLOWSEQ' => { 'ALIAS' => { 'match' => 'cb_send_flow_alias', 'new' => 'FLOWSEQ_NEXT' }, 'COLON' => { 'EOL' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'new' => 'FLOWSEQ_NEXT' }, 'QUOTED' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'new' => 'FLOWSEQ_NEXT' } }, 'FLOWSEQ_EMPTY' => { 'FLOWSEQ_END' => { 'match' => 'cb_empty_flowseq_end', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowseq_comma', 'return' => 1 } }, 'FLOWSEQ_MAYBE_KEY' => { 'COLON' => { 'DEFAULT' => { 'match' => 'cb_insert_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'EOL' => { 'match' => 'cb_insert_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_insert_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'DEFAULT' => { 'new' => 'FLOWSEQ_NEXT' }, 'WS' => { 'new' => 'FLOWSEQ_MAYBE_KEY' } }, 'FLOWSEQ_NEXT' => { 'EOL' => { 'new' => 'FLOWSEQ_NEXT' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_flow_comma', 'return' => 1 }, 'WS' => { 'new' => 'FLOWSEQ_NEXT' } }, 'FLOWSEQ_PROPS' => { 'COLON' => { 'EOL' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_END' => { 'match' => 'cb_empty_flowseq_end', 'return' => 1 }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowseq_comma', 'return' => 1 }, 'PLAIN' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'new' => 'FLOWSEQ_NEXT' }, 'QUOTED' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'new' => 'FLOWSEQ_NEXT' } }, 'FULLMAPVALUE_INLINE' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_ANCHOR' }, 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG' }, 'WS' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' } }, 'match' => 'cb_tag' } }, 'FULLNODE' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_ANCHOR' }, 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG' }, 'WS' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'FULLNODE_ANCHOR' => { 'ANCHOR' => { 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE_ANCHOR' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'FULLNODE_TAG' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE_TAG' }, 'TAG' => { 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'FULLNODE_TAG_ANCHOR' => { 'ANCHOR' => { 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE_TAG_ANCHOR' }, 'TAG' => { 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'NEWFLOWMAP' => { 'DEFAULT' => { 'new' => 'FLOWMAP' }, 'EOL' => { 'new' => 'NEWFLOWMAP' }, 'QUESTION' => { 'match' => 'cb_flow_question', 'new' => 'FLOWMAP_EXPLICIT_KEY' }, 'WS' => { 'new' => 'NEWFLOWMAP' } }, 'NEWFLOWMAP_ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' } }, 'NEWFLOWMAP_ANCHOR_SPC' => { 'DEFAULT' => { 'new' => 'FLOWMAP_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' }, 'TAG' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' }, 'EOL' => { 'new' => 'FLOWMAP_PROPS' }, 'WS' => { 'new' => 'FLOWMAP_PROPS' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' } }, 'NEWFLOWMAP_TAG' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' } }, 'NEWFLOWMAP_TAG_SPC' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' }, 'EOL' => { 'new' => 'FLOWMAP_PROPS' }, 'WS' => { 'new' => 'FLOWMAP_PROPS' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWMAP_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWMAP_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWMAP_TAG_SPC' } }, 'NEWFLOWSEQ' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'NEWFLOWSEQ_ANCHOR' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' }, 'WS' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWSEQ' }, 'EOL' => { 'new' => 'NEWFLOWSEQ' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'TAG' => { 'DEFAULT' => { 'new' => 'NEWFLOWSEQ_TAG' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWSEQ' } }, 'NEWFLOWSEQ_ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' } }, 'NEWFLOWSEQ_ANCHOR_SPC' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' }, 'TAG' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' }, 'EOL' => { 'new' => 'FLOWSEQ_PROPS' }, 'WS' => { 'new' => 'FLOWSEQ_PROPS' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' } }, 'NEWFLOWSEQ_TAG' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' } }, 'NEWFLOWSEQ_TAG_SPC' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' }, 'EOL' => { 'new' => 'FLOWSEQ_PROPS' }, 'WS' => { 'new' => 'FLOWSEQ_PROPS' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWSEQ_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' } }, 'NODETYPE_COMPLEX' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_complexcolon' }, 'DEFAULT' => { 'match' => 'cb_empty_complexvalue', 'new' => 'NODETYPE_MAP' }, 'EOL' => { 'new' => 'NODETYPE_COMPLEX' } }, 'NODETYPE_FLOWMAP' => { 'DEFAULT' => { 'new' => 'NEWFLOWMAP' }, 'EOL' => { 'new' => 'NODETYPE_FLOWMAP' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_flow_comma', 'new' => 'NEWFLOWMAP' }, 'WS' => { 'new' => 'NODETYPE_FLOWMAP' } }, 'NODETYPE_FLOWMAPVALUE' => { 'COLON' => { 'DEFAULT' => { 'new' => 'RULE_FULLFLOWSCALAR' }, 'EOL' => { 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FULLFLOWSCALAR' }, 'match' => 'cb_flow_colon' }, 'EOL' => { 'new' => 'NODETYPE_FLOWMAPVALUE' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap_empty', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_value', 'return' => 1 }, 'WS' => { 'new' => 'NODETYPE_FLOWMAPVALUE' } }, 'NODETYPE_FLOWSEQ' => { 'DEFAULT' => { 'new' => 'NEWFLOWSEQ' }, 'EOL' => { 'new' => 'NODETYPE_FLOWSEQ' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'WS' => { 'new' => 'NODETYPE_FLOWSEQ' } }, 'NODETYPE_MAP' => { 'ANCHOR' => { 'WS' => { 'DEFAULT' => { 'new' => 'RULE_MAPKEY' }, 'TAG' => { 'WS' => { 'new' => 'RULE_MAPKEY' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_MAPKEY' }, 'TAG' => { 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'RULE_MAPKEY' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_MAPKEY' } }, 'match' => 'cb_tag' } }, 'NODETYPE_MAPVALUE_INLINE' => { 'ALIAS' => { 'EOL' => {}, 'match' => 'cb_send_alias' }, 'BLOCK_SCALAR' => { 'EOL' => {}, 'match' => 'cb_send_block_scalar' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'EOL' => { 'match' => 'cb_send_scalar' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'EOL' => {}, 'match' => 'cb_send_plain_multi' }, 'QUOTED' => { 'EOL' => { 'match' => 'cb_send_scalar' }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'EOL' => {}, 'match' => 'cb_quoted_multiline' } }, 'NODETYPE_NODE' => { 'DASH' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_seqstart' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'NODETYPE_SCALAR_OR_MAP' => { 'ALIAS' => { 'EOL' => { 'match' => 'cb_send_alias_from_stack' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map_alias' } }, 'match' => 'cb_alias' }, 'BLOCK_SCALAR' => { 'EOL' => {}, 'match' => 'cb_send_block_scalar' }, 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_empty_map' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' } }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'EOL' => {}, 'match' => 'cb_send_plain_multi' }, 'QUESTION' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_questionstart' }, 'QUOTED' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' } }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'EOL' => {}, 'match' => 'cb_quoted_multiline' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } }, 'NODETYPE_SEQ' => { 'DASH' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_seqitem' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'NODETYPE_SEQ' } }, 'RULE_FLOWSCALAR' => { 'ALIAS' => { 'match' => 'cb_send_alias', 'return' => 1 }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap_empty', 'return' => 1 }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flow_mapkey', 'return' => 1 }, 'PLAIN' => { 'DEFAULT' => { 'match' => 'cb_send_scalar', 'return' => 1 }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'return' => 1 }, 'QUOTED' => { 'DEFAULT' => { 'match' => 'cb_send_scalar', 'return' => 1 }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'WS' => { 'match' => 'cb_send_scalar', 'return' => 1 }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'return' => 1 } }, 'RULE_FULLFLOWSCALAR' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'RULE_FULLFLOWSCALAR_ANCHOR' }, 'EOL' => { 'new' => 'RULE_FULLFLOWSCALAR_ANCHOR' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_FLOWSCALAR' }, 'TAG' => { 'DEFAULT' => { 'new' => 'RULE_FULLFLOWSCALAR_TAG' }, 'EOL' => { 'new' => 'RULE_FULLFLOWSCALAR_TAG' }, 'match' => 'cb_tag' } }, 'RULE_FULLFLOWSCALAR_ANCHOR' => { 'DEFAULT' => { 'new' => 'RULE_FLOWSCALAR' }, 'TAG' => { 'EOL' => { 'new' => 'RULE_FLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FLOWSCALAR' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'RULE_FULLFLOWSCALAR_ANCHOR' } }, 'RULE_FULLFLOWSCALAR_TAG' => { 'ANCHOR' => { 'EOL' => { 'new' => 'RULE_FLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FLOWSCALAR' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_FLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FULLFLOWSCALAR_TAG' } }, 'RULE_MAPKEY' => { 'ALIAS' => { 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } } }, 'match' => 'cb_send_alias_key' }, 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_empty_mapkey' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'RULE_MAPKEY' }, 'PLAIN' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_send_mapkey' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_send_mapkey' } }, 'match' => 'cb_mapkey' }, 'QUESTION' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_question' }, 'QUOTED' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } } }, 'match' => 'cb_take_quoted_key' } }, 'STREAM' => { 'DEFAULT' => { 'match' => 'cb_doc_start_implicit', 'new' => 'FULLNODE' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document_empty' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_doc_start_explicit' }, 'EOL' => { 'new' => 'STREAM' }, 'RESERVED_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_reserved_directive' }, 'TAG_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_tag_directive' }, 'YAML_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_set_yaml_version_directive' } } }; # END OF GRAMMAR INLINE 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Grammar - YAML grammar =head1 GRAMMAR This is the Grammar in YAML # START OF YAML INLINE # DO NOT CHANGE THIS # This grammar is automatically generated from etc/grammar.yaml --- NODETYPE_NODE: DASH: match: cb_seqstart EOL: { new: FULLNODE } WS: { new: FULLNODE } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } NODETYPE_SCALAR_OR_MAP: # Flow nodes can follow tabs WS: { new: FULLMAPVALUE_INLINE } ALIAS: match: cb_alias EOL: { match: cb_send_alias_from_stack } WS: COLON: match: cb_insert_map_alias EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUESTION: match: cb_questionstart EOL: { new: FULLNODE } WS: { new: FULLNODE } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } WS: COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUOTED_MULTILINE: match: cb_quoted_multiline EOL: { } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar WS: COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } PLAIN_MULTI: match: cb_send_plain_multi EOL: { } COLON: match: cb_insert_empty_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } BLOCK_SCALAR: match: cb_send_block_scalar EOL: { } FLOWSEQ_START: match: cb_start_flowseq new: NEWFLOWSEQ FLOWMAP_START: match: cb_start_flowmap new: NEWFLOWMAP DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: NODETYPE_SCALAR_OR_MAP NODETYPE_COMPLEX: COLON: match: cb_complexcolon EOL: { new: FULLNODE } WS: { new: FULLNODE } DEFAULT: match: cb_empty_complexvalue new: NODETYPE_MAP EOL: new: NODETYPE_COMPLEX RULE_FULLFLOWSCALAR: ANCHOR: match: cb_anchor EOL: { new: RULE_FULLFLOWSCALAR_ANCHOR } DEFAULT: { new: RULE_FULLFLOWSCALAR_ANCHOR } TAG: match: cb_tag EOL: { new: RULE_FULLFLOWSCALAR_TAG } DEFAULT: { new: RULE_FULLFLOWSCALAR_TAG } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FULLFLOWSCALAR_ANCHOR: WS: { new: RULE_FULLFLOWSCALAR_ANCHOR } TAG: match: cb_tag WS: { new: RULE_FLOWSCALAR } EOL: { new: RULE_FLOWSCALAR } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FULLFLOWSCALAR_TAG: WS: { new: RULE_FULLFLOWSCALAR_TAG } ANCHOR: match: cb_anchor WS: { new: RULE_FLOWSCALAR } EOL: { new: RULE_FLOWSCALAR } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FLOWSCALAR: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } WS: { match: cb_send_scalar, return: 1 } DEFAULT: { match: cb_send_scalar, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } PLAIN: match: cb_start_plain EOL: { match: cb_send_scalar } DEFAULT: { match: cb_send_scalar, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } FLOW_COMMA: { match: cb_empty_flow_mapkey, return: 1 } FLOWMAP_END: match: cb_end_flowmap_empty return: 1 FLOWSEQ: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_flow_alias, new: FLOWSEQ_NEXT } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_EMPTY: FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 FLOWSEQ_NEXT: WS: { new: FLOWSEQ_NEXT } EOL: { new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_flow_comma return: 1 FLOWSEQ_END: match: cb_end_flowseq return: 1 FLOWSEQ_MAYBE_KEY: WS: { new: FLOWSEQ_MAYBE_KEY } COLON: WS: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: new: FLOWSEQ_NEXT FLOWMAP_CONTENT: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOWMAP_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOWMAP_EMPTYKEY: FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 NEWFLOWSEQ: EOL: { new: NEWFLOWSEQ } WS: { new: NEWFLOWSEQ } ANCHOR: match: cb_anchor WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } DEFAULT: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } DEFAULT: { new: NEWFLOWSEQ_TAG } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: FLOWSEQ } NODETYPE_FLOWSEQ: EOL: { new: NODETYPE_FLOWSEQ } WS: { new: NODETYPE_FLOWSEQ } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: NEWFLOWSEQ } NODETYPE_FLOWMAPVALUE: WS: { new: NODETYPE_FLOWMAPVALUE } EOL: { new: NODETYPE_FLOWMAPVALUE } COLON: match: cb_flow_colon WS: { new: RULE_FULLFLOWSCALAR } EOL: { new: RULE_FULLFLOWSCALAR } DEFAULT: { new: RULE_FULLFLOWSCALAR } FLOW_COMMA: match: cb_empty_flowmap_value return: 1 FLOWMAP_END: match: cb_end_flowmap_empty return: 1 NEWFLOWSEQ_ANCHOR: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_TAG: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_ANCHOR_SPC: WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWSEQ_TAG_SPC: WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWMAP_ANCHOR: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_TAG: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_ANCHOR_SPC: WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP_TAG_SPC: WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP: EOL: { new: NEWFLOWMAP } WS: { new: NEWFLOWMAP } QUESTION: { match: cb_flow_question, new: FLOWMAP_EXPLICIT_KEY } DEFAULT: { new: FLOWMAP } FLOWMAP_EXPLICIT_KEY: WS: { new: FLOWMAP_EXPLICIT_KEY } EOL: { new: FLOWMAP_EXPLICIT_KEY } FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 DEFAULT: { new: FLOWMAP } FLOWMAP: EOL: { new: FLOWMAP } WS: { new: FLOWMAP } ANCHOR: match: cb_anchor WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } DEFAULT: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } DEFAULT: { new: NEWFLOWMAP_TAG } FLOWMAP_END: match: cb_end_flowmap return: 1 COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR DEFAULT: { new: FLOWMAP_CONTENT } NODETYPE_FLOWMAP: EOL: { new: NODETYPE_FLOWMAP } WS: { new: NODETYPE_FLOWMAP } FLOWMAP_END: match: cb_end_flowmap return: 1 FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWMAP } DEFAULT: { new: NEWFLOWMAP } END_FLOW: EOL: match: cb_end_outer_flow return: 1 RULE_MAPKEY: QUESTION: match: cb_question EOL: { new: FULLNODE } WS: { new: FULLNODE } ALIAS: match: cb_send_alias_key WS: COLON: EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUOTED: match: cb_take_quoted_key WS: COLON: EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } PLAIN: match: cb_mapkey WS: COLON: match: cb_send_mapkey EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_send_mapkey EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_empty_mapkey EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: RULE_MAPKEY NODETYPE_SEQ: DASH: match: cb_seqitem EOL: { new: FULLNODE } WS: { new: FULLNODE } DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: NODETYPE_SEQ NODETYPE_MAP: ANCHOR: match: cb_anchor WS: TAG: match: cb_tag WS: { new: RULE_MAPKEY } DEFAULT: { new: RULE_MAPKEY } TAG: match: cb_tag WS: ANCHOR: match: cb_anchor WS: { new: RULE_MAPKEY } DEFAULT: { new: RULE_MAPKEY } DEFAULT: { new: RULE_MAPKEY } FULLNODE_ANCHOR: TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: ANCHOR: match: cb_anchor WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } ANCHOR: match: cb_anchor WS: TAG: match: cb_tag WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE_ANCHOR } DEFAULT: { new: NODETYPE_NODE } FULLNODE_TAG: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: TAG: match: cb_tag WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP, } TAG: match: cb_tag WS: ANCHOR: match: cb_anchor WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE_TAG } DEFAULT: { new: NODETYPE_NODE } FULLNODE_TAG_ANCHOR: ANCHOR: match: cb_anchor WS: TAG: match: cb_tag WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } TAG: match: cb_tag WS: ANCHOR: match: cb_anchor WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE_TAG_ANCHOR } DEFAULT: { new: NODETYPE_NODE } FULLNODE: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_ANCHOR } WS: TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG } WS: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_SCALAR_OR_MAP } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } EOL: { new: FULLNODE } DEFAULT: { new: NODETYPE_NODE } FULLMAPVALUE_INLINE: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_ANCHOR } WS: TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_MAPVALUE_INLINE } DEFAULT: { new: NODETYPE_MAPVALUE_INLINE } TAG: match: cb_tag EOL: { match: cb_property_eol, new: FULLNODE_TAG } WS: ANCHOR: match: cb_anchor EOL: { match: cb_property_eol, new: FULLNODE_TAG_ANCHOR } WS: { new: NODETYPE_MAPVALUE_INLINE } DEFAULT: { new: NODETYPE_MAPVALUE_INLINE } DEFAULT: { new: NODETYPE_MAPVALUE_INLINE } NODETYPE_MAPVALUE_INLINE: ALIAS: match: cb_send_alias EOL: { } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } QUOTED_MULTILINE: match: cb_quoted_multiline EOL: { } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar PLAIN_MULTI: match: cb_send_plain_multi EOL: { } BLOCK_SCALAR: match: cb_send_block_scalar EOL: { } FLOWSEQ_START: match: cb_start_flowseq new: NEWFLOWSEQ FLOWMAP_START: match: cb_start_flowmap new: NEWFLOWMAP DOC_END: match: cb_end_document EOL: { } DOCUMENT_END: DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: DOCUMENT_END STREAM: DOC_END: match: cb_end_document_empty EOL: { } DOC_START: match: cb_doc_start_explicit EOL: { new: FULLNODE } WS: { new: FULLNODE } YAML_DIRECTIVE: match: cb_set_yaml_version_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } RESERVED_DIRECTIVE: match: cb_reserved_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } TAG_DIRECTIVE: match: cb_tag_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } EOL: new: STREAM DEFAULT: match: cb_doc_start_implicit new: FULLNODE DIRECTIVE: DOC_START: match: cb_doc_start_explicit EOL: { new: FULLNODE } WS: { new: FULLNODE } YAML_DIRECTIVE: match: cb_set_yaml_version_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } RESERVED_DIRECTIVE: match: cb_reserved_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } TAG_DIRECTIVE: match: cb_tag_directive EOL: { new: DIRECTIVE } WS: { new: DIRECTIVE } EOL: new: DIRECTIVE # END OF YAML INLINE =cut YAML-PP-v0.38.0/lib/YAML/PP/Parser.pm0000644000175000017500000012126414556031647015161 0ustar tinatina# ABSTRACT: YAML Parser use strict; use warnings; package YAML::PP::Parser; our $VERSION = 'v0.38.0'; # VERSION use constant TRACE => $ENV{YAML_PP_TRACE} ? 1 : 0; use constant DEBUG => ($ENV{YAML_PP_DEBUG} || $ENV{YAML_PP_TRACE}) ? 1 : 0; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE /; use YAML::PP::Render; use YAML::PP::Lexer; use YAML::PP::Grammar qw/ $GRAMMAR /; use YAML::PP::Exception; use YAML::PP::Reader; use Carp qw/ croak /; sub new { my ($class, %args) = @_; my $reader = delete $args{reader} || YAML::PP::Reader->new; my $default_yaml_version = delete $args{default_yaml_version}; my $self = bless { default_yaml_version => $default_yaml_version || '1.2', lexer => YAML::PP::Lexer->new( reader => $reader, ), }, $class; my $receiver = delete $args{receiver}; if ($receiver) { $self->set_receiver($receiver); } return $self; } sub clone { my ($self) = @_; my $clone = { default_yaml_version => $self->default_yaml_version, lexer => YAML::PP::Lexer->new(), }; return bless $clone, ref $self; } sub receiver { return $_[0]->{receiver} } sub set_receiver { my ($self, $receiver) = @_; my $callback; if (ref $receiver eq 'CODE') { $callback = $receiver; } else { $callback = sub { my ($self, $event, $info) = @_; return $receiver->$event($info); }; } $self->{callback} = $callback; $self->{receiver} = $receiver; } sub reader { return $_[0]->lexer->{reader} } sub set_reader { my ($self, $reader) = @_; $self->lexer->set_reader($reader); } sub lexer { return $_[0]->{lexer} } sub callback { return $_[0]->{callback} } sub set_callback { $_[0]->{callback} = $_[1] } sub level { return $#{ $_[0]->{offset} } } sub offset { return $_[0]->{offset} } sub set_offset { $_[0]->{offset} = $_[1] } sub events { return $_[0]->{events} } sub set_events { $_[0]->{events} = $_[1] } sub new_node { return $_[0]->{new_node} } sub set_new_node { $_[0]->{new_node} = $_[1] } sub tagmap { return $_[0]->{tagmap} } sub set_tagmap { $_[0]->{tagmap} = $_[1] } sub tokens { return $_[0]->{tokens} } sub set_tokens { $_[0]->{tokens} = $_[1] } sub event_stack { return $_[0]->{event_stack} } sub set_event_stack { $_[0]->{event_stack} = $_[1] } sub default_yaml_version { return $_[0]->{default_yaml_version} } sub yaml_version { return $_[0]->{yaml_version} } sub set_yaml_version { $_[0]->{yaml_version} = $_[1] } sub yaml_version_directive { return $_[0]->{yaml_version_directive} } sub set_yaml_version_directive { $_[0]->{yaml_version_directive} = $_[1] } sub rule { return $_[0]->{rule} } sub set_rule { my ($self, $name) = @_; no warnings 'uninitialized'; DEBUG and $self->info("set_rule($name)"); $self->{rule} = $name; } sub init { my ($self) = @_; $self->set_offset([]); $self->set_events([]); $self->set_new_node(0); $self->set_tagmap({ '!!' => "tag:yaml.org,2002:", }); $self->set_tokens([]); $self->set_rule(undef); $self->set_event_stack([]); $self->set_yaml_version($self->default_yaml_version); $self->set_yaml_version_directive(undef); $self->lexer->init; } sub parse_string { my ($self, $yaml) = @_; $self->set_reader(YAML::PP::Reader->new( input => $yaml )); $self->parse(); } sub parse_file { my ($self, $file) = @_; $self->set_reader(YAML::PP::Reader::File->new( input => $file )); $self->parse(); } my %nodetypes = ( MAPVALUE => 'NODETYPE_COMPLEX', MAP => 'NODETYPE_MAP', # IMAP => 'NODETYPE_SEQ', SEQ => 'NODETYPE_SEQ', SEQ0 => 'NODETYPE_SEQ', FLOWMAP => 'NODETYPE_FLOWMAP', FLOWMAPVALUE => 'NODETYPE_FLOWMAPVALUE', FLOWSEQ => 'NODETYPE_FLOWSEQ', FLOWSEQ_NEXT => 'FLOWSEQ_NEXT', DOC => 'FULLNODE', DOC_END => 'DOCUMENT_END', STR => 'STREAM', END_FLOW => 'END_FLOW', ); sub parse { my ($self) = @_; TRACE and warn "=== parse()\n"; TRACE and $self->debug_yaml; $self->init; $self->lexer->init; eval { $self->start_stream; $self->set_rule( 'STREAM' ); $self->parse_tokens(); $self->end_stream; }; if (my $error = $@) { if (ref $error) { croak "$error\n "; } croak $error; } DEBUG and $self->highlight_yaml; TRACE and $self->debug_tokens; } sub lex_next_tokens { my ($self) = @_; DEBUG and $self->info("----------------> lex_next_tokens"); TRACE and $self->debug_events; my $indent = $self->offset->[-1]; my $event_types = $self->events; my $next_tokens = $self->lexer->fetch_next_tokens($indent); return unless @$next_tokens; my $next = $next_tokens->[0]; return 1 if ($next->{name} ne 'SPACE'); my $flow = $event_types->[-1] =~ m/^FLOW/; my $space = length $next->{value}; my $tokens = $self->tokens; if (not $space) { shift @$next_tokens; } else { push @$tokens, shift @$next_tokens; } if ($flow) { if ($space >= $indent) { return 1; } $self->exception("Bad indendation in " . $self->events->[-1]); } $next = $next_tokens->[0]; if ($space > $indent ) { return 1 if $indent < 0; unless ($self->new_node) { $self->exception("Bad indendation in " . $self->events->[-1]); } return 1; } if ($self->new_node) { if ($space < $indent) { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); $self->remove_nodes($space); } else { # unindented sequence starts my $exp = $self->events->[-1]; my $seq_start = $next->{name} eq 'DASH'; if ( $seq_start and ($exp eq 'MAPVALUE' or $exp eq 'MAP')) { } else { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } } } else { if ($space < $indent) { $self->remove_nodes($space); } } my $exp = $self->events->[-1]; if ($exp eq 'SEQ0' and $next->{name} ne 'DASH') { TRACE and $self->info("In unindented sequence"); $self->end_sequence; $exp = $self->events->[-1]; } if ($self->offset->[-1] != $space) { $self->exception("Expected " . $self->events->[-1]); } return 1; } my %next_event = ( MAP => 'MAPVALUE', IMAP => 'IMAPVALUE', MAPVALUE => 'MAP', IMAPVALUE => 'IMAP', SEQ => 'SEQ', SEQ0 => 'SEQ0', DOC => 'DOC_END', STR => 'STR', FLOWSEQ => 'FLOWSEQ_NEXT', FLOWSEQ_NEXT => 'FLOWSEQ', FLOWMAP => 'FLOWMAPVALUE', FLOWMAPVALUE => 'FLOWMAP', ); my %event_to_method = ( MAP => 'mapping', IMAP => 'mapping', FLOWMAP => 'mapping', SEQ => 'sequence', SEQ0 => 'sequence', FLOWSEQ => 'sequence', DOC => 'document', STR => 'stream', VAL => 'scalar', ALI => 'alias', MAPVALUE => 'mapping', IMAPVALUE => 'mapping', ); #sub process_events { # my ($self, $res) = @_; # # my $event_stack = $self->event_stack; # return unless @$event_stack; # # if (@$event_stack == 1 and $event_stack->[0]->[0] eq 'properties') { # return; # } # # my $event_types = $self->events; # my $properties; # my @send_events; # for my $event (@$event_stack) { # TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$event], ['event']); # my ($type, $info) = @$event; # if ($type eq 'properties') { # $properties = $info; # } # elsif ($type eq 'scalar') { # $info->{name} = 'scalar_event'; # $event_types->[-1] = $next_event{ $event_types->[-1] }; # push @send_events, $info; # } # elsif ($type eq 'begin') { # my $name = $info->{name}; # $info->{name} = $event_to_method{ $name } . '_start_event'; # push @{ $event_types }, $name; # push @{ $self->offset }, $info->{offset}; # push @send_events, $info; # } # elsif ($type eq 'end') { # my $name = $info->{name}; # $info->{name} = $event_to_method{ $name } . '_end_event'; # $self->$type($name, $info); # push @send_events, $info; # if (@$event_types) { # $event_types->[-1] = $next_event{ $event_types->[-1] }; # } # } # elsif ($type eq 'alias') { # if ($properties) { # $self->exception("Parse error: Alias not allowed in this context"); # } # $info->{name} = 'alias_event'; # $event_types->[-1] = $next_event{ $event_types->[-1] }; # push @send_events, $info; # } # } # @$event_stack = (); # for my $info (@send_events) { # DEBUG and $self->debug_event( $info ); # $self->callback->($self, $info->{name}, $info); # } #} my %fetch_method = ( '"' => 'fetch_quoted', "'" => 'fetch_quoted', '|' => 'fetch_block', '>' => 'fetch_block', '' => 'fetch_plain', ); sub parse_tokens { my ($self) = @_; my $event_types = $self->events; my $offsets = $self->offset; my $tokens = $self->tokens; my $next_tokens = $self->lexer->next_tokens; unless ($self->lex_next_tokens) { $self->end_document(1); return 0; } unless ($self->new_node) { if ($self->level > 0) { my $new_rule = $nodetypes{ $event_types->[-1] } or die "Did not find '$event_types->[-1]'"; $self->set_rule( $new_rule ); } } my $rule_name = $self->rule; DEBUG and $self->info("----------------> parse_tokens($rule_name)"); my $rule = $GRAMMAR->{ $rule_name } or die "Could not find rule $rule_name"; TRACE and $self->debug_rules($rule); TRACE and $self->debug_yaml; DEBUG and $self->debug_next_line; RULE: while ($rule_name) { DEBUG and $self->info("RULE: $rule_name"); TRACE and $self->debug_tokens($next_tokens); unless (@$next_tokens) { $self->exception("No more tokens"); } TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$next_tokens->[0]], ['next_token']); my $got = $next_tokens->[0]->{name}; if ($got eq 'CONTEXT') { my $context = shift @$next_tokens; my $indent = $offsets->[-1]; $indent++ unless $self->lexer->flowcontext; my $method = $fetch_method{ $context->{value} }; my $partial = $self->lexer->$method($indent, $context->{value}); next RULE; } my $def = $rule->{ $got }; if ($def) { push @$tokens, shift @$next_tokens; } elsif ($def = $rule->{DEFAULT}) { $got = 'DEFAULT'; } else { $self->expected( expected => [keys %$rule], got => $next_tokens->[0], ); } DEBUG and $self->got("---got $got"); if (my $sub = $def->{match}) { DEBUG and $self->info("CALLBACK $sub"); $self->$sub(@$tokens ? $tokens->[-1] : ()); } my $eol = $got eq 'EOL'; my $new = $def->{new}; if ($new) { DEBUG and $self->got("NEW: $new"); $rule_name = $new; $self->set_rule($rule_name); } elsif ($eol) { } elsif ($def->{return}) { $rule_name = $nodetypes{ $event_types->[-1] } or die "Unexpected event type $event_types->[-1]"; $self->set_rule($rule_name); } else { $rule_name .= " - $got"; # for debugging $rule = $def; next RULE; } if ($eol) { unless ($self->lex_next_tokens) { if ($rule_name eq 'DIRECTIVE') { $self->exception("Directive needs document start"); } $self->end_document(1); return 0; } unless ($self->new_node) { if ($self->level > 0) { $rule_name = $nodetypes{ $event_types->[-1] } or die "Did not find '$event_types->[-1]'"; $self->set_rule( $rule_name ); } } $rule_name = $self->rule; } $rule = $GRAMMAR->{ $rule_name } or die "Unexpected rule $rule_name"; } die "Unexpected"; } sub end_sequence { my ($self) = @_; my $event_types = $self->events; pop @{ $event_types }; pop @{ $self->offset }; my $info = { name => 'sequence_end_event' }; $self->callback->($self, $info->{name} => $info ); $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub remove_nodes { my ($self, $space) = @_; my $offset = $self->offset; my $event_types = $self->events; my $exp = $event_types->[-1]; while (@$offset) { if ($offset->[ -1 ] <= $space) { last; } if ($exp eq 'MAPVALUE') { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); $exp = 'MAP'; } my $info = { name => $exp }; $info->{name} = $event_to_method{ $exp } . '_end_event'; pop @{ $event_types }; pop @{ $offset }; $self->callback->($self, $info->{name} => $info ); $event_types->[-1] = $next_event{ $event_types->[-1] }; $exp = $event_types->[-1]; } return $exp; } sub start_stream { my ($self) = @_; push @{ $self->events }, 'STR'; push @{ $self->offset }, -1; $self->callback->($self, 'stream_start_event', { name => 'stream_start_event', }); } sub start_document { my ($self, $implicit) = @_; push @{ $self->events }, 'DOC'; push @{ $self->offset }, -1; my $directive = $self->yaml_version_directive; my %directive; if ($directive) { my ($major, $minor) = split m/\./, $self->yaml_version; %directive = ( version_directive => { major => $major, minor => $minor } ); } $self->callback->($self, 'document_start_event', { name => 'document_start_event', implicit => $implicit, %directive, }); $self->set_yaml_version_directive(undef); $self->set_rule( 'FULLNODE' ); $self->set_new_node(1); } sub start_sequence { my ($self, $offset) = @_; my $offsets = $self->offset; if ($offsets->[-1] == $offset) { push @{ $self->events }, 'SEQ0'; } else { push @{ $self->events }, 'SEQ'; } push @{ $offsets }, $offset; my $event_stack = $self->event_stack; my $info = { name => 'sequence_start_event' }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { my $properties = pop @$event_stack; $self->node_properties($properties->[1], $info); } $self->callback->($self, 'sequence_start_event', $info); } sub start_flow_sequence { my ($self, $offset) = @_; my $offsets = $self->offset; my $new_offset = $offsets->[-1]; my $event_types = $self->events; if ($new_offset < 0) { $new_offset = 0; } elsif ($self->new_node) { if ($event_types->[-1] !~ m/^FLOW/) { $new_offset++; } } push @{ $self->events }, 'FLOWSEQ'; push @{ $offsets }, $new_offset; my $event_stack = $self->event_stack; my $info = { style => YAML_FLOW_SEQUENCE_STYLE, name => 'sequence_start_event' }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($event_stack, $info); } $self->callback->($self, 'sequence_start_event', $info); } sub start_flow_mapping { my ($self, $offset, $implicit_flowseq_map) = @_; my $offsets = $self->offset; my $new_offset = $offsets->[-1]; my $event_types = $self->events; if ($new_offset < 0) { $new_offset = 0; } elsif ($self->new_node) { if ($event_types->[-1] !~ m/^FLOW/) { $new_offset++; } } push @{ $self->events }, $implicit_flowseq_map ? 'IMAP' : 'FLOWMAP'; push @{ $offsets }, $new_offset; my $event_stack = $self->event_stack; my $info = { name => 'mapping_start_event', style => YAML_FLOW_MAPPING_STYLE }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($event_stack, $info); } $self->callback->($self, 'mapping_start_event', $info); } sub end_flow_sequence { my ($self) = @_; my $event_types = $self->events; pop @{ $event_types }; pop @{ $self->offset }; my $info = { name => 'sequence_end_event' }; $self->callback->($self, $info->{name}, $info); if ($event_types->[-1] =~ m/^FLOW|^IMAP/) { $event_types->[-1] = $next_event{ $event_types->[-1] }; } else { push @$event_types, 'END_FLOW'; } } sub end_flow_mapping { my ($self) = @_; my $event_types = $self->events; pop @{ $event_types }; pop @{ $self->offset }; my $info = { name => 'mapping_end_event' }; $self->callback->($self, $info->{name}, $info); if ($event_types->[-1] =~ m/^FLOW|^IMAP/) { $event_types->[-1] = $next_event{ $event_types->[-1] }; } else { push @$event_types, 'END_FLOW'; } } sub cb_end_outer_flow { my ($self) = @_; my $event_types = $self->events; pop @$event_types; $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub start_mapping { my ($self, $offset) = @_; my $offsets = $self->offset; push @{ $self->events }, 'MAP'; push @{ $offsets }, $offset; my $event_stack = $self->event_stack; my $info = { name => 'mapping_start_event' }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { my $properties = pop @$event_stack; $self->node_properties($properties->[1], $info); } $self->callback->($self, 'mapping_start_event', $info); } sub end_document { my ($self, $implicit) = @_; my $event_types = $self->events; if ($event_types->[-1] =~ m/FLOW/) { die "Unexpected end of flow context"; } if ($self->new_node) { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } $self->remove_nodes(-1); if ($event_types->[-1] eq 'STR') { return; } my $last = pop @{ $event_types }; if ($last ne 'DOC' and $last ne 'DOC_END') { $self->exception("Unexpected event type $last"); } pop @{ $self->offset }; $self->callback->($self, 'document_end_event', { name => 'document_end_event', implicit => $implicit, }); if ($self->yaml_version eq '1.2') { # In YAML 1.2, directives are only for the following # document. In YAML 1.1, they are global $self->set_tagmap({ '!!' => "tag:yaml.org,2002:" }); } $event_types->[-1] = $next_event{ $event_types->[-1] }; $self->set_rule('STREAM'); } sub end_stream { my ($self) = @_; my $last = pop @{ $self->events }; $self->exception("Unexpected event type $last") unless $last eq 'STR'; pop @{ $self->offset }; $self->callback->($self, 'stream_end_event', { name => 'stream_end_event', }); } sub fetch_inline_properties { my ($self, $stack, $info) = @_; my $properties = $stack->[-1]; $properties = $properties->[1]; my $property_offset; if ($properties) { for my $p (@{ $properties->{inline} }) { my $type = $p->{type}; if (exists $info->{ $type }) { $self->exception("A node can only have one $type"); } $info->{ $type } = $p->{value}; unless (defined $property_offset) { $property_offset = $p->{offset}; $info->{offset} = $p->{offset}; } } delete $properties->{inline}; undef $properties unless $properties->{newline}; } unless ($properties) { pop @$stack; } } sub node_properties { my ($self, $properties, $info) = @_; if ($properties) { for my $p (@{ $properties->{newline} }) { my $type = $p->{type}; if (exists $info->{ $type }) { $self->exception("A node can only have one $type"); } $info->{ $type } = $p->{value}; } undef $properties; } } sub scalar_event { my ($self, $info) = @_; my $event_types = $self->events; my $event_stack = $self->event_stack; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { my $properties = pop @$event_stack; $properties = $self->node_properties($properties->[1], $info); } $info->{name} = 'scalar_event'; $self->callback->($self, 'scalar_event', $info); $self->set_new_node(0); $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub alias_event { my ($self, $info) = @_; my $event_stack = $self->event_stack; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { $self->exception("Parse error: Alias not allowed in this context"); } my $event_types = $self->events; $info->{name} = 'alias_event'; $self->callback->($self, 'alias_event', $info); $self->set_new_node(0); $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub yaml_to_tokens { my ($class, $type, $input) = @_; my $yp = YAML::PP::Parser->new( receiver => sub {} ); my @docs = eval { $type eq 'string' ? $yp->parse_string($input) : $yp->parse_file($input); }; my $error = $@; my $tokens = $yp->tokens; if ($error) { my $remaining_tokens = $yp->_remaining_tokens; push @$tokens, map { +{ %$_, name => 'ERROR' } } @$remaining_tokens; } return $error, $tokens; } sub _remaining_tokens { my ($self) = @_; my @tokens; my $next = $self->lexer->next_tokens; push @tokens, @$next; my $next_line = $self->lexer->next_line; my $remaining = ''; if ($next_line) { if ($self->lexer->offset > 0) { $remaining = $next_line->[1] . $next_line->[2]; } else { $remaining = join '', @$next_line; } } $remaining .= $self->reader->read; $remaining = '' unless defined $remaining; push @tokens, { name => "ERROR", value => $remaining }; return \@tokens; } # deprecated sub event_to_test_suite { # uncoverable subroutine my ($self, $event) = @_; # uncoverable statement if (ref $event eq 'ARRAY') { # uncoverable statement return YAML::PP::Common::event_to_test_suite($event->[1]); # uncoverable statement } return YAML::PP::Common::event_to_test_suite($event); # uncoverable statement } sub debug_events { # uncoverable subroutine my ($self) = @_; # uncoverable statement $self->note("EVENTS: (" # uncoverable statement . join (' | ', @{ $_[0]->events }) . ')' # uncoverable statement ); $self->debug_offset; # uncoverable statement } sub debug_offset { # uncoverable subroutine my ($self) = @_; # uncoverable statement $self->note( qq{OFFSET: (} # uncoverable statement count:1 # uncoverable statement count:2 # uncoverable statement count:3 . join (' | ', map { defined $_ ? sprintf "%-3d", $_ : '?' } @{ $_[0]->offset }) # uncoverable statement . qq/) level=@{[ $_[0]->level ]}]}/ ); } sub debug_yaml { # uncoverable subroutine my ($self) = @_; # uncoverable statement my $line = $self->lexer->line; # uncoverable statement $self->note("LINE NUMBER: $line"); # uncoverable statement my $next_tokens = $self->lexer->next_tokens; # uncoverable statement if (@$next_tokens) { # uncoverable statement $self->debug_tokens($next_tokens); # uncoverable statement } } sub debug_next_line { my ($self) = @_; my $next_line = $self->lexer->next_line || []; my $line = $next_line->[0]; $line = '' unless defined $line; $line =~ s/( +)$/'·' x length $1/e; $line =~ s/\t/▸/g; $self->note("NEXT LINE: >>$line<<"); } sub note { my ($self, $msg) = @_; $self->_colorize_warn(["yellow"], "============ $msg"); } sub info { my ($self, $msg) = @_; $self->_colorize_warn(["cyan"], "============ $msg"); } sub got { my ($self, $msg) = @_; $self->_colorize_warn(["green"], "============ $msg"); } sub _colorize_warn { # uncoverable subroutine my ($self, $colors, $text) = @_; # uncoverable statement require Term::ANSIColor; # uncoverable statement warn Term::ANSIColor::colored($colors, $text), "\n"; # uncoverable statement } sub debug_event { # uncoverable subroutine my ($self, $event) = @_; # uncoverable statement my $str = YAML::PP::Common::event_to_test_suite($event); # uncoverable statement require Term::ANSIColor; # uncoverable statement warn Term::ANSIColor::colored(["magenta"], "============ $str"), "\n"; # uncoverable statement } sub debug_rules { # uncoverable subroutine my ($self, $rules) = @_; # uncoverable statement local $Data::Dumper::Maxdepth = 2; # uncoverable statement $self->note("RULES:"); # uncoverable statement for my $rule ($rules) { # uncoverable statement if (ref $rule eq 'ARRAY') { # uncoverable statement my $first = $rule->[0]; # uncoverable statement if (ref $first eq 'SCALAR') { # uncoverable statement $self->info("-> $$first"); # uncoverable statement } else { # uncoverable statement if (ref $first eq 'ARRAY') { # uncoverable statement $first = $first->[0]; # uncoverable statement } $self->info("TYPE $first"); # uncoverable statement } } else { # uncoverable statement eval { # uncoverable statement my @keys = sort keys %$rule; # uncoverable statement $self->info("@keys"); # uncoverable statement }; } } } sub debug_tokens { # uncoverable subroutine my ($self, $tokens) = @_; # uncoverable statement $tokens ||= $self->tokens; # uncoverable statement require Term::ANSIColor; # uncoverable statement for my $token (@$tokens) { # uncoverable statement my $type = Term::ANSIColor::colored(["green"], # uncoverable statement sprintf "%-22s L %2d C %2d ", # uncoverable statement $token->{name}, $token->{line}, $token->{column} + 1 # uncoverable statement ); local $Data::Dumper::Useqq = 1; # uncoverable statement local $Data::Dumper::Terse = 1; # uncoverable statement require Data::Dumper; # uncoverable statement my $str = Data::Dumper->Dump([$token->{value}], ['str']); # uncoverable statement chomp $str; # uncoverable statement $str =~ s/(^.|.$)/Term::ANSIColor::colored(['blue'], $1)/ge; # uncoverable statement warn "$type$str\n"; # uncoverable statement } } sub highlight_yaml { my ($self) = @_; require YAML::PP::Highlight; my $tokens = $self->tokens; my $highlighted = YAML::PP::Highlight->ansicolored($tokens); warn $highlighted; } sub exception { my ($self, $msg, %args) = @_; my $next = $self->lexer->next_tokens; my $line = @$next ? $next->[0]->{line} : $self->lexer->line; my $offset = @$next ? $next->[0]->{column} : $self->lexer->offset; $offset++; my $next_line = $self->lexer->next_line; my $remaining = ''; if ($next_line) { if ($self->lexer->offset > 0) { $remaining = $next_line->[1] . $next_line->[2]; } else { $remaining = join '', @$next_line; } } my $caller = $args{caller} || [ caller(0) ]; my $e = YAML::PP::Exception->new( got => $args{got}, expected => $args{expected}, line => $line, column => $offset, msg => $msg, next => $next, where => $caller->[1] . ' line ' . $caller->[2], yaml => $remaining, ); croak $e; } sub expected { my ($self, %args) = @_; my $expected = $args{expected}; @$expected = sort grep { m/^[A-Z_]+$/ } @$expected; my $got = $args{got}->{name}; my @caller = caller(0); $self->exception("Expected (@$expected), but got $got", caller => \@caller, expected => $expected, got => $args{got}, ); } sub cb_tag { my ($self, $token) = @_; my $stack = $self->event_stack; if (! @$stack or $stack->[-1]->[0] ne 'properties') { push @$stack, [ properties => {} ]; } my $last = $stack->[-1]->[1]; my $tag = $self->_read_tag($token->{value}, $self->tagmap); $last->{inline} ||= []; push @{ $last->{inline} }, { type => 'tag', value => $tag, offset => $token->{column}, }; } sub _read_tag { my ($self, $tag, $map) = @_; if ($tag eq '!') { return "!"; } elsif ($tag =~ m/^!<(.*)>/) { return $1; } elsif ($tag =~ m/^(![^!]*!|!)(.+)/) { my $alias = $1; my $name = $2; $name =~ s/%([0-9a-fA-F]{2})/chr hex $1/eg; if (exists $map->{ $alias }) { $tag = $map->{ $alias }. $name; } else { if ($alias ne '!' and $alias ne '!!') { die "Found undefined tag handle '$alias'"; } $tag = "!$name"; } } else { die "Invalid tag"; } return $tag; } sub cb_anchor { my ($self, $token) = @_; my $anchor = $token->{value}; $anchor = substr($anchor, 1); my $stack = $self->event_stack; if (! @$stack or $stack->[-1]->[0] ne 'properties') { push @$stack, [ properties => {} ]; } my $last = $stack->[-1]->[1]; $last->{inline} ||= []; push @{ $last->{inline} }, { type => 'anchor', value => $anchor, offset => $token->{column}, }; } sub cb_property_eol { my ($self, $res) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]->[1]; my $inline = delete $last->{inline} or return; my $newline = $last->{newline} ||= []; push @$newline, @$inline; } sub cb_mapkey { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; } sub cb_send_mapkey { my ($self, $res) = @_; my $last = pop @{ $self->event_stack }; $self->scalar_event($last->[1]); $self->set_new_node(1); } sub cb_send_scalar { my ($self, $res) = @_; my $last = pop @{ $self->event_stack }; return unless $last; $self->scalar_event($last->[1]); my $e = $self->events; if ($e->[-1] eq 'IMAP') { $self->end_flow_mapping; } } sub cb_empty_mapkey { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); $self->set_new_node(1); } sub cb_send_flow_alias { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); $self->alias_event({ value => $alias }); } sub cb_send_alias { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); $self->alias_event({ value => $alias }); } sub cb_send_alias_key { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); $self->alias_event({ value => $alias }); $self->set_new_node(1); } sub cb_send_alias_from_stack { my ($self, $token) = @_; my $last = pop @{ $self->event_stack }; $self->alias_event($last->[1]); } sub cb_alias { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); push @{ $self->event_stack }, [ alias => { value => $alias, offset => $token->{column}, }]; } sub cb_question { my ($self, $res) = @_; $self->set_new_node(1); } sub cb_flow_question { my ($self, $res) = @_; $self->set_new_node(2); } sub cb_empty_complexvalue { my ($self, $res) = @_; $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } sub cb_questionstart { my ($self, $token) = @_; $self->start_mapping($token->{column}); } sub cb_complexcolon { my ($self, $res) = @_; $self->set_new_node(1); } sub cb_seqstart { my ($self, $token) = @_; my $column = $token->{column}; $self->start_sequence($column); $self->set_new_node(1); } sub cb_seqitem { my ($self, $res) = @_; $self->set_new_node(1); } sub cb_take_quoted { my ($self, $token) = @_; my $subtokens = $token->{subtokens}; my $stack = $self->event_stack; my $info = { style => $subtokens->[0]->{value} eq '"' ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_SINGLE_QUOTED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; } sub cb_quoted_multiline { my ($self, $token) = @_; my $subtokens = $token->{subtokens}; my $stack = $self->event_stack; my $info = { style => $subtokens->[0]->{value} eq '"' ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_SINGLE_QUOTED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; $self->cb_send_scalar; } sub cb_take_quoted_key { my ($self, $token) = @_; $self->cb_take_quoted($token); $self->cb_send_mapkey; } sub cb_send_plain_multi { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; $self->cb_send_scalar; } sub cb_start_plain { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; } sub cb_start_flowseq { my ($self, $token) = @_; $self->start_flow_sequence($token->{column}); } sub cb_start_flowmap { my ($self, $token) = @_; $self->start_flow_mapping($token->{column}); } sub cb_end_flowseq { my ($self, $res) = @_; $self->cb_send_scalar; $self->end_flow_sequence; $self->set_new_node(0); } sub cb_flow_comma { my ($self) = @_; my $event_types = $self->events; $self->set_new_node(0); if ($event_types->[-1] =~ m/^FLOWSEQ/) { $self->cb_send_scalar; $event_types->[-1] = $next_event{ $event_types->[-1] }; } } sub cb_flow_colon { my ($self) = @_; $self->set_new_node(1); } sub cb_empty_flow_mapkey { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_end_flowmap { my ($self, $res) = @_; $self->end_flow_mapping; $self->set_new_node(0); } sub cb_end_flowmap_empty { my ($self, $res) = @_; $self->cb_empty_flowmap_value; $self->end_flow_mapping; $self->set_new_node(0); } sub cb_flowkey_plain { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_flowkey_quoted { my ($self, $token) = @_; my $stack = $self->event_stack; my $subtokens = $token->{subtokens}; my $info = { style => $subtokens->[0]->{value} eq '"' ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_SINGLE_QUOTED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_empty_flowmap_key_value { my ($self, $token) = @_; $self->cb_empty_flow_mapkey($token); $self->cb_empty_flowmap_value; $self->cb_flow_comma; } sub cb_end_empty_flowmap_key_value { my ($self, $token) = @_; $self->cb_empty_flow_mapkey($token); $self->cb_empty_flowmap_value; $self->cb_flow_comma; $self->cb_end_flowmap; } sub cb_empty_flowmap_value { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_empty_flowseq_comma { my ($self, $token) = @_; $self->cb_empty_flowmap_value($token); $self->cb_flow_comma; } sub cb_empty_flowseq_end { my ($self, $token) = @_; $self->cb_empty_flowmap_value($token); $self->cb_end_flowseq; } sub cb_insert_map_alias { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_mapping($info->{offset}); $self->alias_event($info); $self->set_new_node(1); } sub cb_insert_map { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_mapping($info->{offset}); $self->scalar_event($info); $self->set_new_node(1); } sub cb_insert_implicit_flowseq_map { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_flow_mapping($info->{offset}, 1); $self->scalar_event($info); $self->set_new_node(1); } sub cb_insert_empty_implicit_flowseq_map { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_flow_mapping($info->{offset}, 1); $self->cb_empty_flowmap_value; $self->set_new_node(2); } sub cb_insert_empty_map { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->start_mapping($info->{offset}); $self->scalar_event($info); $self->set_new_node(1); } sub cb_send_block_scalar { my ($self, $token) = @_; my $type = $token->{subtokens}->[0]->{value}; my $stack = $self->event_stack; my $info = { style => $type eq '|' ? YAML_LITERAL_SCALAR_STYLE : YAML_FOLDED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $self->event_stack }, [ scalar => $info ]; $self->cb_send_scalar; } sub cb_end_document { my ($self, $token) = @_; $self->end_document(0); } sub cb_end_document_empty { my ($self, $token) = @_; $self->end_document(0); } sub cb_doc_start_implicit { my ($self, $token) = @_; $self->start_document(1); } sub cb_doc_start_explicit { my ($self, $token) = @_; $self->start_document(0); } sub cb_end_doc_start_document { my ($self, $token) = @_; $self->end_document(1); $self->start_document(0); } sub cb_tag_directive { my ($self, $token) = @_; my ($name, $tag_alias, $tag_url) = split ' ', $token->{value}; $self->tagmap->{ $tag_alias } = $tag_url; } sub cb_reserved_directive { } sub cb_set_yaml_version_directive { my ($self, $token) = @_; if ($self->yaml_version_directive) { croak "Found duplicate YAML directive"; } my ($version) = $token->{value} =~ m/^%YAML[ \t]+(1\.[12])/; $self->set_yaml_version($version || '1.2'); $self->set_yaml_version_directive(1); } 1; YAML-PP-v0.38.0/lib/YAML/PP/Schema/0000755000175000017500000000000014556031647014561 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/PP/Schema/JSON.pm0000644000175000017500000001423014556031647015670 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::JSON; our $VERSION = 'v0.38.0'; # VERSION use base 'Exporter'; our @EXPORT_OK = qw/ represent_int represent_float represent_literal represent_bool represent_undef /; use B; use Carp qw/ croak /; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE /; my $RE_INT = qr{^(-?(?:0|[1-9][0-9]*))$}; my $RE_FLOAT = qr{^(-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)$}; sub _to_int { 0 + $_[2]->[0] } # DaTa++ && shmem++ sub _to_float { unpack F => pack F => $_[2]->[0] } sub register { my ($self, %args) = @_; my $schema = $args{schema}; my $options = $args{options}; my $empty_null = 0; for my $opt (@$options) { if ($opt eq 'empty=str') { } elsif ($opt eq 'empty=null') { $empty_null = 1; } else { croak "Invalid option for JSON Schema: '$opt'"; } } $schema->add_resolver( tag => 'tag:yaml.org,2002:null', match => [ equals => null => undef ], ); if ($empty_null) { $schema->add_resolver( tag => 'tag:yaml.org,2002:null', match => [ equals => '' => undef ], implicit => 1, ); } else { $schema->add_resolver( tag => 'tag:yaml.org,2002:str', match => [ equals => '' => '' ], implicit => 1, ); } $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => true => $schema->true ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => false => $schema->false ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT => \&_to_int ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ regex => $RE_FLOAT => \&_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:str', match => [ all => sub { $_[1]->{value} } ], ); $schema->add_representer( undefined => \&represent_undef, ); my $int_flags = B::SVp_IOK; my $float_flags = B::SVp_NOK; $schema->add_representer( flags => $int_flags, code => \&represent_int, ); my %special = ( (0+'nan').'' => '.nan', (0+'inf').'' => '.inf', (0-'inf').'' => '-.inf' ); $schema->add_representer( flags => $float_flags, code => \&represent_float, ); $schema->add_representer( equals => $_, code => \&represent_literal, ) for ("", qw/ true false null /); $schema->add_representer( regex => qr{$RE_INT|$RE_FLOAT}, code => \&represent_literal, ); if ($schema->bool_class) { for my $class (@{ $schema->bool_class }) { if ($class eq 'perl') { $schema->add_representer( bool => 1, code => \&represent_bool, ); next; } $schema->add_representer( class_equals => $class, code => \&represent_bool, ); } } return; } sub represent_undef { my ($rep, $node) = @_; $node->{style} = YAML_PLAIN_SCALAR_STYLE; $node->{data} = 'null'; return 1; } sub represent_literal { my ($rep, $node) = @_; $node->{style} ||= YAML_SINGLE_QUOTED_SCALAR_STYLE; $node->{data} = "$node->{value}"; return 1; } sub represent_int { my ($rep, $node) = @_; if (int($node->{value}) ne $node->{value}) { return 0; } $node->{style} = YAML_PLAIN_SCALAR_STYLE; $node->{data} = "$node->{value}"; return 1; } my %special = ( (0+'nan').'' => '.nan', (0+'inf').'' => '.inf', (0-'inf').'' => '-.inf' ); sub represent_float { my ($rep, $node) = @_; if (exists $special{ $node->{value} }) { $node->{style} = YAML_PLAIN_SCALAR_STYLE; $node->{data} = $special{ $node->{value} }; return 1; } if (0.0 + $node->{value} ne $node->{value}) { return 0; } if (int($node->{value}) eq $node->{value} and not $node->{value} =~ m/\./) { $node->{value} .= '.0'; } $node->{style} = YAML_PLAIN_SCALAR_STYLE; $node->{data} = "$node->{value}"; return 1; } sub represent_bool { my ($rep, $node) = @_; my $string = $node->{value} ? 'true' : 'false'; $node->{style} = YAML_PLAIN_SCALAR_STYLE; @{ $node->{items} } = $string; $node->{data} = $string; return 1; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::JSON - YAML 1.2 JSON Schema =head1 SYNOPSIS my $yp = YAML::PP->new( schema => ['JSON'] ); my $yp = YAML::PP->new( schema => [qw/ JSON empty=str /] ); my $yp = YAML::PP->new( schema => [qw/ JSON empty=null /] ); =head1 DESCRIPTION With this schema, the resolution of plain values will work like in JSON. Everything that matches a special value will be loaded as such, other plain scalars will be loaded as strings. Note that this is different from the official YAML 1.2 JSON Schema, where all strings have to be quoted. Here you can see all Schemas and examples implemented by YAML::PP: L Official Schema: L =head1 CONFIGURATION The official YAML 1.2 JSON Schema wants all strings to be quoted. YAML::PP currently does not require that (it might do this optionally in the future). That means, there are no empty nodes allowed in the official schema. Example: --- key: The default behaviour of YAML::PP::Schema::JSON is to return an empty string, so it would be equivalent to: --- key: '' You can configure it to resolve this as C: my $yp = YAML::PP->new( schema => [qw/ JSON empty=null /] ); This way it is equivalent to: --- key: null The default is: my $yp = YAML::PP->new( schema => [qw/ JSON empty=str /] ); =head1 METHODS =over =item register Called by YAML::PP::Schema =item represent_bool, represent_float, represent_int, represent_literal, represent_undef Functions to represent the several node types. represent_bool($representer, $node); =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/Failsafe.pm0000644000175000017500000000134714556031647016636 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Failsafe; our $VERSION = 'v0.38.0'; # VERSION sub register { my ($self, %args) = @_; return; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Failsafe - YAML 1.2 Failsafe Schema =head1 SYNOPSIS my $yp = YAML::PP->new( schema => ['Failsafe'] ); =head1 DESCRIPTION With this schema, everything will be treated as a string. There are no booleans, integers, floats or undefined values. Here you can see all Schemas and examples implemented by YAML::PP: L Official Schema: L =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/YAML1_1.pm0000644000175000017500000001522514556031647016167 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::YAML1_1; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP::Schema::JSON qw/ represent_int represent_float represent_literal represent_bool represent_undef /; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE /; #https://yaml.org/type/bool.html # y|Y|yes|Yes|YES|n|N|no|No|NO # |true|True|TRUE|false|False|FALSE # |on|On|ON|off|Off|OFF # https://yaml.org/type/float.html # [-+]?([0-9][0-9_]*)?\.[0-9.]*([eE][-+][0-9]+)? (base 10) # |[-+]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]* (base 60) # |[-+]?\.(inf|Inf|INF) # (infinity) # |\.(nan|NaN|NAN) # (not a number) # https://yaml.org/type/int.html # [-+]?0b[0-1_]+ # (base 2) # |[-+]?0[0-7_]+ # (base 8) # |[-+]?(0|[1-9][0-9_]*) # (base 10) # |[-+]?0x[0-9a-fA-F_]+ # (base 16) # |[-+]?[1-9][0-9_]*(:[0-5]?[0-9])+ # (base 60) # https://yaml.org/type/null.html # ~ # (canonical) # |null|Null|NULL # (English) # | # (Empty) my $RE_INT_1_1 = qr{^([+-]?(?:0|[1-9][0-9_]*))$}; #my $RE_FLOAT_1_1 = qr{^([+-]?([0-9][0-9_]*)?\.[0-9.]*([eE][+-][0-9]+)?)$}; # https://yaml.org/type/float.html has a bug. The regex says \.[0-9.], but # probably means \.[0-9_] my $RE_FLOAT_1_1 = qr{^([+-]?(?:[0-9][0-9_]*)?\.[0-9_]*(?:[eE][+-][0-9]+)?)$}; my $RE_SEXAGESIMAL = qr{^([+-]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]*)$}; my $RE_SEXAGESIMAL_INT = qr{^([-+]?[1-9][0-9_]*(:[0-5]?[0-9])+)$}; my $RE_INT_OCTAL_1_1 = qr{^([+-]?)0([0-7_]+)$}; my $RE_INT_HEX_1_1 = qr{^([+-]?)(0x[0-9a-fA-F_]+)$}; my $RE_INT_BIN_1_1 = qr{^([-+]?)(0b[0-1_]+)$}; sub _from_oct { my ($constructor, $event, $matches) = @_; my ($sign, $oct) = @$matches; $oct =~ tr/_//d; my $result = oct $oct; $result = -$result if $sign eq '-'; return $result; } sub _from_hex { my ($constructor, $event, $matches) = @_; my ($sign, $hex) = @$matches; my $result = hex $hex; $result = -$result if $sign eq '-'; return $result; } sub _sexa_to_float { my ($constructor, $event, $matches) = @_; my ($float) = @$matches; my $result = 0; my $i = 0; my $sign = 1; $float =~ s/^-// and $sign = -1; for my $part (reverse split m/:/, $float) { $result += $part * ( 60 ** $i ); $i++; } $result = unpack F => pack F => $result; return $result * $sign; } sub _to_float { my ($constructor, $event, $matches) = @_; my ($float) = @$matches; $float =~ tr/_//d; $float = unpack F => pack F => $float; return $float; } sub _to_int { my ($constructor, $event, $matches) = @_; my ($int) = @$matches; $int =~ tr/_//d; 0 + $int; } sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => 'tag:yaml.org,2002:null', match => [ equals => $_ => undef ], ) for (qw/ null NULL Null ~ /, ''); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => $_ => $schema->true ], ) for (qw/ true TRUE True y Y yes Yes YES on On ON /); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => $_ => $schema->false ], ) for (qw/ false FALSE False n N no No NO off Off OFF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_OCTAL_1_1 => \&_from_oct ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_1_1 => \&_to_int ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_HEX_1_1 => \&_from_hex ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ regex => $RE_FLOAT_1_1 => \&_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_BIN_1_1 => \&_from_oct ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_SEXAGESIMAL_INT => \&_sexa_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ regex => $RE_SEXAGESIMAL => \&_sexa_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 + "inf" ], ) for (qw/ .inf .Inf .INF +.inf +.Inf +.INF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 - "inf" ], ) for (qw/ -.inf -.Inf -.INF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 + "nan" ], ) for (qw/ .nan .NaN .NAN /); $schema->add_resolver( tag => 'tag:yaml.org,2002:str', match => [ all => sub { $_[1]->{value} } ], implicit => 0, ); my $int_flags = B::SVp_IOK; my $float_flags = B::SVp_NOK; $schema->add_representer( flags => $int_flags, code => \&represent_int, ); $schema->add_representer( flags => $float_flags, code => \&represent_float, ); $schema->add_representer( undefined => \&represent_undef, ); $schema->add_representer( equals => $_, code => \&represent_literal, ) for ("", qw/ true TRUE True y Y yes Yes YES on On ON false FALSE False n N n no No NO off Off OFF null NULL Null ~ .inf .Inf .INF -.inf -.Inf -.INF +.inf +.Inf +.INF .nan .NaN .NAN /); $schema->add_representer( regex => qr{$RE_INT_1_1|$RE_FLOAT_1_1|$RE_INT_OCTAL_1_1|$RE_INT_HEX_1_1|$RE_INT_BIN_1_1|$RE_SEXAGESIMAL_INT|$RE_SEXAGESIMAL}, code => \&represent_literal, ); if ($schema->bool_class) { for my $class (@{ $schema->bool_class }) { if ($class eq 'perl') { $schema->add_representer( bool => 1, code => \&represent_bool, ); next; } $schema->add_representer( class_equals => $class, code => \&represent_bool, ); } } return; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::YAML1_1 - YAML 1.1 Schema for YAML::PP =head1 SYNOPSIS use YAML::PP; my $yp = YAML::PP->new( schema => ['YAML1_1'] ); my $yaml = <<'EOM'; --- booltrue: [ true, True, TRUE, y, Y, yes, Yes, YES, on, On, ON ] EOM my $data = $yp->load_string($yaml); =head1 DESCRIPTION This schema allows you to load the common YAML Types from YAML 1.1. =head1 METHODS =over =item register Called by YAML::PP::Schema =back =head1 SEE ALSO =over =item L =item L =item L =item L =back YAML-PP-v0.38.0/lib/YAML/PP/Schema/Core.pm0000644000175000017500000001002714556031647016007 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Core; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP::Schema::JSON qw/ represent_int represent_float represent_literal represent_bool represent_undef /; use B; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE /; my $RE_INT_CORE = qr{^([+-]?(?:[0-9]+))$}; my $RE_FLOAT_CORE = qr{^([+-]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)(?:[eE][+-]?[0-9]+)?)$}; my $RE_INT_OCTAL = qr{^0o([0-7]+)$}; my $RE_INT_HEX = qr{^0x([0-9a-fA-F]+)$}; sub _from_oct { oct $_[2]->[0] } sub _from_hex { hex $_[2]->[0] } sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => 'tag:yaml.org,2002:null', match => [ equals => $_ => undef ], ) for (qw/ null NULL Null ~ /, ''); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => $_ => $schema->true ], ) for (qw/ true TRUE True /); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => $_ => $schema->false ], ) for (qw/ false FALSE False /); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_CORE => \&YAML::PP::Schema::JSON::_to_int ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_OCTAL => \&_from_oct ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_HEX => \&_from_hex ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ regex => $RE_FLOAT_CORE => \&YAML::PP::Schema::JSON::_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 + "inf" ], ) for (qw/ .inf .Inf .INF +.inf +.Inf +.INF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 - "inf" ], ) for (qw/ -.inf -.Inf -.INF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 + "nan" ], ) for (qw/ .nan .NaN .NAN /); $schema->add_resolver( tag => 'tag:yaml.org,2002:str', match => [ all => sub { $_[1]->{value} } ], ); my $int_flags = B::SVp_IOK; my $float_flags = B::SVp_NOK; $schema->add_representer( flags => $int_flags, code => \&represent_int, ); $schema->add_representer( flags => $float_flags, code => \&represent_float, ); $schema->add_representer( undefined => \&represent_undef, ); $schema->add_representer( equals => $_, code => \&represent_literal, ) for ("", qw/ true TRUE True false FALSE False null NULL Null ~ .inf .Inf .INF +.inf +.Inf +.INF -.inf -.Inf -.INF .nan .NaN .NAN /); $schema->add_representer( regex => qr{$RE_INT_CORE|$RE_FLOAT_CORE|$RE_INT_OCTAL|$RE_INT_HEX}, code => \&represent_literal, ); if ($schema->bool_class) { for my $class (@{ $schema->bool_class }) { if ($class eq 'perl') { $schema->add_representer( bool => 1, code => \&represent_bool, ); next; } $schema->add_representer( class_equals => $class, code => \&represent_bool, ); } } return; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Core - YAML 1.2 Core Schema =head1 SYNOPSIS my $yp = YAML::PP->new( schema => ['Core'] ); =head1 DESCRIPTION This schema is the official recommended Core Schema for YAML 1.2. It loads additional values to the JSON schema as special types, for example C and C additional to C. Official Schema: L Here you can see all Schemas and examples implemented by YAML::PP: L =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/Merge.pm0000644000175000017500000000467414556031647016171 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Merge; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP::Type::MergeKey; sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => 'tag:yaml.org,2002:merge', match => [ equals => '<<' => YAML::PP::Type::MergeKey->new ], ); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Merge - Enabling YAML merge keys for mappings =head1 SYNOPSIS use YAML::PP; my $yp = YAML::PP->new( schema => [qw/ + Merge /] ); my $yaml = <<'EOM'; --- - &CENTER { x: 1, y: 2 } - &LEFT { x: 0, y: 2 } - &BIG { r: 10 } - &SMALL { r: 1 } # All the following maps are equal: - # Explicit keys x: 1 y: 2 r: 10 label: center/big - # Merge one map << : *CENTER r: 10 label: center/big - # Merge multiple maps << : [ *CENTER, *BIG ] label: center/big - # Override << : [ *BIG, *LEFT, *SMALL ] x: 1 label: center/big EOM my $data = $yp->load_string($yaml); # $data->[4] == $data->[5] == $data->[6] == $data->[7] =head1 DESCRIPTION See L for the specification. Quote: "Specify one or more mappings to be merged with the current one. The C<< << >> merge key is used to indicate that all the keys of one or more specified maps should be inserted into the current map. If the value associated with the key is a single mapping node, each of its key/value pairs is inserted into the current mapping, unless the key already exists in it. If the value associated with the merge key is a sequence, then this sequence is expected to contain mapping nodes and each of these nodes is merged in turn according to its order in the sequence. Keys in mapping nodes earlier in the sequence override keys specified in later mapping nodes." The implementation of this in a generic way is not trivial, because we also have to handle duplicate keys, and YAML::PP allows you to write your own handler for processing mappings. So the inner API of that is not stable at this point. Note that if you enable this schema, a plain scalar `<<` will be seen as special anywhere in your document, so if you want a literal `<<`, you have to put it in quotes. Note that the performed merge is not a "deep merge". Only top-level keys are merged. =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/Binary.pm0000644000175000017500000000503614556031647016347 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Binary; our $VERSION = 'v0.38.0'; # VERSION use MIME::Base64 qw/ decode_base64 encode_base64 /; use YAML::PP::Common qw/ YAML_ANY_SCALAR_STYLE /; sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => 'tag:yaml.org,2002:binary', match => [ all => sub { my ($constructor, $event) = @_; my $base64 = $event->{value}; my $binary = decode_base64($base64); return $binary; }], implicit => 0, ); $schema->add_representer( regex => qr{.*}, code => sub { my ($rep, $node) = @_; my $binary = $node->{value}; unless ($binary =~ m/[\x{7F}-\x{10FFFF}]/) { # ASCII return; } if (utf8::is_utf8($binary)) { # utf8 return; } # everything else must be base64 encoded my $base64 = encode_base64($binary); $node->{style} = YAML_ANY_SCALAR_STYLE; $node->{data} = $base64; $node->{tag} = "tag:yaml.org,2002:binary"; return 1; }, ); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Binary - Schema for loading and binary data =head1 SYNOPSIS use YAML::PP; my $yp = YAML::PP->new( schema => [qw/ + Binary /] ); # or my ($binary, $same_binary) = $yp->load_string(<<'EOM'); --- !!binary "\ R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" --- !!binary | R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= # The binary value above is a tiny arrow encoded as a gif image. EOM =head1 DESCRIPTION See By prepending a base64 encoded binary string with the C tag, it can be automatically decoded when loading. Note that the logic for dumping is probably broken, see L. Suggestions welcome. =head1 METHODS =over =item register Called by L =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/Perl.pm0000644000175000017500000005771114556031647016034 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Perl; our $VERSION = 'v0.38.0'; # VERSION use Scalar::Util qw/ blessed reftype /; my $qr_prefix; # workaround to avoid growing regexes when repeatedly loading and dumping # e.g. (?^:(?^:regex)) { $qr_prefix = qr{\(\?-xism\:}; if ($] >= 5.014) { $qr_prefix = qr{\(\?\^(?:[uadl])?\:}; } } sub new { my ($class, %args) = @_; my $tags = $args{tags} || []; my $loadcode = $args{loadcode} || 0; my $dumpcode = $args{dumpcode}; $dumpcode = 1 unless defined $dumpcode; my $classes = $args{classes}; my $self = bless { tags => $tags, loadcode => $loadcode, dumpcode => $dumpcode, classes => $classes, }, $class; } sub register { my ($self, %args) = @_; my $schema = $args{schema}; my $tags; my $loadcode = 0; my $dumpcode = 1; my $classes; if (blessed($self)) { $tags = $self->{tags}; @$tags = ('!perl') unless @$tags; $loadcode = $self->{loadcode}; $dumpcode = $self->{dumpcode}; $classes = $self->{classes}; } else { my $options = $args{options}; my $tagtype = '!perl'; for my $option (@$options) { if ($option =~ m/^tags?=(.+)$/) { $tagtype = $1; } elsif ($option eq '+loadcode') { $loadcode = 1; } elsif ($option eq '-dumpcode') { $dumpcode = 0; } } $tags = [split m/\+/, $tagtype]; } my $perl_tag; my %tagtypes; my @perl_tags; for my $type (@$tags) { if ($type eq '!perl') { $perl_tag ||= $type; push @perl_tags, '!perl'; } elsif ($type eq '!!perl') { $perl_tag ||= 'tag:yaml.org,2002:perl'; push @perl_tags, 'tag:yaml.org,2002:perl'; } else { die "Invalid tagtype '$type'"; } $tagtypes{ $type } = 1; } my $perl_regex = '!perl'; if ($tagtypes{'!perl'} and $tagtypes{'!!perl'}) { $perl_regex = '(?:tag:yaml\\.org,2002:|!)perl'; } elsif ($tagtypes{'!perl'}) { $perl_regex = '!perl'; } elsif ($tagtypes{'!!perl'}) { $perl_regex = 'tag:yaml\\.org,2002:perl'; } my $class_regex = qr{.+}; my $no_objects = 0; if ($classes) { if (@$classes) { $class_regex = '(' . join( '|', map "\Q$_\E", @$classes ) . ')'; } else { $no_objects = 1; $class_regex = ''; } } # Code if ($loadcode) { my $load_code = sub { my ($constructor, $event) = @_; return $self->evaluate_code($event->{value}); }; my $load_code_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/code:}{}; my $sub = $self->evaluate_code($event->{value}); return $self->object($sub, $class); }; $schema->add_resolver( tag => "$_/code", match => [ all => $load_code], implicit => 0, ) for @perl_tags; $schema->add_resolver( tag => qr{^$perl_regex/code:$class_regex$}, match => [ all => $load_code_blessed ], implicit => 0, ); $schema->add_resolver( tag => qr{^$perl_regex/code:.+}, match => [ all => $load_code ], implicit => 0, ) if $no_objects; } else { my $loadcode_dummy = sub { return sub {} }; my $loadcode_blessed_dummy = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/code:}{}; return $self->object(sub {}, $class); }; $schema->add_resolver( tag => "$_/code", match => [ all => $loadcode_dummy ], implicit => 0, ) for @perl_tags; $schema->add_resolver( tag => qr{^$perl_regex/code:$class_regex$}, match => [ all => $loadcode_blessed_dummy ], implicit => 0, ); $schema->add_resolver( tag => qr{^$perl_regex/code:.+}, match => [ all => $loadcode_dummy ], implicit => 0, ) if $no_objects; } # Glob my $load_glob = sub { my $value = undef; return \$value; }; my $load_glob_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/glob:}{}; my $value = undef; return $self->object(\$value, $class); }; $schema->add_mapping_resolver( tag => "$_/glob", on_create => $load_glob, on_data => sub { my ($constructor, $ref, $list) = @_; $$ref = $self->construct_glob($list); }, ) for @perl_tags; if ($no_objects) { $schema->add_mapping_resolver( tag => qr{^$perl_regex/glob:.+$}, on_create => $load_glob, on_data => sub { my ($constructor, $ref, $list) = @_; $$ref = $self->construct_glob($list); }, ); } else { $schema->add_mapping_resolver( tag => qr{^$perl_regex/glob:$class_regex$}, on_create => $load_glob_blessed, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_glob($list); }, ); } # Regex my $load_regex = sub { my ($constructor, $event) = @_; return $self->construct_regex($event->{value}); }; my $load_regex_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/regexp:}{}; my $qr = $self->construct_regex($event->{value}); return $self->object($qr, $class); }; $schema->add_resolver( tag => "$_/regexp", match => [ all => $load_regex ], implicit => 0, ) for @perl_tags; $schema->add_resolver( tag => qr{^$perl_regex/regexp:$class_regex$}, match => [ all => $load_regex_blessed ], implicit => 0, ); $schema->add_resolver( tag => qr{^$perl_regex/regexp:$class_regex$}, match => [ all => $load_regex ], implicit => 0, ) if $no_objects; my $load_sequence = sub { return [] }; my $load_sequence_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/array:}{}; return $self->object([], $class); }; $schema->add_sequence_resolver( tag => "$_/array", on_create => $load_sequence, ) for @perl_tags; $schema->add_sequence_resolver( tag => qr{^$perl_regex/array:$class_regex$}, on_create => $load_sequence_blessed, ); $schema->add_sequence_resolver( tag => qr{^$perl_regex/array:.+$}, on_create => $load_sequence, ) if $no_objects; my $load_mapping = sub { return {} }; my $load_mapping_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/hash:}{}; return $self->object({}, $class); }; $schema->add_mapping_resolver( tag => "$_/hash", on_create => $load_mapping, ) for @perl_tags; $schema->add_mapping_resolver( tag => qr{^$perl_regex/hash:$class_regex$}, on_create => $load_mapping_blessed, ); $schema->add_mapping_resolver( tag => qr{^$perl_regex/hash:.+$}, on_create => $load_mapping, ) if $no_objects; # Ref my $load_ref = sub { my $value = undef; return \$value; }; my $load_ref_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/ref:}{}; my $value = undef; return $self->object(\$value, $class); }; $schema->add_mapping_resolver( tag => "$_/ref", on_create => $load_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_ref($list); }, ) for @perl_tags; $schema->add_mapping_resolver( tag => qr{^$perl_regex/ref:$class_regex$}, on_create => $load_ref_blessed, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_ref($list); }, ); $schema->add_mapping_resolver( tag => qr{^$perl_regex/ref:.+$}, on_create => $load_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_ref($list); }, ) if $no_objects; # Scalar ref my $load_scalar_ref = sub { my $value = undef; return \$value; }; my $load_scalar_ref_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/scalar:}{}; my $value = undef; return $self->object(\$value, $class); }; $schema->add_mapping_resolver( tag => "$_/scalar", on_create => $load_scalar_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_scalar($list); }, ) for @perl_tags; $schema->add_mapping_resolver( tag => qr{^$perl_regex/scalar:$class_regex$}, on_create => $load_scalar_ref_blessed, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_scalar($list); }, ); $schema->add_mapping_resolver( tag => qr{^$perl_regex/scalar:.+$}, on_create => $load_scalar_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_scalar($list); }, ) if $no_objects; $schema->add_representer( scalarref => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/scalar"; $node->{data} = $self->represent_scalar($node->{value}); }, ); $schema->add_representer( refref => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/ref"; $node->{data} = $self->represent_ref($node->{value}); }, ); $schema->add_representer( coderef => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/code"; $node->{data} = $dumpcode ? $self->represent_code($node->{value}) : '{ "DUMMY" }'; }, ); $schema->add_representer( glob => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/glob"; $node->{data} = $self->represent_glob($node->{value}); }, ); $schema->add_representer( class_matches => 1, code => sub { my ($rep, $node) = @_; my $blessed = blessed $node->{value}; my $tag_blessed = ":$blessed"; if ($blessed !~ m/^$class_regex$/) { $tag_blessed = ''; } $node->{tag} = sprintf "$perl_tag/%s%s", lc($node->{reftype}), $tag_blessed; if ($node->{reftype} eq 'HASH') { $node->{data} = $node->{value}; } elsif ($node->{reftype} eq 'ARRAY') { $node->{data} = $node->{value}; } # Fun with regexes in perl versions! elsif ($node->{reftype} eq 'REGEXP') { if ($blessed eq 'Regexp') { $node->{tag} = $perl_tag . "/regexp"; } $node->{data} = $self->represent_regex($node->{value}); } elsif ($node->{reftype} eq 'SCALAR') { # in perl <= 5.10 regex reftype(regex) was SCALAR if ($blessed eq 'Regexp') { $node->{tag} = $perl_tag . '/regexp'; $node->{data} = $self->represent_regex($node->{value}); } # In perl <= 5.10 there seemed to be no better pure perl # way to detect a blessed regex? elsif ( $] <= 5.010001 and not defined ${ $node->{value} } and $node->{value} =~ m/^\(\?/ ) { $node->{tag} = $perl_tag . '/regexp' . $tag_blessed; $node->{data} = $self->represent_regex($node->{value}); } else { # phew, just a simple scalarref $node->{data} = $self->represent_scalar($node->{value}); } } elsif ($node->{reftype} eq 'REF') { $node->{data} = $self->represent_ref($node->{value}); } elsif ($node->{reftype} eq 'CODE') { $node->{data} = $dumpcode ? $self->represent_code($node->{value}) : '{ "DUMMY" }'; } elsif ($node->{reftype} eq 'GLOB') { $node->{data} = $self->represent_glob($node->{value}); } else { die "Reftype '$node->{reftype}' not implemented"; } return 1; }, ); return; } sub evaluate_code { my ($self, $code) = @_; unless ($code =~ m/^ \s* \{ .* \} \s* \z/xs) { die "Malformed code"; } $code = "sub $code"; my $sub = eval $code; if ($@) { die "Couldn't eval code: $@>>$code<<"; } return $sub; } sub construct_regex { my ($self, $regex) = @_; if ($regex =~ m/^$qr_prefix(.*)\)\z/s) { $regex = $1; } my $qr = qr{$regex}; return $qr; } sub construct_glob { my ($self, $list) = @_; if (@$list % 2) { die "Unexpected data in perl/glob construction"; } my %globdata = @$list; my $name = delete $globdata{NAME} or die "Missing NAME in perl/glob"; my $pkg = delete $globdata{PACKAGE}; $pkg = 'main' unless defined $pkg; my @allowed = qw(SCALAR ARRAY HASH CODE IO); delete @globdata{ @allowed }; if (my @keys = keys %globdata) { die "Unexpected keys in perl/glob: @keys"; } no strict 'refs'; return *{"${pkg}::$name"}; } sub construct_scalar { my ($self, $list) = @_; if (@$list != 2) { die "Unexpected data in perl/scalar construction"; } my ($key, $value) = @$list; unless ($key eq '=') { die "Unexpected data in perl/scalar construction"; } return $value; } sub construct_ref { &construct_scalar; } sub represent_scalar { my ($self, $value) = @_; return { '=' => $$value }; } sub represent_ref { &represent_scalar; } sub represent_code { my ($self, $code) = @_; require B::Deparse; my $deparse = B::Deparse->new("-p", "-sC"); return $deparse->coderef2text($code); } my @stats = qw/ device inode mode links uid gid rdev size atime mtime ctime blksize blocks /; sub represent_glob { my ($self, $glob) = @_; my %glob; for my $type (qw/ PACKAGE NAME SCALAR ARRAY HASH CODE IO /) { my $value = *{ $glob }{ $type }; if ($type eq 'SCALAR') { $value = $$value; } elsif ($type eq 'IO') { if (defined $value) { undef $value; $value->{stat} = {}; if ($value->{fileno} = fileno(*{ $glob })) { @{ $value->{stat} }{ @stats } = stat(*{ $glob }); $value->{tell} = tell *{ $glob }; } } } $glob{ $type } = $value if defined $value; } return \%glob; } sub represent_regex { my ($self, $regex) = @_; $regex = "$regex"; if ($regex =~ m/^$qr_prefix(.*)\)\z/s) { $regex = $1; } return $regex; } sub object { my ($self, $data, $class) = @_; return bless $data, $class; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Perl - Schema for serializing perl objects and special types =head1 SYNOPSIS use YAML::PP; # This can be dangerous when loading untrusted YAML! my $yp = YAML::PP->new( schema => [qw/ + Perl /] ); # or my $yp = YAML::PP->new( schema => [qw/ Core Perl /] ); my $yaml = $yp->dump_string(sub { return 23 }); # loading code references # This is very dangerous when loading untrusted YAML!! my $yp = YAML::PP->new( schema => [qw/ + Perl +loadcode /] ); my $code = $yp->load_string(<<'EOM'); --- !perl/code | { use 5.010; my ($name) = @_; say "Hello $name!"; } EOM $code->("Ingy"); =head1 DESCRIPTION This schema allows you to load and dump perl objects and special types. Please note that loading objects of arbitrary classes can be dangerous in Perl. You have to load the modules yourself, but if an exploitable module is loaded and an object is created, its C method will be called when the object falls out of scope. L is an example that can be exploitable and might remove arbitrary files. Dumping code references is on by default, but not loading (because that is easily exploitable since it's using string C). =head2 Tag Styles You can define the style of tags you want to support: my $yp_perl_two_one = YAML::PP->new( schema => [qw/ + Perl tags=!!perl+!perl /], ); =over =item C (default) Only C tags are supported. =item C Only C tags are supported. =item C Both C and C are supported when loading. When dumping, C is used. =item C Both C and C are supported when loading. When dumping, C is used. =back L.pm, L and L are using C when dumping. L.pm and L are supporting both C and C when loading. L currently only supports the latter. =head2 Allow only certain classes Since v0.017 Blessing arbitrary objects can be dangerous. Maybe you want to allow blessing only specific classes and ignore others. For this you have to instantiate a Perl Schema object first and use the C option. Currently it only allows a list of strings: my $perl = YAML::PP::Schema::Perl->new( classes => ['Foo', 'Bar'], ); my $yp = YAML::PP::Perl->new( schema => [qw/ + /, $perl], ); Allowed classes will be loaded and dumped as usual. The others will be ignored. If you want to allow no objects at all, pass an empty array ref. =cut =head2 EXAMPLES This is a list of the currently supported types and how they are dumped into YAML: =cut ### BEGIN EXAMPLE =pod =over 4 =item array # Code [ qw/ one two three four / ] # YAML --- - one - two - three - four =item array_blessed # Code bless [ qw/ one two three four / ], "Just::An::Arrayref" # YAML --- !perl/array:Just::An::Arrayref - one - two - three - four =item circular # Code my $circle = bless [ 1, 2 ], 'Circle'; push @$circle, $circle; $circle; # YAML --- &1 !perl/array:Circle - 1 - 2 - *1 =item coderef # Code sub { my (%args) = @_; return $args{x} + $args{y}; } # YAML --- !perl/code |- { use warnings; use strict; (my(%args) = @_); (return ($args{'x'} + $args{'y'})); } =item coderef_blessed # Code bless sub { my (%args) = @_; return $args{x} - $args{y}; }, "I::Am::Code" # YAML --- !perl/code:I::Am::Code |- { use warnings; use strict; (my(%args) = @_); (return ($args{'x'} - $args{'y'})); } =item hash # Code { U => 2, B => 52, } # YAML --- B: 52 U: 2 =item hash_blessed # Code bless { U => 2, B => 52, }, 'A::Very::Exclusive::Class' # YAML --- !perl/hash:A::Very::Exclusive::Class B: 52 U: 2 =item refref # Code my $ref = { a => 'hash' }; my $refref = \$ref; $refref; # YAML --- !perl/ref =: a: hash =item refref_blessed # Code my $ref = { a => 'hash' }; my $refref = bless \$ref, 'Foo'; $refref; # YAML --- !perl/ref:Foo =: a: hash =item regexp # Code my $string = 'unblessed'; qr{$string} # YAML --- !perl/regexp unblessed =item regexp_blessed # Code my $string = 'blessed'; bless qr{$string}, "Foo" # YAML --- !perl/regexp:Foo blessed =item scalarref # Code my $scalar = "some string"; my $scalarref = \$scalar; $scalarref; # YAML --- !perl/scalar =: some string =item scalarref_blessed # Code my $scalar = "some other string"; my $scalarref = bless \$scalar, 'Foo'; $scalarref; # YAML --- !perl/scalar:Foo =: some other string =back =cut ### END EXAMPLE =head2 METHODS =over =item new my $perl = YAML::PP::Schema::Perl->new( tags => "!perl", classes => ['MyClass'], loadcode => 1, dumpcode => 1, ); The constructor recognizes the following options: =over =item tags Default: 'C' See L<"Tag Styles"> =item classes Default: C Since: v0.017 Accepts an array ref of class names =item loadcode Default: 0 =item dumpcode Default: 1 my $yp = YAML::PP->new( schema => [qw/ + Perl -dumpcode /] ); =back =item register A class method called by L =item construct_ref, represent_ref Perl variables of the type C are represented in yaml like this: --- !perl/ref =: a: 1 C returns the perl data: my $data = YAML::PP::Schema::Perl->construct_ref([ '=', { some => 'data' } ); my $data = \{ a => 1 }; C turns a C variable into a YAML mapping: my $data = YAML::PP::Schema::Perl->represent_ref(\{ a => 1 }); my $data = { '=' => { a => 1 } }; =item construct_scalar, represent_scalar Perl variables of the type C are represented in yaml like this: --- !perl/scalar =: string C returns the perl data: my $data = YAML::PP::Schema::Perl->construct_ref([ '=', 'string' ); my $data = \'string'; C turns a C variable into a YAML mapping: my $data = YAML::PP::Schema::Perl->represent_scalar(\'string'); my $data = { '=' => 'string' }; =item construct_regex, represent_regex C returns a C object from the YAML string: my $qr = YAML::PP::Schema::Perl->construct_regex('foo.*'); C returns a string representing the regex object: my $string = YAML::PP::Schema::Perl->represent_regex(qr{...}); =item evaluate_code, represent_code C returns a code reference from a string. The string must start with a C<{> and end with a C<}>. my $code = YAML::PP::Schema::Perl->evaluate_code('{ return 23 }'); C returns a string representation of the code reference with the help of B::Deparse: my $string = YAML::PP::Schema::Perl->represent_code(sub { return 23 }); =item construct_glob, represent_glob C returns a glob from a hash. my $glob = YAML::PP::Schema::Perl->construct_glob($hash); C returns a hash representation of the glob. my $hash = YAML::PP::Schema::Perl->represent_glob($glob); =item object Does the same as C: my $object = YAML::PP::Schema::Perl->object($data, $class); =back =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/Include.pm0000644000175000017500000001453614556031647016513 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Include; our $VERSION = 'v0.38.0'; # VERSION use Carp qw/ croak /; use Scalar::Util qw/ weaken /; use File::Basename qw/ dirname /; sub new { my ($class, %args) = @_; my $paths = delete $args{paths}; if (defined $paths) { unless (ref $paths eq 'ARRAY') { $paths = [$paths]; } } else { $paths = []; } my $allow_absolute = $args{allow_absolute} || 0; my $loader = $args{loader} || \&default_loader; my $self = bless { paths => $paths, allow_absolute => $allow_absolute, last_includes => [], cached => {}, loader => $loader, }, $class; return $self; } sub init { my ($self) = @_; $self->{last_includes} = []; $self->{cached} = []; } sub paths { $_[0]->{paths} } sub allow_absolute { $_[0]->{allow_absolute} } sub yp { my ($self, $yp) = @_; if (@_ == 2) { $self->{yp} = $yp; weaken $self->{yp}; return $yp; } return $self->{yp}; } sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => '!include', match => [ all => sub { $self->include(@_) } ], implicit => 0, ); } sub include { my ($self, $constructor, $event) = @_; my $yp = $self->yp; my $search_paths = $self->paths; my $allow_absolute = $self->allow_absolute; my $relative = not @$search_paths; if ($relative) { my $last_includes = $self->{last_includes}; if (@$last_includes) { $search_paths = [ $last_includes->[-1] ]; } else { # we are in the top-level file and need to look into # the original YAML::PP instance my $filename = $yp->loader->filename; $search_paths = [dirname $filename]; } } my $filename = $event->{value}; my $fullpath; if (File::Spec->file_name_is_absolute($filename)) { unless ($allow_absolute) { croak "Absolute filenames not allowed"; } $fullpath = $filename; } else { my @paths = File::Spec->splitdir($filename); unless ($allow_absolute) { # if absolute paths are not allowed, we also may not use upwards .. @paths = File::Spec->no_upwards(@paths); } for my $candidate (@$search_paths) { my $test = File::Spec->catfile( $candidate, @paths ); if (-e $test) { $fullpath = $test; last; } } croak "File '$filename' not found" unless defined $fullpath; } if ($self->{cached}->{ $fullpath }++) { croak "Circular include '$fullpath'"; } if ($relative) { push @{ $self->{last_includes} }, dirname $fullpath; } # We need a new object because we are still in the parsing and # constructing process my $clone = $yp->clone; my ($data) = $self->loader->($clone, $fullpath); if ($relative) { pop @{ $self->{last_includes} }; } unless (--$self->{cached}->{ $fullpath }) { delete $self->{cached}->{ $fullpath }; } return $data; } sub loader { my ($self, $code) = @_; if (@_ == 2) { $self->{loader} = $code; return $code; } return $self->{loader}; } sub default_loader { my ($yp, $filename) = @_; $yp->load_file($filename); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Include - Include YAML files =head1 SYNOPSIS # /path/to/file.yaml # --- # included: !include include/file2.yaml # /path/to/include/file2.yaml # --- # a: b my $include = YAML::PP::Schema::Include->new; my $yp = YAML::PP->new( schema => ['+', $include] ); # we need the original YAML::PP object for getting the current filename # and for loading another file $include->yp($yp); my ($data) = $yp->load_file("/path/to/file.yaml"); # The result will be: $data = { included => { a => 'b' } }; Allow absolute filenames and upwards C<'..'>: my $include = YAML::PP::Schema::Include->new( allow_absolute => 1, # default: 0 ); Specify paths to search for includes: my @include_paths = ("/path/to/include/yaml/1", "/path/to/include/yaml/2"); my $include = YAML::PP::Schema::Include->new( paths => \@include_paths, ); my $yp = YAML::PP->new( schema => ['+', $include] ); $include->yp($yp); # /path/to/include/yaml/1/file1.yaml # --- # a: b my $yaml = <<'EOM'; - included: !include file1.yaml EOM my ($data) = $yp->load_string($yaml); =head1 DESCRIPTION This plugin allows you to split a large YAML file into smaller ones. You can then include these files with the C tag. It will search for the specified filename relative to the currently processed filename. You can also specify the paths where to search for files to include. It iterates through the paths and returns the first filename that exists. By default, only relative paths are allowed. Any C<../> in the path will be removed. You can change that behaviour by setting the option C to true. If the included file contains more than one document, only the first one will be included. I will probably add a possibility to return all documents as an arrayref. The included YAML file will be loaded by creating a new L object with the schema from the existing object. This way you can recursively include files. You can even reuse the same include via an alias: --- invoice: shipping address: &address !include address.yaml billing address: *address Circular includes will be detected, and will be fatal. It's possible to specify what to do with the included file: my $include = YAML::PP::Schema::Include->new( loader => sub { my ($yp, $filename); if ($filename =~ m/\.txt$/) { # open file and just return text } else { # default behaviour return $yp->load_file($filename); } }, ); For example, RAML defines an C tag which depends on the file content. If it contains a special RAML directive, it will be loaded as YAML, otherwise the content of the file will be included as a string. So with this plugin you are able to read RAML specifications. =cut YAML-PP-v0.38.0/lib/YAML/PP/Schema/Tie/0000755000175000017500000000000014556031647015302 5ustar tinatinaYAML-PP-v0.38.0/lib/YAML/PP/Schema/Tie/IxHash.pm0000644000175000017500000000463214556031647017031 0ustar tinatinause strict; use warnings; package YAML::PP::Schema::Tie::IxHash; our $VERSION = 'v0.38.0'; # VERSION use base 'YAML::PP::Schema'; use Scalar::Util qw/ blessed reftype /; my $ixhash = eval { require Tie::IxHash }; sub register { my ($self, %args) = @_; my $schema = $args{schema}; unless ($ixhash) { die "You need to install Tie::IxHash in order to use this module"; } $schema->add_representer( tied_equals => 'Tie::IxHash', code => sub { my ($rep, $node) = @_; $node->{items} = [ %{ $node->{data} } ]; return 1; }, ); return; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Tie::IxHash - (Deprecated) Schema for serializing ordered hashes =head1 SYNOPSIS use YAML::PP; use Tie::IxHash; my $yp = YAML::PP->new( schema => [qw/ + Tie::IxHash /] ); tie(my %ordered, 'Tie::IxHash'); %ordered = ( U => 2, B => 52, ); my $yaml = $yp->dump_string(\%ordered); # Output: --- U: 2 B: 52 =head1 DESCRIPTION This is deprecated. See the new option C in L. This schema allows you to dump ordered hashes which are tied to L. This code is pretty new and experimental. It is not yet implemented for loading yet, so for now you have to tie the hashes yourself. Examples: =cut ### BEGIN EXAMPLE =pod =over 4 =item order # Code tie(my %order, 'Tie::IxHash'); %order = ( U => 2, B => 52, c => 64, 19 => 84, Disco => 2000, Year => 2525, days_on_earth => 20_000, ); \%order; # YAML --- U: 2 B: 52 c: 64 19: 84 Disco: 2000 Year: 2525 days_on_earth: 20000 =item order_blessed # Code tie(my %order, 'Tie::IxHash'); %order = ( U => 2, B => 52, c => 64, 19 => 84, Disco => 2000, Year => 2525, days_on_earth => 20_000, ); bless \%order, 'Order'; # YAML --- !perl/hash:Order U: 2 B: 52 c: 64 19: 84 Disco: 2000 Year: 2525 days_on_earth: 20000 =back =cut ### END EXAMPLE =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut YAML-PP-v0.38.0/lib/YAML/PP.pm0000644000175000017500000011103614556031647013721 0ustar tinatina# ABSTRACT: YAML 1.2 Processor use strict; use warnings; package YAML::PP; our $VERSION = 'v0.38.0'; # VERSION use YAML::PP::Schema; use YAML::PP::Schema::JSON; use YAML::PP::Loader; use YAML::PP::Dumper; use Scalar::Util qw/ blessed /; use Carp qw/ croak /; use base 'Exporter'; our @EXPORT_OK = qw/ Load LoadFile Dump DumpFile /; my %YAML_VERSIONS = ('1.1' => 1, '1.2' => 1); sub new { my ($class, %args) = @_; my $bool = delete $args{boolean}; $bool = 'perl' unless defined $bool; my $schemas = delete $args{schema} || ['+']; my $cyclic_refs = delete $args{cyclic_refs} || 'fatal'; my $indent = delete $args{indent}; my $width = delete $args{width}; my $writer = delete $args{writer}; my $header = delete $args{header}; my $footer = delete $args{footer}; my $duplicate_keys = delete $args{duplicate_keys}; my $yaml_version = $class->_arg_yaml_version(delete $args{yaml_version}); my $default_yaml_version = $yaml_version->[0]; my $version_directive = delete $args{version_directive}; my $preserve = delete $args{preserve}; my $parser = delete $args{parser}; my $emitter = delete $args{emitter} || { indent => $indent, width => $width, writer => $writer, }; if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my %schemas; for my $v (@$yaml_version) { my $schema; if (blessed($schemas) and $schemas->isa('YAML::PP::Schema')) { $schema = $schemas; } else { $schema = YAML::PP::Schema->new( boolean => $bool, yaml_version => $v, ); $schema->load_subschemas(@$schemas); } $schemas{ $v } = $schema; } my $default_schema = $schemas{ $default_yaml_version }; my $loader = YAML::PP::Loader->new( schemas => \%schemas, cyclic_refs => $cyclic_refs, parser => $parser, default_yaml_version => $default_yaml_version, preserve => $preserve, duplicate_keys => $duplicate_keys, ); my $dumper = YAML::PP::Dumper->new( schema => $default_schema, emitter => $emitter, header => $header, footer => $footer, version_directive => $version_directive, preserve => $preserve, ); my $self = bless { schema => \%schemas, loader => $loader, dumper => $dumper, }, $class; return $self; } sub clone { my ($self) = @_; my $clone = { schema => $self->schema, loader => $self->loader->clone, dumper => $self->dumper->clone, }; return bless $clone, ref $self; } sub _arg_yaml_version { my ($class, $version) = @_; my @versions = ('1.2'); if (defined $version) { @versions = (); if (not ref $version) { $version = [$version]; } for my $v (@$version) { unless ($YAML_VERSIONS{ $v }) { croak "YAML Version '$v' not supported"; } push @versions, $v; } } return \@versions; } sub loader { if (@_ > 1) { $_[0]->{loader} = $_[1] } return $_[0]->{loader}; } sub dumper { if (@_ > 1) { $_[0]->{dumper} = $_[1] } return $_[0]->{dumper}; } sub schema { if (@_ > 1) { $_[0]->{schema}->{'1.2'} = $_[1] } return $_[0]->{schema}->{'1.2'}; } sub default_schema { my ($self, %args) = @_; my $schema = YAML::PP::Schema->new( boolean => $args{boolean}, ); $schema->load_subschemas(qw/ Core /); return $schema; } sub load_string { my ($self, $yaml) = @_; return $self->loader->load_string($yaml); } sub load_file { my ($self, $file) = @_; return $self->loader->load_file($file); } sub dump { my ($self, @data) = @_; return $self->dumper->dump(@data); } sub dump_string { my ($self, @data) = @_; return $self->dumper->dump_string(@data); } sub dump_file { my ($self, $file, @data) = @_; return $self->dumper->dump_file($file, @data); } # legagy interface sub Load { my ($yaml) = @_; YAML::PP->new->load_string($yaml); } sub LoadFile { my ($file) = @_; YAML::PP->new->load_file($file); } sub Dump { my (@data) = @_; YAML::PP->new->dump_string(@data); } sub DumpFile { my ($file, @data) = @_; YAML::PP->new->dump_file($file, @data); } sub preserved_scalar { my ($self, $value, %args) = @_; my $scalar = YAML::PP::Preserve::Scalar->new( value => $value, %args, ); return $scalar; } sub preserved_mapping { my ($self, $hash, %args) = @_; my $data = {}; tie %$data, 'YAML::PP::Preserve::Hash'; %$data = %$hash; my $t = tied %$data; $t->{style} = $args{style}; $t->{alias} = $args{alias}; return $data; } sub preserved_sequence { my ($self, $array, %args) = @_; my $data = []; tie @$data, 'YAML::PP::Preserve::Array'; push @$data, @$array; my $t = tied @$data; $t->{style} = $args{style}; $t->{alias} = $args{alias}; return $data; } package YAML::PP::Preserve::Hash; # experimental use Tie::Hash; use base qw/ Tie::StdHash /; use Scalar::Util qw/ reftype blessed /; sub TIEHASH { my ($class, %args) = @_; my $self = bless { keys => [keys %args], data => { %args }, }, $class; } sub STORE { my ($self, $key, $val) = @_; my $keys = $self->{keys}; unless (exists $self->{data}->{ $key }) { push @$keys, $key; } if (ref $val and not blessed($val)) { if (reftype($val) eq 'HASH' and not tied %$val) { tie %$val, 'YAML::PP::Preserve::Hash', %$val; } elsif (reftype($val) eq 'ARRAY' and not tied @$val) { tie @$val, 'YAML::PP::Preserve::Array', @$val; } } $self->{data}->{ $key } = $val; } sub FIRSTKEY { my ($self) = @_; return $self->{keys}->[0]; } sub NEXTKEY { my ($self, $last) = @_; my $keys = $self->{keys}; for my $i (0 .. $#$keys) { if ("$keys->[ $i ]" eq "$last") { return $keys->[ $i + 1 ]; } } return; } sub FETCH { my ($self, $key) = @_; my $val = $self->{data}->{ $key }; } sub DELETE { my ($self, $key) = @_; @{ $self->{keys} } = grep { "$_" ne "$key" } @{ $self->{keys} }; delete $self->{data}->{ $key }; } sub EXISTS { my ($self, $key) = @_; return exists $self->{data}->{ $key }; } sub CLEAR { my ($self) = @_; $self->{keys} = []; $self->{data} = {}; } sub SCALAR { my ($self) = @_; return scalar %{ $self->{data} }; } package YAML::PP::Preserve::Array; # experimental use Tie::Array; use base qw/ Tie::StdArray /; use Scalar::Util qw/ reftype blessed /; sub TIEARRAY { my ($class, @items) = @_; my $self = bless { data => [@items], }, $class; return $self; } sub FETCH { my ($self, $i) = @_; return $self->{data}->[ $i ]; } sub FETCHSIZE { my ($self) = @_; return $#{ $self->{data} } + 1; } sub _preserve { my ($val) = @_; if (ref $val and not blessed($val)) { if (reftype($val) eq 'HASH' and not tied %$val) { tie %$val, 'YAML::PP::Preserve::Hash', %$val; } elsif (reftype($val) eq 'ARRAY' and not tied @$val) { tie @$val, 'YAML::PP::Preserve::Array', @$val; } } return $val; } sub STORE { my ($self, $i, $val) = @_; _preserve($val); $self->{data}->[ $i ] = $val; } sub PUSH { my ($self, @args) = @_; push @{ $self->{data} }, map { _preserve $_ } @args; } sub STORESIZE { my ($self, $i) = @_; $#{ $self->{data} } = $i - 1; } sub DELETE { my ($self, $i) = @_; delete $self->{data}->[ $i ]; } sub EXISTS { my ($self, $i) = @_; return exists $self->{data}->[ $i ]; } sub CLEAR { my ($self) = @_; $self->{data} = []; } sub SHIFT { my ($self) = @_; shift @{ $self->{data} }; } sub UNSHIFT { my ($self, @args) = @_; unshift @{ $self->{data} }, map { _preserve $_ } @args; } sub SPLICE { my ($self, $offset, $length, @args) = @_; splice @{ $self->{data} }, $offset, $length, map { _preserve $_ } @args; } sub EXTEND {} package YAML::PP::Preserve::Scalar; use overload fallback => 1, '+' => \&value, '""' => \&value, 'bool' => \&value, ; sub new { my ($class, %args) = @_; my $self = { %args, }; bless $self, $class; } sub value { $_[0]->{value} } sub tag { $_[0]->{tag} } sub style { $_[0]->{style} || 0 } sub alias { $_[0]->{alias} } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP - YAML 1.2 processor =head1 SYNOPSIS WARNING: Most of the inner API is not stable yet. Here are a few examples of the basic load and dump methods: use YAML::PP; my $ypp = YAML::PP->new; my $yaml = <<'EOM'; --- # Document one is a mapping name: Tina age: 29 favourite language: Perl --- # Document two is a sequence - plain string - 'in single quotes' - "in double quotes we have escapes! like \t and \n" - | # a literal block scalar line1 line2 - > # a folded block scalar this is all one single line because the linebreaks will be folded EOM my @documents = $ypp->load_string($yaml); my @documents = $ypp->load_file($filename); my $yaml = $ypp->dump_string($data1, $data2); $ypp->dump_file($filename, $data1, $data2); # Enable perl data types and objects my $ypp = YAML::PP->new(schema => [qw/ + Perl /]); my $yaml = $yp->dump_string($data_with_perl_objects); # Legacy interface use YAML::PP qw/ Load Dump LoadFile DumpFile /; my @documents = Load($yaml); my @documents = LoadFile($filename); my @documents = LoadFile($filehandle); my $yaml = = Dump(@documents); DumpFile($filename, @documents); DumpFile($filenhandle @documents); Some utility scripts, mostly useful for debugging: # Load YAML into a data structure and dump with Data::Dumper yamlpp-load < file.yaml # Load and Dump yamlpp-load-dump < file.yaml # Print the events from the parser in yaml-test-suite format yamlpp-events < file.yaml # Parse and emit events directly without loading yamlpp-parse-emit < file.yaml # Create ANSI colored YAML. Can also be useful for invalid YAML, showing # you the exact location of the error yamlpp-highlight < file.yaml =head1 DESCRIPTION YAML::PP is a modular YAML processor. It aims to support C and C. See L. Some (rare) syntax elements are not yet supported and documented below. YAML is a serialization language. The YAML input is called "YAML Stream". A stream consists of one or more "Documents", separated by a line with a document start marker C<--->. A document optionally ends with the document end marker C<...>. This allows one to process continuous streams additionally to a fixed input file or string. The YAML::PP frontend will currently load all documents, and return only the first if called with scalar context. The YAML backend is implemented in a modular way that allows one to add custom handling of YAML tags, perl objects and data types. The inner API is not yet stable. Suggestions welcome. You can check out all current parse and load results from the yaml-test-suite here: L =head1 METHODS =head2 new my $ypp = YAML::PP->new; # use YAML 1.2 Failsafe Schema my $ypp = YAML::PP->new( schema => ['Failsafe'] ); # use YAML 1.2 JSON Schema my $ypp = YAML::PP->new( schema => ['JSON'] ); # use YAML 1.2 Core Schema my $ypp = YAML::PP->new( schema => ['Core'] ); # Die when detecting cyclic references my $ypp = YAML::PP->new( cyclic_refs => 'fatal' ); my $ypp = YAML::PP->new( boolean => 'perl', schema => ['Core'], cyclic_refs => 'fatal', indent => 4, header => 1, footer => 0, version_directive => 0, ); Options: =over =item boolean Values: C (currently default), C, C, C This option is for loading and dumping. In case of perl 5.36 and later, builtin booleans should work out of the box (since YAML::PP >= 0.38.0). print YAML::PP->new->dump_string([ builtin::true, !1 ]); # --- # - true # - false For earlier perl versions, you can use "pseudo" booleans like documented in the following examples. # load/dump booleans via boolean.pm my $ypp = YAML::PP->new( boolean => 'boolean' ); # load/dump booleans via JSON::PP::true/false my $ypp = YAML::PP->new( boolean => 'JSON::PP' ); You can also specify more than one class, comma separated. This is important for dumping. boolean => 'JSON::PP,boolean' Booleans will be loaded as JSON::PP::Booleans, but when dumping, also 'boolean' objects will be recognized boolean => 'JSON::PP,*' Booleans will be loaded as JSON::PP::Booleans, but when dumping, all currently supported boolean classes will be recognized boolean => '*' Booleans will be loaded as perl booleans, but when dumping, all currently supported boolean classes will be recognized boolean => '' Booleans will be loaded as perl booleans, but when dumping, nothing will be recognized as booleans. This option is for backwards compatibility for perl versions < 5.36, if you rely on [!!1, !1] being dumped as [1, '']. The option C was introduced when experimental boolean support was added to perl 5.36. Since it will not be experimental anymore in perl 5.40 \o/ the option is deprecated and the same as C. =item schema Default: C<['Core']> This option is for loading and dumping. Array reference. Here you can define what schema to use. Supported standard Schemas are: C, C, C, C. To get an overview how the different Schemas behave, see L Additionally you can add further schemas, for example C. =item cyclic_refs Default: C (since 0.037) Before the default was C, but this can lead to memory leaks when loading on untrusted data, so it was changed to C by default. This option is for loading only. Defines what to do when a cyclic reference is detected when loading. # fatal - die # warn - Just warn about them and replace with undef # ignore - replace with undef # allow - Default =item duplicate_keys Default: 0 Since version 0.027 This option is for loading. The YAML Spec says duplicate mapping keys should be forbidden. When set to true, duplicate keys in mappings are allowed (and will overwrite the previous key). When set to false, duplicate keys will result in an error when loading. This is especially useful when you have a longer mapping and don't see the duplicate key in your editor: --- a: 1 b: 2 # ............. a: 23 # error =item indent Default: 2 This option is for dumping. Use that many spaces for indenting =item width Since version 0.025 Default: 80 This option is for dumping. Maximum columns when dumping. This is only respected when dumping flow collections right now. in the future it will be used also for wrapping long strings. =item header Default: 1 This option is for dumping. Print document header C<---> =item footer Default: 0 This option is for dumping. Print document footer C<...> =item yaml_version Since version 0.020 This option is for loading and dumping. Default: C<1.2> Note that in this case, a directive C<%YAML 1.1> will basically be ignored and everything loaded with the C<1.2 Core> Schema. If you want to support both YAML 1.1 and 1.2, you have to specify that, and the schema (C or C) will be chosen automatically. my $yp = YAML::PP->new( yaml_version => ['1.2', '1.1'], ); This is the same as my $yp = YAML::PP->new( schema => ['+'], yaml_version => ['1.2', '1.1'], ); because the C<+> stands for the default schema per version. When loading, and there is no C<%YAML> directive, C<1.2> will be considered as default, and the C schema will be used. If there is a C<%YAML 1.1> directive, the C schema will be used. Of course, you can also make C<1.1> the default: my $yp = YAML::PP->new( yaml_version => ['1.1', '1.2'], ); You can also specify C<1.1> only: my $yp = YAML::PP->new( yaml_version => ['1.1'], ); In this case also documents with C<%YAML 1.2> will be loaded with the C schema. =item version_directive Since version 0.020 This option is for dumping. Default: 0 Print Version Directive C<%YAML 1.2> (or C<%YAML 1.1>) on top of each YAML document. It will use the first version specified in the C option. =item preserve Since version 0.021 Default: false This option is for loading and dumping. Preserving scalar styles is still experimental. use YAML::PP::Common qw/ :PRESERVE /; # Preserve the order of hash keys my $yp = YAML::PP->new( preserve => PRESERVE_ORDER ); # Preserve the quoting style of scalars my $yp = YAML::PP->new( preserve => PRESERVE_SCALAR_STYLE ); # Preserve block/flow style (since 0.024) my $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE ); # Preserve alias names (since 0.027) my $yp = YAML::PP->new( preserve => PRESERVE_ALIAS ); # Combine, e.g. preserve order and scalar style my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE ); Do NOT rely on the internal implementation of it. If you load the following input: --- z: 1 a: 2 --- - plain - 'single' - "double" - | literal - > folded --- block mapping: &alias flow sequence: [a, b] same mapping: *alias flow mapping: {a: b} with this code: my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS ); my ($hash, $styles, $flow) = $yp->load_file($file); $yp->dump_file($hash, $styles, $flow); Then dumping it will return the same output. Note that YAML allows repeated definition of anchors. They cannot be preserved with YAML::PP right now. Example: --- - &seq [a] - *seq - &seq [b] - *seq Because the data could be shuffled before dumping again, the anchor definition could be broken. In this case repeated anchor names will be discarded when loading and dumped with numeric anchors like usual. Implementation: When loading, hashes will be tied to an internal class (C) that keeps the key order. Scalars will be returned as objects of an internal class (C) with overloading. If you assign to such a scalar, the object will be replaced by a simple scalar. # assignment, style gets lost $styles->[1] .= ' append'; You can also pass C<1> as a value. In this case all preserving options will be enabled, also if there are new options added in the future. There are also methods to create preserved nodes from scratch. See the C L<"METHODS"> below. =back =head2 load_string my $doc = $ypp->load_string("foo: bar"); my @docs = $ypp->load_string("foo: bar\n---\n- a"); Input should be Unicode characters. So if you read from a file, you should decode it, for example with C. Note that in scalar context, C and C return the first document (like L), while L and L return the last. =head2 load_file my $doc = $ypp->load_file("file.yaml"); my @docs = $ypp->load_file("file.yaml"); Strings will be loaded as unicode characters. =head2 dump_string my $yaml = $ypp->dump_string($doc); my $yaml = $ypp->dump_string($doc1, $doc2); my $yaml = $ypp->dump_string(@docs); Input strings should be Unicode characters. Output will return Unicode characters. So if you want to write that to a file (or pass to YAML::XS, for example), you typically encode it via C. =head2 dump_file $ypp->dump_file("file.yaml", $doc); $ypp->dump_file("file.yaml", $doc1, $doc2); $ypp->dump_file("file.yaml", @docs); Input data should be Unicode characters. =head2 dump This will dump to a predefined writer. By default it will just use the L and output a string. my $writer = MyWriter->new(\my $output); my $yp = YAML::PP->new( writer => $writer, ); $yp->dump($data); =head2 preserved_scalar Since version 0.024 Experimental. Please report bugs or let me know this is useful and works. You can define a certain scalar style when dumping data. Figuring out the best style is a hard task and practically impossible to get it right for all cases. It's also a matter of taste. use YAML::PP::Common qw/ PRESERVE_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE /; my $yp = YAML::PP->new( preserve => PRESERVE_SCALAR_STYLE, ); # a single linebreak would normally be dumped with double quotes: "\n" my $scalar = $yp->preserved_scalar("\n", style => YAML_LITERAL_SCALAR_STYLE ); my $data = { literal => $scalar }; my $dump = $yp->dump_string($data); # output --- literal: |+ ... =head2 preserved_mapping, preserved_sequence Since version 0.024 Experimental. Please report bugs or let me know this is useful and works. With this you can define which nodes are dumped with the more compact flow style instead of block style. If you add C to the C option, it will also keep the order of the keys in a hash. use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_FLOW_STYLE YAML_FLOW_MAPPING_STYLE YAML_FLOW_SEQUENCE_STYLE /; my $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE | PRESERVE_ORDER ); my $hash = $yp->preserved_mapping({}, style => YAML_FLOW_MAPPING_STYLE); # Add values after initialization to preserve order %$hash = (z => 1, a => 2, y => 3, b => 4); my $array = $yp->preserved_sequence([23, 24], style => YAML_FLOW_SEQUENCE_STYLE); my $data = $yp->preserved_mapping({}); %$data = ( map => $hash, seq => $array ); my $dump = $yp->dump_string($data); # output --- map: {z: 1, a: 2, y: 3, b: 4} seq: [23, 24] =head2 loader Returns or sets the loader object, by default L =head2 dumper Returns or sets the dumper object, by default L =head2 schema Returns or sets the schema object =head2 default_schema Creates and returns the default schema =head1 FUNCTIONS The functions C, C, C and C are provided as a drop-in replacement for other existing YAML processors. No function is exported by default. Note that in scalar context, C and C return the first document (like L), while L and L return the last. =over =item Load use YAML::PP qw/ Load /; my $doc = Load($yaml); my @docs = Load($yaml); Works like C. =item LoadFile use YAML::PP qw/ LoadFile /; my $doc = LoadFile($file); my @docs = LoadFile($file); my @docs = LoadFile($filehandle); Works like C. =item Dump use YAML::PP qw/ Dump /; my $yaml = Dump($doc); my $yaml = Dump(@docs); Works like C. =item DumpFile use YAML::PP qw/ DumpFile /; DumpFile($file, $doc); DumpFile($file, @docs); DumpFile($filehandle, @docs); Works like C. =back =head1 PLUGINS You can alter the behaviour of YAML::PP by using the following schema classes: =over =item L One of the three YAML 1.2 official schemas =item L One of the three YAML 1.2 official schemas. =item L One of the three YAML 1.2 official schemas. Default =item L Schema implementing the most common YAML 1.1 types =item L Serializing Perl objects and types =item L Serializing binary data =item L Deprecated. See option C =item L YAML 1.1 merge keys for mappings =item L Include other YAML files via C tags =back To make the parsing process faster, you can plugin the libyaml parser with L. =head1 IMPLEMENTATION The process of loading and dumping is split into the following steps: Load: YAML Stream Tokens Event List Data Structure ---------> ---------> ---------> lex parse construct Dump: Data Structure Event List YAML Stream ---------> ---------> represent emit You can dump basic perl types like hashes, arrays, scalars (strings, numbers). For dumping blessed objects and things like coderefs have a look at L/L. =over =item L The Lexer is reading the YAML stream into tokens. This makes it possible to generate syntax highlighted YAML output. Note that the API to retrieve the tokens will change. =item L The Parser retrieves the tokens from the Lexer. The main YAML content is then parsed with the Grammar. =item L =item L The Constructor creates a data structure from the Parser events. =item L The Loader combines the constructor and parser. =item L The Dumper will delegate to the Representer =item L The Representer will create Emitter events from the given data structure. =item L The Emitter creates a YAML stream. =back =head2 YAML::PP::Parser Still TODO: =over 4 =item Implicit collection keys --- [ a, b, c ]: value =item Implicit mapping in flow style sequences This is supported since 0.029 (except some not relevant cases): --- [ a, b, c: d ] # equals [ a, b, { c: d } ] =item Plain mapping keys ending with colons --- key ends with two colons::: value This was implemented in 0.037. =item Supported Characters If you have valid YAML that's not parsed, or the other way round, please create an issue. =item Line and Column Numbers You will see line and column numbers in the error message. The column numbers might still be wrong in some cases. =item Error Messages The error messages need to be improved. =item Unicode Surrogate Pairs Currently loaded as single characters without validating =item Possibly more =back =head2 YAML::PP::Constructor The Constructor now supports all three YAML 1.2 Schemas, Failsafe, JSON and Core. Additionally you can choose the schema for YAML 1.1 as C. Too see what strings are resolved as booleans, numbers, null etc. look at L. You can choose the Schema like this: my $ypp = YAML::PP->new(schema => ['JSON']); # default is 'Core' The Tags C and C are still ignored for now. It supports: =over 4 =item Handling of Anchors/Aliases Like in modules like L, the Constructor will use references for mappings and sequences, but obviously not for scalars. L uses real aliases, which allows also aliasing scalars. I might add an option for that since aliasing is now available in pure perl. =item Boolean Handling You can choose between C<'perl'> (1/'', currently default), C<'JSON::PP'> and C<'boolean'>.pm for handling boolean types. That allows you to dump the data structure with one of the JSON modules without losing information about booleans. =item Numbers Numbers are created as real numbers instead of strings, so that they are dumped correctly by modules like L or L, for example. =item Complex Keys Mapping Keys in YAML can be more than just scalars. Of course, you can't load that into a native perl structure. The Constructor will stringify those keys with L instead of just returning something like C. Example: use YAML::PP; use JSON::PP; my $ypp = YAML::PP->new; my $coder = JSON::PP->new->ascii->pretty->allow_nonref->canonical; my $yaml = <<'EOM'; complex: ? ? a: 1 c: 2 : 23 : 42 EOM my $data = $yppl->load_string($yaml); say $coder->encode($data); __END__ { "complex" : { "{'{a => 1,c => 2}' => 23}" : 42 } } =back TODO: =over 4 =item Parse Tree I would like to generate a complete parse tree, that allows you to manipulate the data structure and also dump it, including all whitespaces and comments. The spec says that this is throwaway content, but I read that many people wish to be able to keep the comments. =back =head2 YAML::PP::Dumper, YAML::PP::Emitter The Dumper should be able to dump strings correctly, adding quotes whenever a plain scalar would look like a special string, like C, or when it contains or starts with characters that are not allowed. Most strings will be dumped as plain scalars without quotes. If they contain special characters or have a special meaning, they will be dumped with single quotes. If they contain control characters, including <"\n">, they will be dumped with double quotes. It will recognize JSON::PP::Boolean and boolean.pm objects and dump them correctly. Numbers which also have a C flag will be recognized as numbers and not as strings: my $int = 23; say "int: $int"; # $int will now also have a PV flag That means that if you accidentally use a string in numeric context, it will also be recognized as a number: my $string = "23"; my $something = $string + 0; print $yp->dump_string($string); # will be emitted as an integer without quotes! The layout is like libyaml output: key: - a - b - c --- - key1: 1 key2: 2 key3: 3 --- - - a1 - a2 - - b1 - b2 =head1 FAQ - Frequently Asked Questions =over =item Are C<<<> merge keys supported? Yes, this can be enabled optionally, see L =item Is there a linter / formatter for YAML There is the widely used L<"yamllint"|https://yamllint.readthedocs.io/>, based on python's PyYAML. It is very configurable and will report errors or warnings. It cannot format. Now there is also L, which will format the given file according to your configuration. So far only a few configuration options exist, but they can already be quite helpful. =back =head1 Which YAML module should I use? There are many YAML modules on CPAN. For historical reasons some of them aren't handling YAML correctly. Most of them are not compatible with the YAML spec and with each other, meaning they can interpret the same YAML differently. The behaviours we are discussing here can be divided into parsing issues (syntax) and loading/constructing issues (for example type resolving which decides what is a number, boolean or null). See also L (parsing) and L (loading). =over =item L<"YAML.pm"|YAML> It was written even before the YAML 1.0 spec was finished and by that enabled perl users to process YAML very early. It might work for you if you have simple data, but it's missing quite some features and can also produce YAML that doesn't roundtrip. Nowadays it might be a good idea to switch. =item L A libyaml binding that is robust and widely used. However, there are two things to consider. 1. (syntax) libyaml diverged from the spec in several aspects. They are rare though. 2. The type resolving does not adhere to YAML 1.1 or YAML 1.2, meaning it is incompatible with other YAML libraries in perl or other languages. =item L It implements both a tiny subset of YAML, but also a superset. Meaning it will happily accept some YAML documents that are not officially valid. Type resolving is also not implemented according to the spec. =item L A binding to libsyck. It is even less compatible to YAML than libyaml. Also type resolving is not implemented according to the spec. =item L Regarding YAML syntax, it is the second most YAML 1.2 compatible perl module. The cases it cannot (yet) parse are not relevant in perl programming, e.g. hash keys that are not strings. Regarding type resolving, it is compatible with the YAML 1.2 Core schema, so it should be possible to exchange data as YAML with other libraries in other languages. One downside is that it is the slowest perl YAML module. =item L This is a parser generated by the YAML grammar, and it's passing all official tests. A L frontend exists that you can use just like YAML::PP. It is quite slow (although it might be ok for small files depending on the use case). The error messages it creates on invalid YAML are not helpful currently. =item L This combines the L binding for parsing with the YAML::PP frontend for loading and type resolving. It is faster than YAML::PP but slower than YAML::XS. The divergence from the YAML spec regarding syntax is usually not a problem, and at the same time you have the advantage of being compatible to the YAML 1.2 Core Schema. =back =head1 WHY Why did I start to write a new YAML module? All the available parsers and loaders for Perl are behaving differently, and more important, aren't conforming to the spec. L is doing pretty well, but C only handles YAML 1.1 and diverges a bit from the spec. The pure perl loaders lack support for a number of features. I was going over L.pm issues end of 2016, integrating old patches from rt.cpan.org and creating some pull requests myself. I realized that it would be difficult to patch YAML.pm to parse YAML 1.1 or even 1.2, and it would also break existing usages relying on the current behaviour. In 2016 Ingy döt Net initiated two really cool projects: =over 4 =item L<"YAML TEST SUITE"> =item L<"YAML EDITOR"> =back These projects are a big help for any developer. So I got the idea to write my own parser and started on New Year's Day 2017. Without the test suite and the editor I would have never started this. I also started another YAML Test project which allows one to get a quick overview of which frameworks support which YAML features: =over 4 =item L<"YAML TEST MATRIX"> =back =head2 YAML TEST SUITE L It contains almost 400 test cases and expected parsing events and more. There will be more tests coming. This test suite allows you to write parsers without turning the examples from the Specification into tests yourself. Also the examples aren't completely covering all cases - the test suite aims to do that. Thanks also to Felix Krause, who is writing a YAML parser in Nim. He turned all the spec examples into test cases. =head2 YAML EDITOR This is a tool to play around with several YAML parsers and loaders in vim. L The project contains the code to build the frameworks (16 as of this writing) and put it into one big Docker image. It also contains the yaml-editor itself, which will start a vim in the docker container. It uses a lot of funky vimscript that makes playing with it easy and useful. You can choose which frameworks you want to test and see the output in a grid of vim windows. Especially when writing a parser it is extremely helpful to have all the test cases and be able to play around with your own examples to see how they are handled. =head2 YAML TEST MATRIX I was curious to see how the different frameworks handle the test cases, so, using the test suite and the docker image, I wrote some code that runs the tests, manipulates the output to compare it with the expected output, and created a matrix view. L You can find the latest build at L =head1 CONTRIBUTORS =over =item Ingy döt Net Ingy is one of the creators of YAML. In 2016 he started the YAML Test Suite and the YAML Editor. He also made useful suggestions on the class hierarchy of YAML::PP. =item Felix "flyx" Krause Felix answered countless questions about the YAML Specification. =back =head1 SEE ALSO =over =item L =item L =item L =item L =item L =item L =item L =item L =back =head1 SPONSORS The Perl Foundation L sponsored this project (and the YAML Test Suite) with a grant of 2500 USD in 2017-2018. =head1 COPYRIGHT AND LICENSE Copyright 2017-2022 by Tina Müller This library is free software and may be distributed under the same terms as perl itself. =cut YAML-PP-v0.38.0/LICENSE0000644000175000017500000004365014556031647012547 0ustar tinatinaThis software is copyright (c) 2024 by Tina Müller. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2024 by Tina Müller. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2024 by Tina Müller. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End YAML-PP-v0.38.0/Makefile.dev0000644000175000017500000000172714556031647013756 0ustar tinatinatest-suite: git branch test-suite --track origin/test-suite git worktree add test-suite test-suite cover: HARNESS_PERL_SWITCHES="-MDevel::Cover=+ignore,local,+ignore,^t/,+ignore,^xt/" prove -lr t cover test-all: TEST_ALL=1 prove -lr t test-all-verbose: TEST_ALL=1 prove -lrv t test-valid-all: TEST_ALL=1 prove -lrv t/10.parse-valid.t test-invalid-all: TEST_ALL=1 prove -lrv t/11.parse-invalid.t test: prove -lr t testp: prove -lr -j9 t testv: prove -lrv t # YAML_PP_TRACE=1 YAML_TEST_DIR=M9B4 prove -lrv t gh-pages: git worktree add gh-pages gh-pages gh-pages-status: gh-pages cd gh-pages && git status gh-pages-diff: gh-pages cd gh-pages && git diff gh-pages-commit: gh-pages cd gh-pages && git add . && git commit -m "Generate HTML" gh-pages-push: gh-pages cd gh-pages && git push test-suite-html: gh-pages perl etc/test-suite-html.pl > gh-pages/test-suite.html grammar: perl etc/generate-grammar.pl gen_examples: perl etc/generate-examples.pl YAML-PP-v0.38.0/CONTRIBUTING.md0000644000175000017500000000263614556031647013772 0ustar tinatina# How to contribute This module uses Dist::Zilla for creating releases, but you should be able to develop and test it without Dist::Zilla. ## Commits I try to follow these guidelines: * Git commits * Short commit message headline (if possible, up to 60 characters) * Blank line before message body * Message should be like: "Add foo ...", "Fix ..." * If you need to do formatting changes like indentation, put them into their own commit * Git workflow * Rebase every branch before merging it with --no-ff. Rebasing your pull request to current master helps me merging it. * No merging master into branches - try to rebase always * User branches might be heavily rebased/reordered/squashed because I like a clean history ## Code * No Tabs please * No trailing whitespace please * 4 spaces indentation * Look at existing code for formatting ;-) ## Testing prove -lr t To include the tests from the yaml-test-suite, checkout the test-suite branch like this: git branch test-suite --track origin/test-suite git worktree add test-suite test-suite There is also a Makefile.dev and a utility script dev.sh source dev.sh dmake testp # parallel testing You can check test coverage with make -f Makefile.dev cover # or dmake cover ## Contact Email: tinita at cpan.org IRC: tinita on freenode and irc.perl.org Chances are good that contacting me on IRC is the fastest way. YAML-PP-v0.38.0/test-suite/0000755000175000017500000000000014556031647013640 5ustar tinatinaYAML-PP-v0.38.0/test-suite/README.md0000644000175000017500000000001614556031647015114 0ustar tinatina## Test Suite YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/0000755000175000017500000000000014556031650017607 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU5Z/0000755000175000017500000000000014556031650020355 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU5Z/===0000644000175000017500000000006514556031650020647 0ustar tinatinaComment without whitespace after doublequoted scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU5Z/test.event0000644000175000017500000000004514556031650022376 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL "value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU5Z/error0000644000175000017500000000000014556031650021417 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU5Z/in.yaml0000644000175000017500000000003614556031650021646 0ustar tinatinakey: "value"# invalid comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4GJ/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4GJ/===0000644000175000017500000000005214556031650020604 0ustar tinatinaInvalid text after block scalar indicator YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4GJ/test.event0000644000175000017500000000004014556031650022332 0ustar tinatina+STR +DOC --- +MAP =VAL :folded YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4GJ/error0000644000175000017500000000000014556031650021360 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4GJ/in.yaml0000644000175000017500000000004714556031650021611 0ustar tinatina--- folded: > first line second line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2EBW/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2EBW/in.json0000644000175000017500000000024714556031650021612 0ustar tinatina{ "a!\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~": "safe", "?foo": "safe question mark", ":foo": "safe colon", "-foo": "safe dash", "this is#not": "a comment" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2EBW/===0000644000175000017500000000003314556031647020601 0ustar tinatinaAllowed characters in keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2EBW/test.event0000644000175000017500000000032514556031650022330 0ustar tinatina+STR +DOC +MAP =VAL :a!"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~ =VAL :safe =VAL :?foo =VAL :safe question mark =VAL ::foo =VAL :safe colon =VAL :-foo =VAL :safe dash =VAL :this is#not =VAL :a comment -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2EBW/in.yaml0000644000175000017500000000017714556031650021605 0ustar tinatinaa!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~: safe ?foo: safe question mark :foo: safe colon -foo: safe dash this is#not: a comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2EBW/out.yaml0000644000175000017500000000017714556031650022006 0ustar tinatinaa!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~: safe ?foo: safe question mark :foo: safe colon -foo: safe dash this is#not: a comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S98Z/0000755000175000017500000000000014556031650020324 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S98Z/===0000644000175000017500000000006614556031650020617 0ustar tinatinaBlock scalar with more spaces than first content line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S98Z/test.event0000644000175000017500000000005014556031650022341 0ustar tinatina+STR +DOC +MAP =VAL :empty block scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S98Z/error0000644000175000017500000000000014556031650021366 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S98Z/in.yaml0000644000175000017500000000005214556031650021613 0ustar tinatinaempty block scalar: > # comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/in.json0000644000175000017500000000000614556031650021617 0ustar tinatina"foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/===0000644000175000017500000000005514556031650020613 0ustar tinatinaSpec Example 6.13. Reserved Directives [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/test.event0000644000175000017500000000004214556031650022340 0ustar tinatina+STR +DOC --- =VAL "foo -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/emit.yaml0000644000175000017500000000001214556031650022135 0ustar tinatina--- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/in.yaml0000644000175000017500000000011414556031650021610 0ustar tinatina%FOO bar baz # Should be ignored # with a warning. --- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2LFX/out.yaml0000644000175000017500000000001214556031650022006 0ustar tinatina--- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CN3R/0000755000175000017500000000000014556031650020314 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CN3R/in.json0000644000175000017500000000013314556031650021612 0ustar tinatina[ { "a": "b" }, { "c": "d" }, { "e": "f" }, { "g": "h" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CN3R/===0000644000175000017500000000005514556031650020605 0ustar tinatinaVarious location of anchors in flow sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CN3R/test.event0000644000175000017500000000024714556031650022341 0ustar tinatina+STR +DOC +SEQ [] &flowseq +MAP {} =VAL :a =VAL :b -MAP +MAP {} =VAL &c :c =VAL :d -MAP +MAP {} =VAL &e :e =VAL :f -MAP +MAP {} &g =VAL :g =VAL :h -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CN3R/in.yaml0000644000175000017500000000007114556031650021604 0ustar tinatina&flowseq [ a: b, &c c: d, { &e e: f }, &g { g: h } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CN3R/out.yaml0000644000175000017500000000006014556031650022003 0ustar tinatina&flowseq - a: b - &c c: d - &e e: f - &g g: h YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BUB/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BUB/in.json0000644000175000017500000000015314556031650021606 0ustar tinatina{ "hr": [ "Mark McGwire", "Sammy Sosa" ], "rbi": [ "Sammy Sosa", "Ken Griffey" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BUB/===0000644000175000017500000000011414556031650020573 0ustar tinatinaSpec Example 2.10. Node for “Sammy Sosa” appears twice in this document YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BUB/test.event0000644000175000017500000000021414556031650022325 0ustar tinatina+STR +DOC --- +MAP =VAL :hr +SEQ =VAL :Mark McGwire =VAL &SS :Sammy Sosa -SEQ =VAL :rbi +SEQ =ALI *SS =VAL :Ken Griffey -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BUB/in.yaml0000644000175000017500000000017714556031650021605 0ustar tinatina--- hr: - Mark McGwire # Following node labeled SS - &SS Sammy Sosa rbi: - *SS # Subsequent occurrence - Ken Griffey YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BUB/out.yaml0000644000175000017500000000010114556031650021771 0ustar tinatina--- hr: - Mark McGwire - &SS Sammy Sosa rbi: - *SS - Ken Griffey YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZH7C/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZH7C/in.json0000644000175000017500000000003314556031650021617 0ustar tinatina{ "a": "b", "c": "d" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZH7C/===0000644000175000017500000000002314556031650020606 0ustar tinatinaAnchors in Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZH7C/test.event0000644000175000017500000000010414556031650022337 0ustar tinatina+STR +DOC +MAP =VAL &a :a =VAL :b =VAL :c =VAL &d :d -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZH7C/in.yaml0000644000175000017500000000002014556031650021604 0ustar tinatina&a a: b c: &d d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FP8R/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FP8R/in.json0000644000175000017500000000002614556031650021625 0ustar tinatina"line1 line2 line3\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FP8R/===0000644000175000017500000000003314556031650020613 0ustar tinatinaZero indented block scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FP8R/test.event0000644000175000017500000000006214556031650022346 0ustar tinatina+STR +DOC --- =VAL >line1 line2 line3\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FP8R/in.yaml0000644000175000017500000000003014556031650021611 0ustar tinatina--- > line1 line2 line3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FP8R/out.yaml0000644000175000017500000000003214556031650022014 0ustar tinatina--- > line1 line2 line3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A984/0000755000175000017500000000000014556031650020234 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A984/in.json0000644000175000017500000000003714556031650021535 0ustar tinatina{ "a": "b c", "d": "e f" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A984/===0000644000175000017500000000003414556031650020522 0ustar tinatinaMultiline Scalar in Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A984/test.event0000644000175000017500000000010214556031650022247 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL :b c =VAL :d =VAL :e f -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A984/in.yaml0000644000175000017500000000002214556031650021520 0ustar tinatinaa: b c d: e f YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A984/out.yaml0000644000175000017500000000001614556031650021724 0ustar tinatinaa: b c d: e f YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CML9/0000755000175000017500000000000014556031650020313 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CML9/===0000644000175000017500000000002614556031650020602 0ustar tinatinaMissing comma in flow YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CML9/test.event0000644000175000017500000000005514556031650022335 0ustar tinatina+STR +DOC +MAP =VAL :key +SEQ [] =VAL :word1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CML9/error0000644000175000017500000000000014556031650021355 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CML9/in.yaml0000644000175000017500000000003614556031650021604 0ustar tinatinakey: [ word1 # xxx word2 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8UDB/0000755000175000017500000000000014556031650020311 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8UDB/in.json0000644000175000017500000000015514556031650021613 0ustar tinatina[ "double quoted", "single quoted", "plain text", [ "nested" ], { "single": "pair" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8UDB/===0000644000175000017500000000005114556031650020576 0ustar tinatinaSpec Example 7.14. Flow Sequence Entries YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8UDB/test.event0000644000175000017500000000023114556031650022327 0ustar tinatina+STR +DOC +SEQ [] =VAL "double quoted =VAL 'single quoted =VAL :plain text +SEQ [] =VAL :nested -SEQ +MAP {} =VAL :single =VAL :pair -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8UDB/in.yaml0000644000175000017500000000013114556031650021576 0ustar tinatina[ "double quoted", 'single quoted', plain text, [ nested ], single: pair, ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8UDB/out.yaml0000644000175000017500000000011314556031650021777 0ustar tinatina- "double quoted" - 'single quoted' - plain text - - nested - single: pair YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/0000755000175000017500000000000014556031650020255 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/in.json0000644000175000017500000000004314556031650021553 0ustar tinatina{ "?foo" : "bar", "bar" : 42 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/===0000644000175000017500000000004314556031650020543 0ustar tinatinaQuestion mark at start of flow key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/test.event0000644000175000017500000000011114556031650022270 0ustar tinatina+STR +DOC +MAP {} =VAL :?foo =VAL :bar =VAL :bar =VAL :42 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/emit.yaml0000644000175000017500000000002214556031650022071 0ustar tinatina?foo: bar bar: 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/in.yaml0000644000175000017500000000002714556031650021546 0ustar tinatina{ ?foo: bar, bar: 42 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/652Z/out.yaml0000644000175000017500000000002614556031650021746 0ustar tinatina--- ?foo: bar bar: 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S9E8/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S9E8/in.json0000644000175000017500000000014714556031650021602 0ustar tinatina{ "sequence": [ "one", "two" ], "mapping": { "sky": "blue", "sea": "green" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S9E8/===0000644000175000017500000000005514556031650020570 0ustar tinatinaSpec Example 5.3. Block Structure Indicators YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S9E8/test.event0000644000175000017500000000021614556031650022320 0ustar tinatina+STR +DOC +MAP =VAL :sequence +SEQ =VAL :one =VAL :two -SEQ =VAL :mapping +MAP =VAL :sky =VAL :blue =VAL :sea =VAL :green -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S9E8/in.yaml0000644000175000017500000000007614556031650021574 0ustar tinatinasequence: - one - two mapping: ? sky : blue sea : green YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S9E8/out.yaml0000644000175000017500000000007014556031650021767 0ustar tinatinasequence: - one - two mapping: sky: blue sea: green YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HWV9/0000755000175000017500000000000014556031650020344 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HWV9/in.json0000644000175000017500000000000014556031650021633 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HWV9/===0000644000175000017500000000002414556031650020631 0ustar tinatinaDocument-end marker YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HWV9/test.event0000644000175000017500000000001214556031650022357 0ustar tinatina+STR -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HWV9/in.yaml0000644000175000017500000000000414556031650021630 0ustar tinatina... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HWV9/out.yaml0000644000175000017500000000000014556031650022025 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B63P/0000755000175000017500000000000014556031650020261 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B63P/===0000644000175000017500000000003314556031650020546 0ustar tinatinaDirective without document YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B63P/test.event0000644000175000017500000000000514556031650022276 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B63P/error0000644000175000017500000000000014556031650021323 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B63P/in.yaml0000644000175000017500000000001614556031650021550 0ustar tinatina%YAML 1.2 ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6M2F/0000755000175000017500000000000014556031650020261 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6M2F/===0000644000175000017500000000004214556031650020546 0ustar tinatinaAliases in Explicit Block Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6M2F/test.event0000644000175000017500000000010314556031650022275 0ustar tinatina+STR +DOC +MAP =VAL &a :a =VAL &b :b =VAL : =ALI *a -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6M2F/in.yaml0000644000175000017500000000002314556031650021546 0ustar tinatina? &a a : &b b : *a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6M2F/out.yaml0000644000175000017500000000002014556031650021744 0ustar tinatina&a a: &b b : *a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CPZ3/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CPZ3/in.json0000644000175000017500000000003014556031650021620 0ustar tinatina{ "tab": "\tstring" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CPZ3/===0000644000175000017500000000005014556031650020612 0ustar tinatinaDoublequoted scalar starting with a tab YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CPZ3/test.event0000644000175000017500000000007314556031650022350 0ustar tinatina+STR +DOC --- +MAP =VAL :tab =VAL "\tstring -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CPZ3/in.yaml0000644000175000017500000000002414556031650021614 0ustar tinatina--- tab: "\tstring" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CPZ3/out.yaml0000644000175000017500000000002414556031650022015 0ustar tinatina--- tab: "\tstring" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9CWY/0000755000175000017500000000000014556031650020342 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9CWY/===0000644000175000017500000000004514556031650020632 0ustar tinatinaInvalid scalar at the end of mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9CWY/test.event0000644000175000017500000000007314556031650022364 0ustar tinatina+STR +DOC +MAP =VAL :key +SEQ =VAL :item1 =VAL :item2 -SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9CWY/error0000644000175000017500000000000014556031650021404 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9CWY/in.yaml0000644000175000017500000000003714556031650021634 0ustar tinatinakey: - item1 - item2 invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EB22/0000755000175000017500000000000014556031650020241 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EB22/===0000644000175000017500000000005514556031650020532 0ustar tinatinaMissing document-end marker before directive YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EB22/test.event0000644000175000017500000000004114556031650022256 0ustar tinatina+STR +DOC --- =VAL :scalar1 -DOC YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EB22/error0000644000175000017500000000000014556031650021303 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EB22/in.yaml0000644000175000017500000000005414556031650021532 0ustar tinatina--- scalar1 # comment %YAML 1.2 --- scalar2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5BVJ/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5BVJ/in.json0000644000175000017500000000007314556031650021616 0ustar tinatina{ "literal": "some\ntext\n", "folded": "some text\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5BVJ/===0000644000175000017500000000005214556031650020603 0ustar tinatinaSpec Example 5.7. Block Scalar Indicators YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5BVJ/test.event0000644000175000017500000000013614556031650022337 0ustar tinatina+STR +DOC +MAP =VAL :literal =VAL |some\ntext\n =VAL :folded =VAL >some text\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5BVJ/in.yaml0000644000175000017500000000006114556031650021604 0ustar tinatinaliteral: | some text folded: > some text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5BVJ/out.yaml0000644000175000017500000000005714556031650022012 0ustar tinatinaliteral: | some text folded: > some text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/0000755000175000017500000000000014556031650020274 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/00/0000755000175000017500000000000014556031650020513 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/00/in.json0000644000175000017500000000002714556031650022013 0ustar tinatina{ "foo" : "x\n \n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/00/===0000644000175000017500000000003014556031650020775 0ustar tinatinaTrailing line of spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/00/test.event0000644000175000017500000000006514556031650022536 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL |x\n \n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/00/emit.yaml0000644000175000017500000000001714556031650022333 0ustar tinatinafoo: | x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/00/in.yaml0000644000175000017500000000001714556031650022003 0ustar tinatinafoo: | x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/01/0000755000175000017500000000000014556031650020514 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/01/in.json0000644000175000017500000000002714556031650022014 0ustar tinatina{ "foo" : "x\n \n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/01/===0000644000175000017500000000003014556031650020776 0ustar tinatinaTrailing line of spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/01/test.event0000644000175000017500000000006514556031650022537 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL |x\n \n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/01/emit.yaml0000644000175000017500000000002214556031650022330 0ustar tinatina--- foo: "x\n \n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L24T/01/in.yaml0000644000175000017500000000001614556031650022003 0ustar tinatinafoo: | x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/62EZ/0000755000175000017500000000000014556031650020275 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/62EZ/===0000644000175000017500000000006714556031650020571 0ustar tinatinaInvalid block mapping key on same line as previous key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/62EZ/test.event0000644000175000017500000000007014556031650022314 0ustar tinatina+STR +DOC --- +MAP =VAL :x +MAP {} =VAL :y =VAL :z -MAP YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/62EZ/error0000644000175000017500000000000014556031650021337 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/62EZ/in.yaml0000644000175000017500000000003114556031650021561 0ustar tinatina--- x: { y: z }in: valid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LX3P/0000755000175000017500000000000014556031650020335 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LX3P/===0000644000175000017500000000004614556031650020626 0ustar tinatinaImplicit Flow Mapping Key on one line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LX3P/test.event0000644000175000017500000000010214556031650022350 0ustar tinatina+STR +DOC +MAP +SEQ [] =VAL :flow -SEQ =VAL :block -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LX3P/in.yaml0000644000175000017500000000001614556031650021624 0ustar tinatina[flow]: block YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LX3P/out.yaml0000644000175000017500000000002114556031650022021 0ustar tinatina? - flow : block YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/0000755000175000017500000000000014556031650020327 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/00/0000755000175000017500000000000014556031650020546 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/00/===0000644000175000017500000000003414556031650021034 0ustar tinatinaSyntax character edge cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/00/test.event0000644000175000017500000000006614556031650022572 0ustar tinatina+STR +DOC +SEQ +MAP =VAL : =VAL : -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/00/in.yaml0000644000175000017500000000000414556031650022032 0ustar tinatina- : YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/02/0000755000175000017500000000000014556031650020550 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/02/===0000644000175000017500000000003414556031650021036 0ustar tinatinaSyntax character edge cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/02/test.event0000644000175000017500000000003714556031650022572 0ustar tinatina+STR +DOC =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/02/in.yaml0000644000175000017500000000000214556031650022032 0ustar tinatina! YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/01/0000755000175000017500000000000014556031650020547 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/01/in.json0000644000175000017500000000002014556031650022040 0ustar tinatina{ ":": null } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/01/===0000644000175000017500000000003414556031650021035 0ustar tinatinaSyntax character edge cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/01/test.event0000644000175000017500000000005514556031650022571 0ustar tinatina+STR +DOC +MAP =VAL :: =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UKK6/01/in.yaml0000644000175000017500000000000314556031650022032 0ustar tinatina:: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/00/0000755000175000017500000000000014556031650020523 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/00/in.json0000644000175000017500000000001514556031650022020 0ustar tinatina[ "\n\n" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/00/===0000644000175000017500000000003714556031650021014 0ustar tinatinaTrailing whitespace in streams YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/00/test.event0000644000175000017500000000005114556031650022541 0ustar tinatina+STR +DOC +SEQ =VAL |\n\n -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/00/in.yaml0000644000175000017500000000000714556031650022012 0ustar tinatina- |+ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/00/out.yaml0000644000175000017500000000001314556031650022210 0ustar tinatina- |+ ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/02/0000755000175000017500000000000014556031650020525 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/02/in.json0000644000175000017500000000001314556031650022020 0ustar tinatina[ "\n" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/02/===0000644000175000017500000000003714556031650021016 0ustar tinatinaTrailing whitespace in streams YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/02/test.event0000644000175000017500000000004714556031650022550 0ustar tinatina+STR +DOC +SEQ =VAL |\n -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/02/in.yaml0000644000175000017500000000001014556031650022006 0ustar tinatina- |+ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/02/out.yaml0000644000175000017500000000001214556031650022211 0ustar tinatina- |+ ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/01/0000755000175000017500000000000014556031650020524 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/01/in.json0000644000175000017500000000001314556031650022017 0ustar tinatina[ "\n" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/01/===0000644000175000017500000000003714556031650021015 0ustar tinatinaTrailing whitespace in streams YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/01/test.event0000644000175000017500000000004714556031650022547 0ustar tinatina+STR +DOC +SEQ =VAL |\n -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/01/in.yaml0000644000175000017500000000001114556031650022006 0ustar tinatina- |+ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JEF9/01/out.yaml0000644000175000017500000000001214556031650022210 0ustar tinatina- |+ ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W9L4/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W9L4/===0000644000175000017500000000006414556031650020577 0ustar tinatinaLiteral block scalar with more spaces in first line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W9L4/test.event0000644000175000017500000000004614556031650022330 0ustar tinatina+STR +DOC --- +MAP =VAL :block scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W9L4/error0000644000175000017500000000000014556031650021350 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W9L4/in.yaml0000644000175000017500000000010714556031650021576 0ustar tinatina--- block scalar: | more spaces at the beginning are invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BD7L/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BD7L/===0000644000175000017500000000003714556031650020570 0ustar tinatinaInvalid mapping after sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BD7L/test.event0000644000175000017500000000004714556031650022322 0ustar tinatina+STR +DOC +SEQ =VAL :item1 =VAL :item2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BD7L/error0000644000175000017500000000000014556031650021341 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BD7L/in.yaml0000644000175000017500000000003314556031650021565 0ustar tinatina- item1 - item2 invalid: x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R4YG/0000755000175000017500000000000014556031650020334 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R4YG/in.json0000644000175000017500000000011614556031650021633 0ustar tinatina[ "detected\n", "\n\n# detected\n", " explicit\n", "\t\ndetected\n" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R4YG/===0000644000175000017500000000005614556031650020626 0ustar tinatinaSpec Example 8.2. Block Indentation Indicator YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R4YG/test.event0000644000175000017500000000015514556031650022357 0ustar tinatina+STR +DOC +SEQ =VAL |detected\n =VAL >\n\n# detected\n =VAL | explicit\n =VAL >\t\ndetected\n -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R4YG/in.yaml0000644000175000017500000000010514556031650021622 0ustar tinatina- | detected - > # detected - |1 explicit - > detected YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R4YG/out.yaml0000644000175000017500000000010614556031650022024 0ustar tinatina- | detected - > # detected - |2 explicit - > detected YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5LLU/0000755000175000017500000000000014556031650020330 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5LLU/===0000644000175000017500000000007014556031650020616 0ustar tinatinaBlock scalar with wrong indented line after spaces only YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5LLU/test.event0000644000175000017500000000004214556031650022346 0ustar tinatina+STR +DOC +MAP =VAL :block scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5LLU/error0000644000175000017500000000000014556031650021372 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5LLU/in.yaml0000644000175000017500000000004214556031650021616 0ustar tinatinablock scalar: > invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5WE3/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5WE3/in.json0000644000175000017500000000011014556031650021563 0ustar tinatina{ "explicit key": null, "block key\n": [ "one", "two" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5WE3/===0000644000175000017500000000006214556031650020561 0ustar tinatinaSpec Example 8.17. Explicit Block Mapping Entries YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5WE3/test.event0000644000175000017500000000015014556031650022310 0ustar tinatina+STR +DOC +MAP =VAL :explicit key =VAL : =VAL |block key\n +SEQ =VAL :one =VAL :two -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5WE3/in.yaml0000644000175000017500000000013614556031650021564 0ustar tinatina? explicit key # Empty value ? | block key : - one # Explicit compact - two # block value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5WE3/out.yaml0000644000175000017500000000005614556031650021766 0ustar tinatinaexplicit key: ? | block key : - one - two YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4Q9F/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4Q9F/in.json0000644000175000017500000000002414556031650021567 0ustar tinatina"ab cd\nef\n\ngh\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4Q9F/===0000644000175000017500000000003214556031650020556 0ustar tinatinaFolded Block Scalar [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4Q9F/test.event0000644000175000017500000000006014556031650022310 0ustar tinatina+STR +DOC --- =VAL >ab cd\nef\n\ngh\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4Q9F/in.yaml0000644000175000017500000000003214556031650021557 0ustar tinatina--- > ab cd ef gh YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4Q9F/out.yaml0000644000175000017500000000003314556031650021761 0ustar tinatina--- > ab cd ef gh YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/74H7/0000755000175000017500000000000014556031650020240 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/74H7/in.json0000644000175000017500000000010114556031650021531 0ustar tinatina{ "a": "b", "c": 42, "e": "f", "g": "h", "23": false } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/74H7/===0000644000175000017500000000003114556031650020523 0ustar tinatinaTags in Implicit Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/74H7/test.event0000644000175000017500000000035514556031650022265 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL :b =VAL :c =VAL :42 =VAL :e =VAL :f =VAL :g =VAL :h =VAL :23 =VAL :false -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/74H7/in.yaml0000644000175000017500000000007614556031650021535 0ustar tinatina!!str a: b c: !!int 42 e: !!str f g: h !!str 23: !!bool false YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/74H7/out.yaml0000644000175000017500000000007614556031650021736 0ustar tinatina!!str a: b c: !!int 42 e: !!str f g: h !!str 23: !!bool false YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M6YH/0000755000175000017500000000000014556031650020332 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M6YH/in.json0000644000175000017500000000006714556031650021636 0ustar tinatina[ "x\n", { "foo" : "bar" }, [ 42 ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M6YH/===0000644000175000017500000000003314556031650020617 0ustar tinatinaBlock sequence indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M6YH/test.event0000644000175000017500000000013114556031650022347 0ustar tinatina+STR +DOC +SEQ =VAL |x\n +MAP =VAL :foo =VAL :bar -MAP +SEQ =VAL :42 -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M6YH/in.yaml0000644000175000017500000000003314556031650021620 0ustar tinatina- | x - foo: bar - - 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M6YH/out.yaml0000644000175000017500000000003214556031650022020 0ustar tinatina- | x - foo: bar - - 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/0000755000175000017500000000000014556031650020301 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/in.json0000644000175000017500000000002414556031650021576 0ustar tinatina"literal\n\ttext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/===0000644000175000017500000000004714556031650020573 0ustar tinatinaSpec Example 8.7. Literal Scalar [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/test.event0000644000175000017500000000006014556031650022317 0ustar tinatina+STR +DOC --- =VAL |literal\n\ttext\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/emit.yaml0000644000175000017500000000003014556031650022114 0ustar tinatina--- | literal text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/in.yaml0000644000175000017500000000003014556031650021564 0ustar tinatina--- | literal text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T5N4/out.yaml0000644000175000017500000000002414556031650021770 0ustar tinatina"literal\n\ttext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HRE5/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HRE5/===0000644000175000017500000000005714556031650020605 0ustar tinatinaDouble quoted scalar with escaped single quote YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HRE5/test.event0000644000175000017500000000004014556031650022326 0ustar tinatina+STR +DOC --- +MAP =VAL :double YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HRE5/error0000644000175000017500000000000014556031650021354 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HRE5/in.yaml0000644000175000017500000000003714556031650021604 0ustar tinatina--- double: "quoted \' scalar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5NYZ/0000755000175000017500000000000014556031650020354 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5NYZ/in.json0000644000175000017500000000002514556031650021652 0ustar tinatina{ "key": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5NYZ/===0000644000175000017500000000004414556031650020643 0ustar tinatinaSpec Example 6.9. Separated Comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5NYZ/test.event0000644000175000017500000000006414556031650022376 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5NYZ/in.yaml0000644000175000017500000000003214556031650021641 0ustar tinatinakey: # Comment value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5NYZ/out.yaml0000644000175000017500000000001314556031650022041 0ustar tinatinakey: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/0000755000175000017500000000000014556031650020323 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/in.json0000644000175000017500000000005714556031650021626 0ustar tinatina" 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/===0000644000175000017500000000004614556031650020614 0ustar tinatinaSpec Example 7.9. Single Quoted Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/test.event0000644000175000017500000000010714556031650022343 0ustar tinatina+STR +DOC =VAL ' 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/emit.yaml0000644000175000017500000000006114556031650022142 0ustar tinatina' 1st non-empty 2nd non-empty 3rd non-empty ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/in.yaml0000644000175000017500000000006214556031650021613 0ustar tinatina' 1st non-empty 2nd non-empty 3rd non-empty ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PRH3/out.yaml0000644000175000017500000000006114556031650022013 0ustar tinatina' 1st non-empty 2nd non-empty 3rd non-empty ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3HFZ/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3HFZ/===0000644000175000017500000000005214556031650020607 0ustar tinatinaInvalid content after document end marker YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3HFZ/test.event0000644000175000017500000000006714556031650022346 0ustar tinatina+STR +DOC --- +MAP =VAL :key =VAL :value -MAP -DOC ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3HFZ/error0000644000175000017500000000000014556031650021363 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3HFZ/in.yaml0000644000175000017500000000003314556031650021607 0ustar tinatina--- key: value ... invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GDY7/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GDY7/===0000644000175000017500000000004614556031647020620 0ustar tinatinaComment that looks like a mapping key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GDY7/test.event0000644000175000017500000000004514556031650022342 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL :value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GDY7/error0000644000175000017500000000000014556031650021363 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GDY7/in.yaml0000644000175000017500000000003714556031650021613 0ustar tinatinakey: value this is #not a: key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6LVF/0000755000175000017500000000000014556031650020324 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6LVF/in.json0000644000175000017500000000000614556031650021621 0ustar tinatina"foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6LVF/===0000644000175000017500000000004714556031650020616 0ustar tinatinaSpec Example 6.13. Reserved Directives YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6LVF/test.event0000644000175000017500000000004214556031650022342 0ustar tinatina+STR +DOC --- =VAL "foo -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6LVF/in.yaml0000644000175000017500000000011414556031650021612 0ustar tinatina%FOO bar baz # Should be ignored # with a warning. --- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6LVF/out.yaml0000644000175000017500000000001214556031650022010 0ustar tinatina--- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7T8X/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7T8X/in.json0000644000175000017500000000011514556031650021617 0ustar tinatina"\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7T8X/===0000644000175000017500000000007214556031650020611 0ustar tinatinaSpec Example 8.10. Folded Lines - 8.13. Final Empty Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7T8X/test.event0000644000175000017500000000014514556031650022343 0ustar tinatina+STR +DOC =VAL >\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7T8X/in.yaml0000644000175000017500000000013014556031650021605 0ustar tinatina> folded line next line * bullet * list * lines last line # Comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7T8X/out.yaml0000644000175000017500000000012014556031650022005 0ustar tinatina> folded line next line * bullet * list * lines last line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK3J/0000755000175000017500000000000014556031650020302 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK3J/in.json0000644000175000017500000000003514556031650021601 0ustar tinatina"line1 # no comment line3\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK3J/===0000644000175000017500000000007714556031650020577 0ustar tinatinaZero indented block scalar with line that looks like a comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK3J/test.event0000644000175000017500000000007114556031650022322 0ustar tinatina+STR +DOC --- =VAL >line1 # no comment line3\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK3J/in.yaml0000644000175000017500000000003714556031650021574 0ustar tinatina--- > line1 # no comment line3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK3J/out.yaml0000644000175000017500000000004114556031650021770 0ustar tinatina--- > line1 # no comment line3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7Z25/0000755000175000017500000000000014556031650020256 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7Z25/in.json0000644000175000017500000000003714556031650021557 0ustar tinatina"scalar1" { "key": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7Z25/===0000644000175000017500000000005014556031650020542 0ustar tinatinaBare document after document end marker YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7Z25/test.event0000644000175000017500000000012414556031650022275 0ustar tinatina+STR +DOC --- =VAL :scalar1 -DOC ... +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7Z25/in.yaml0000644000175000017500000000003314556031650021544 0ustar tinatina--- scalar1 ... key: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7Z25/out.yaml0000644000175000017500000000003314556031650021745 0ustar tinatina--- scalar1 ... key: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BFJ/0000755000175000017500000000000014556031650020276 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BFJ/===0000644000175000017500000000005414556031650020566 0ustar tinatinaMapping, key and flow sequence item anchors YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BFJ/test.event0000644000175000017500000000014714556031650022322 0ustar tinatina+STR +DOC --- +MAP &mapping +SEQ [] &key =VAL &item :a =VAL :b =VAL :c -SEQ =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BFJ/in.yaml0000644000175000017500000000005314556031650021566 0ustar tinatina--- &mapping &key [ &item a, b, c ]: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BFJ/out.yaml0000644000175000017500000000005614556031650021772 0ustar tinatina--- &mapping ? &key - &item a - b - c : value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RTP8/0000755000175000017500000000000014556031650020344 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RTP8/in.json0000644000175000017500000000001314556031650021637 0ustar tinatina"Document" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RTP8/===0000644000175000017500000000004314556031647020640 0ustar tinatinaSpec Example 9.2. Document Markers YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RTP8/test.event0000644000175000017500000000005314556031650022364 0ustar tinatina+STR +DOC --- =VAL :Document -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RTP8/in.yaml0000644000175000017500000000004414556031650021634 0ustar tinatina%YAML 1.2 --- Document ... # Suffix YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RTP8/out.yaml0000644000175000017500000000002114556031650022030 0ustar tinatina--- Document ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AVM7/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AVM7/in.json0000644000175000017500000000000014556031650021610 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AVM7/===0000644000175000017500000000001514556031650020606 0ustar tinatinaEmpty Stream YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AVM7/test.event0000644000175000017500000000001214556031650022334 0ustar tinatina+STR -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AVM7/in.yaml0000644000175000017500000000000014556031650021601 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CC74/0000755000175000017500000000000014556031650020247 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CC74/in.json0000644000175000017500000000000614556031650021544 0ustar tinatina"bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CC74/===0000644000175000017500000000003714556031650020540 0ustar tinatinaSpec Example 6.20. Tag Handles YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CC74/test.event0000644000175000017500000000010114556031650022261 0ustar tinatina+STR +DOC --- =VAL "bar -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CC74/in.yaml0000644000175000017500000000006414556031650021541 0ustar tinatina%TAG !e! tag:example.com,2000:app/ --- !e!foo "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CC74/out.yaml0000644000175000017500000000005214556031650021737 0ustar tinatina--- ! "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/0000755000175000017500000000000014556031650020346 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/00/0000755000175000017500000000000014556031650020565 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/00/in.json0000644000175000017500000000002314556031650022061 0ustar tinatina{ "foo": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/00/===0000644000175000017500000000004514556031650021055 0ustar tinatinaFlow mapping colon on line after key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/00/test.event0000644000175000017500000000006514556031650022610 0ustar tinatina+STR +DOC +MAP {} =VAL "foo =VAL "bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/00/emit.yaml0000644000175000017500000000001514556031650022403 0ustar tinatina"foo": "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/00/in.yaml0000644000175000017500000000002014556031650022047 0ustar tinatina{"foo" : "bar"} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/02/0000755000175000017500000000000014556031650020567 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/02/in.json0000644000175000017500000000002314556031650022063 0ustar tinatina{ "foo": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/02/===0000644000175000017500000000004514556031650021057 0ustar tinatinaFlow mapping colon on line after key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/02/test.event0000644000175000017500000000006514556031650022612 0ustar tinatina+STR +DOC +MAP {} =VAL :foo =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/02/emit.yaml0000644000175000017500000000001114556031650022401 0ustar tinatinafoo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/02/in.yaml0000644000175000017500000000001414556031650022054 0ustar tinatina{foo : bar} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/01/0000755000175000017500000000000014556031650020566 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/01/in.json0000644000175000017500000000002314556031650022062 0ustar tinatina{ "foo": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/01/===0000644000175000017500000000004514556031650021056 0ustar tinatinaFlow mapping colon on line after key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/01/test.event0000644000175000017500000000006514556031650022611 0ustar tinatina+STR +DOC +MAP {} =VAL "foo =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/01/emit.yaml0000644000175000017500000000001314556031650022402 0ustar tinatina"foo": bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4MUZ/01/in.yaml0000644000175000017500000000001614556031650022055 0ustar tinatina{"foo" : bar} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KBC/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KBC/===0000644000175000017500000000003514556031650020566 0ustar tinatinaMapping starting at --- line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KBC/test.event0000644000175000017500000000001614556031650022316 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KBC/error0000644000175000017500000000000014556031650021341 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KBC/in.yaml0000644000175000017500000000004214556031650021565 0ustar tinatina--- key1: value1 key2: value2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/52DL/0000755000175000017500000000000014556031650020255 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/52DL/in.json0000644000175000017500000000000414556031650021550 0ustar tinatina"a" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/52DL/===0000644000175000017500000000004014556031650020540 0ustar tinatinaExplicit Non-Specific Tag [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/52DL/test.event0000644000175000017500000000004414556031650022275 0ustar tinatina+STR +DOC --- =VAL :a -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/52DL/in.yaml0000644000175000017500000000001014556031650021536 0ustar tinatina--- ! a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/52DL/out.yaml0000644000175000017500000000001014556031650021737 0ustar tinatina--- ! a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9C9N/0000755000175000017500000000000014556031650020271 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9C9N/===0000644000175000017500000000003514556031650020560 0ustar tinatinaWrong indented flow sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9C9N/test.event0000644000175000017500000000005614556031650022314 0ustar tinatina+STR +DOC --- +MAP =VAL :flow +SEQ [] =VAL :a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9C9N/error0000644000175000017500000000000014556031650021333 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9C9N/in.yaml0000644000175000017500000000002414556031650021557 0ustar tinatina--- flow: [a, b, c] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RR7F/0000755000175000017500000000000014556031650020327 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RR7F/in.json0000644000175000017500000000003214556031650021623 0ustar tinatina{ "d": 23, "a": 4.2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RR7F/===0000644000175000017500000000005314556031650020616 0ustar tinatinaMixed Block Mapping (implicit to explicit) YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RR7F/test.event0000644000175000017500000000010114556031650022341 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL :4.2 =VAL :d =VAL :23 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RR7F/in.yaml0000644000175000017500000000002014556031650021611 0ustar tinatinaa: 4.2 ? d : 23 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RR7F/out.yaml0000644000175000017500000000001514556031650022016 0ustar tinatinaa: 4.2 d: 23 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F2C7/0000755000175000017500000000000014556031650020250 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F2C7/in.json0000644000175000017500000000003314556031650021545 0ustar tinatina[ "a", 2, 4, "d" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F2C7/===0000644000175000017500000000002114556031650020532 0ustar tinatinaAnchors and Tags YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F2C7/test.event0000644000175000017500000000021714556031650022272 0ustar tinatina+STR +DOC +SEQ =VAL &a :a =VAL :2 =VAL &c :4 =VAL &d :d -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F2C7/in.yaml0000644000175000017500000000005714556031650021544 0ustar tinatina - &a !!str a - !!int 2 - !!int &c 4 - &d d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F2C7/out.yaml0000644000175000017500000000005314556031650021741 0ustar tinatina- &a !!str a - !!int 2 - &c !!int 4 - &d d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96L6/0000755000175000017500000000000014556031650020247 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96L6/in.json0000644000175000017500000000006714556031650021553 0ustar tinatina"Mark McGwire's year was crippled by a knee injury.\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96L6/===0000644000175000017500000000010114556031650020530 0ustar tinatinaSpec Example 2.14. In the folded scalars, newlines become spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96L6/test.event0000644000175000017500000000012314556031650022265 0ustar tinatina+STR +DOC --- =VAL >Mark McGwire's year was crippled by a knee injury.\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96L6/in.yaml0000644000175000017500000000007714556031650021545 0ustar tinatina--- > Mark McGwire's year was crippled by a knee injury. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96L6/out.yaml0000644000175000017500000000007314556031650021742 0ustar tinatina--- > Mark McGwire's year was crippled by a knee injury. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZP5/0000755000175000017500000000000014556031650020347 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZP5/===0000644000175000017500000000004014556031650020632 0ustar tinatinaVarious Trailing Comments [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZP5/test.event0000644000175000017500000000033214556031650022367 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL "double quotes =VAL :b =VAL :plain value =VAL :c =VAL :d +SEQ =VAL :seq1 -SEQ +SEQ =VAL :seq2 -SEQ =VAL :e +SEQ &node +MAP =VAL :x =VAL :y -MAP -SEQ =VAL :block =VAL >abcde\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZP5/in.yaml0000644000175000017500000000023514556031650021641 0ustar tinatinaa: "double quotes" # lala b: plain value # lala c : #lala d ? # lala - seq1 : # lala - #lala seq2 e: &node # lala - x: y block: > # lala abcde YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZP5/out.yaml0000644000175000017500000000013214556031650022036 0ustar tinatinaa: "double quotes" b: plain value c: d ? - seq1 : - seq2 e: &node - x: y block: > abcde YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/0000755000175000017500000000000014556031650020301 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/00/0000755000175000017500000000000014556031650020520 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/00/in.json0000644000175000017500000000002014556031650022011 0ustar tinatina{"foo":"\tbar"} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/00/===0000644000175000017500000000004014556031650021003 0ustar tinatinaLeading tab content in literals YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/00/test.event0000644000175000017500000000006414556031650022542 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL |\tbar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/00/in.yaml0000644000175000017500000000001614556031650022007 0ustar tinatinafoo: |- bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/00/out.yaml0000644000175000017500000000001714556031650022211 0ustar tinatinafoo: |- bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/01/0000755000175000017500000000000014556031650020521 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/01/in.json0000644000175000017500000000002014556031650022012 0ustar tinatina{"foo":"\tbar"} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/01/===0000644000175000017500000000004014556031650021004 0ustar tinatinaLeading tab content in literals YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/01/test.event0000644000175000017500000000006414556031650022543 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL |\tbar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/01/in.yaml0000644000175000017500000000001514556031650022007 0ustar tinatinafoo: |- barYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/96NN/01/out.yaml0000644000175000017500000000001714556031650022212 0ustar tinatinafoo: |- bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G4RS/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G4RS/in.json0000644000175000017500000000031314556031650021624 0ustar tinatina{ "unicode": "Sosa did fine.☺", "control": "\b1998\t1999\t2000\n", "hex esc": "\r\n is \r\n", "single": "\"Howdy!\" he cried.", "quoted": " # Not a 'comment'.", "tie-fighter": "|\\-*-/|" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G4RS/===0000644000175000017500000000004214556031650020613 0ustar tinatinaSpec Example 2.17. Quoted Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G4RS/test.event0000644000175000017500000000037414556031650022354 0ustar tinatina+STR +DOC +MAP =VAL :unicode =VAL "Sosa did fine.☺ =VAL :control =VAL "\b1998\t1999\t2000\n =VAL :hex esc =VAL "\r\n is \r\n =VAL :single =VAL '"Howdy!" he cried. =VAL :quoted =VAL ' # Not a 'comment'. =VAL :tie-fighter =VAL '|\\-*-/| -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G4RS/in.yaml0000644000175000017500000000026114556031650021617 0ustar tinatinaunicode: "Sosa did fine.\u263A" control: "\b1998\t1999\t2000\n" hex esc: "\x0d\x0a is \r\n" single: '"Howdy!" he cried.' quoted: ' # Not a ''comment''.' tie-fighter: '|\-*-/|' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G4RS/out.yaml0000644000175000017500000000025414556031650022022 0ustar tinatinaunicode: "Sosa did fine.\u263A" control: "\b1998\t1999\t2000\n" hex esc: "\r\n is \r\n" single: '"Howdy!" he cried.' quoted: ' # Not a ''comment''.' tie-fighter: '|\-*-/|' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZWK4/0000755000175000017500000000000014556031650020346 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZWK4/in.json0000644000175000017500000000004414556031650021645 0ustar tinatina{ "a": 1, "b": null, "c": 3 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZWK4/===0000644000175000017500000000006514556031647020646 0ustar tinatinaKey with anchor after missing explicit mapping value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZWK4/test.event0000644000175000017500000000013114556031650022363 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL :1 =VAL :b =VAL : =VAL &anchor :c =VAL :3 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZWK4/in.yaml0000644000175000017500000000003214556031650021633 0ustar tinatina--- a: 1 ? b &anchor c: 3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZWK4/out.yaml0000644000175000017500000000003114556031650022033 0ustar tinatina--- a: 1 b: &anchor c: 3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9U5K/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9U5K/in.json0000644000175000017500000000024114556031650021602 0ustar tinatina[ { "item": "Super Hoop", "quantity": 1 }, { "item": "Basketball", "quantity": 4 }, { "item": "Big Shoes", "quantity": 1 } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9U5K/===0000644000175000017500000000005214556031650020572 0ustar tinatinaSpec Example 2.12. Compact Nested Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9U5K/test.event0000644000175000017500000000033014556031650022322 0ustar tinatina+STR +DOC --- +SEQ +MAP =VAL :item =VAL :Super Hoop =VAL :quantity =VAL :1 -MAP +MAP =VAL :item =VAL :Basketball =VAL :quantity =VAL :4 -MAP +MAP =VAL :item =VAL :Big Shoes =VAL :quantity =VAL :1 -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9U5K/in.yaml0000644000175000017500000000020714556031650021575 0ustar tinatina--- # Products purchased - item : Super Hoop quantity: 1 - item : Basketball quantity: 4 - item : Big Shoes quantity: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9U5K/out.yaml0000644000175000017500000000014614556031650022000 0ustar tinatina--- - item: Super Hoop quantity: 1 - item: Basketball quantity: 4 - item: Big Shoes quantity: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU74/0000755000175000017500000000000014556031650020311 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU74/===0000644000175000017500000000004014556031650020574 0ustar tinatinaAnchor and alias as mapping key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU74/test.event0000644000175000017500000000005614556031650022334 0ustar tinatina+STR +DOC +MAP =VAL :key1 =VAL &alias :value1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU74/error0000644000175000017500000000000014556031650021353 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SU74/in.yaml0000644000175000017500000000004714556031650021604 0ustar tinatinakey1: &alias value1 &b *alias : value2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G7JE/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G7JE/===0000644000175000017500000000003014556031650020565 0ustar tinatinaMultiline implicit keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G7JE/test.event0000644000175000017500000000004314556031650022322 0ustar tinatina+STR +DOC +MAP =VAL :a\\nb =VAL :1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G7JE/error0000644000175000017500000000000014556031650021345 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G7JE/in.yaml0000644000175000017500000000002014556031650021565 0ustar tinatinaa\nb: 1 c d: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDR7/0000755000175000017500000000000014556031650020330 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDR7/in.json0000644000175000017500000000014714556031650021633 0ustar tinatina{ "sequence": [ "one", "two" ], "mapping": { "sky": "blue", "sea": "green" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDR7/===0000644000175000017500000000005514556031650020621 0ustar tinatinaSpec Example 5.4. Flow Collection Indicators YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDR7/test.event0000644000175000017500000000022414556031650022350 0ustar tinatina+STR +DOC +MAP =VAL :sequence +SEQ [] =VAL :one =VAL :two -SEQ =VAL :mapping +MAP {} =VAL :sky =VAL :blue =VAL :sea =VAL :green -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDR7/in.yaml0000644000175000017500000000007314556031650021622 0ustar tinatinasequence: [ one, two, ] mapping: { sky: blue, sea: green } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDR7/out.yaml0000644000175000017500000000007014556031650022020 0ustar tinatinasequence: - one - two mapping: sky: blue sea: green YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/35KP/0000755000175000017500000000000014556031650020271 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/35KP/in.json0000644000175000017500000000003714556031650021572 0ustar tinatina{ "a": "b" } [ "c" ] "d e" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/35KP/===0000644000175000017500000000002614556031650020560 0ustar tinatinaTags for Root Objects YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/35KP/test.event0000644000175000017500000000031214556031650022307 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- +SEQ =VAL :c -SEQ -DOC +DOC --- =VAL :d e -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/35KP/in.yaml0000644000175000017500000000006414556031650021563 0ustar tinatina--- !!map ? a : b --- !!seq - !!str c --- !!str d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/35KP/out.yaml0000644000175000017500000000006114556031650021761 0ustar tinatina--- !!map a: b --- !!seq - !!str c --- !!str d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5C3/0000755000175000017500000000000014556031650020256 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5C3/in.json0000644000175000017500000000006214556031650021555 0ustar tinatina{ "literal": "value\n", "folded": "value\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5C3/===0000644000175000017500000000004614556031650020547 0ustar tinatinaSpec Example 8.21. Block Scalar Nodes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5C3/test.event0000644000175000017500000000013414556031650022276 0ustar tinatina+STR +DOC +MAP =VAL :literal =VAL |value\n =VAL :folded =VAL >value\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5C3/in.yaml0000644000175000017500000000006014556031650021544 0ustar tinatinaliteral: |2 value folded: !foo >1 value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5C3/out.yaml0000644000175000017500000000005214556031650021746 0ustar tinatinaliteral: | value folded: !foo > value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4FJ6/0000755000175000017500000000000014556031650020260 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4FJ6/===0000644000175000017500000000003514556031650020547 0ustar tinatinaNested implicit complex keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4FJ6/test.event0000644000175000017500000000024414556031650022302 0ustar tinatina+STR +DOC --- +SEQ [] +MAP {} +SEQ [] =VAL :a +SEQ [] +MAP {} +SEQ [] +SEQ [] =VAL :b =VAL :c -SEQ -SEQ =VAL :d -MAP =VAL :e -SEQ -SEQ =VAL :23 -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4FJ6/in.yaml0000644000175000017500000000004514556031650021551 0ustar tinatina--- [ [ a, [ [[b,c]]: d, e]]: 23 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4FJ6/out.yaml0000644000175000017500000000011114556031650021744 0ustar tinatina--- - ? - a - - ? - - b - c : d - e : 23 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CA3/0000755000175000017500000000000014556031650020243 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CA3/in.json0000644000175000017500000000000314556031650021535 0ustar tinatina[] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CA3/===0000644000175000017500000000002614556031650020532 0ustar tinatinaTab indented top flow YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CA3/test.event0000644000175000017500000000004114556031650022260 0ustar tinatina+STR +DOC +SEQ [] -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CA3/emit.yaml0000644000175000017500000000000314556031650022056 0ustar tinatina[] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CA3/in.yaml0000644000175000017500000000000614556031650021531 0ustar tinatina [ ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7VC/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7VC/in.json0000644000175000017500000000003514556031650021617 0ustar tinatina{ "one": 2, "three": 4 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7VC/===0000644000175000017500000000004514556031650020610 0ustar tinatinaEmpty Lines Between Mapping Elements YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7VC/test.event0000644000175000017500000000010414556031650022335 0ustar tinatina+STR +DOC +MAP =VAL :one =VAL :2 =VAL :three =VAL :4 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7VC/in.yaml0000644000175000017500000000002214556031650021604 0ustar tinatinaone: 2 three: 4 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7VC/out.yaml0000644000175000017500000000002014556031650022003 0ustar tinatinaone: 2 three: 4 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/36F6/0000755000175000017500000000000014556031650020233 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/36F6/in.json0000644000175000017500000000003014556031650021525 0ustar tinatina{ "plain": "a b\nc" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/36F6/===0000644000175000017500000000004714556031650020525 0ustar tinatinaMultiline plain scalar with empty line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/36F6/test.event0000644000175000017500000000007314556031650022255 0ustar tinatina+STR +DOC --- +MAP =VAL :plain =VAL :a b\nc -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/36F6/in.yaml0000644000175000017500000000002414556031650021521 0ustar tinatina--- plain: a b c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/36F6/out.yaml0000644000175000017500000000002614556031650021724 0ustar tinatina--- plain: 'a b c' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H3Z8/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H3Z8/in.json0000644000175000017500000000005114556031650021600 0ustar tinatina{ "wanted": "love ♥ and peace ☮" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H3Z8/===0000644000175000017500000000002014556031650020564 0ustar tinatinaLiteral unicode YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H3Z8/test.event0000644000175000017500000000011414556031650022321 0ustar tinatina+STR +DOC --- +MAP =VAL :wanted =VAL :love ♥ and peace ☮ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H3Z8/in.yaml0000644000175000017500000000004314556031650021572 0ustar tinatina--- wanted: love ♥ and peace ☮ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H3Z8/out.yaml0000644000175000017500000000005314556031650021774 0ustar tinatina--- wanted: "love \u2665 and peace \u262E" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SF5V/0000755000175000017500000000000014556031650020332 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SF5V/===0000644000175000017500000000003114556031650020615 0ustar tinatinaDuplicate YAML directive YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SF5V/test.event0000644000175000017500000000000514556031650022347 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SF5V/error0000644000175000017500000000000014556031650021374 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SF5V/in.yaml0000644000175000017500000000003014556031650021615 0ustar tinatina%YAML 1.2 %YAML 1.2 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GT5M/0000755000175000017500000000000014556031650020323 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GT5M/===0000644000175000017500000000003014556031650020605 0ustar tinatinaNode anchor in sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GT5M/test.event0000644000175000017500000000003314556031650022341 0ustar tinatina+STR +DOC +SEQ =VAL :item1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GT5M/error0000644000175000017500000000000014556031650021365 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GT5M/in.yaml0000644000175000017500000000002614556031650021613 0ustar tinatina- item1 &node - item2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7TMG/0000755000175000017500000000000014556031650020325 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7TMG/in.json0000644000175000017500000000003114556031650021620 0ustar tinatina[ "word1", "word2" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7TMG/===0000644000175000017500000000004614556031650020616 0ustar tinatinaComment in flow sequence before comma YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7TMG/test.event0000644000175000017500000000007514556031650022351 0ustar tinatina+STR +DOC --- +SEQ [] =VAL :word1 =VAL :word2 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7TMG/in.yaml0000644000175000017500000000003714556031650021617 0ustar tinatina--- [ word1 # comment , word2] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7TMG/out.yaml0000644000175000017500000000002414556031650022014 0ustar tinatina--- - word1 - word2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/E76Z/0000755000175000017500000000000014556031650020302 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/E76Z/in.json0000644000175000017500000000003314556031650021577 0ustar tinatina{ "a": "b", "b": "a" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/E76Z/===0000644000175000017500000000004214556031650020567 0ustar tinatinaAliases in Implicit Block Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/E76Z/test.event0000644000175000017500000000010414556031650022317 0ustar tinatina+STR +DOC +MAP =VAL &a :a =VAL &b :b =ALI *b =ALI *a -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/E76Z/in.yaml0000644000175000017500000000002314556031650021567 0ustar tinatina&a a: &b b *b : *a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/E76Z/out.yaml0000644000175000017500000000002314556031650021770 0ustar tinatina&a a: &b b *b : *a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BEC7/0000755000175000017500000000000014556031650020267 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BEC7/in.json0000644000175000017500000000000614556031650021564 0ustar tinatina"foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BEC7/===0000644000175000017500000000005014556031650020553 0ustar tinatinaSpec Example 6.14. “YAML” directive YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BEC7/test.event0000644000175000017500000000004214556031650022305 0ustar tinatina+STR +DOC --- =VAL "foo -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BEC7/in.yaml0000644000175000017500000000010114556031650021551 0ustar tinatina%YAML 1.3 # Attempt parsing # with a warning --- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BEC7/out.yaml0000644000175000017500000000001214556031650021753 0ustar tinatina--- "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SHH/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SHH/in.json0000644000175000017500000000005314556031650021621 0ustar tinatina{ "single": "text", "double": "text" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SHH/===0000644000175000017500000000005314556031647020617 0ustar tinatinaSpec Example 5.8. Quoted Scalar Indicators YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SHH/test.event0000644000175000017500000000011614556031650022342 0ustar tinatina+STR +DOC +MAP =VAL :single =VAL 'text =VAL :double =VAL "text -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SHH/in.yaml0000644000175000017500000000003614556031650021613 0ustar tinatinasingle: 'text' double: "text" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TRB/0000755000175000017500000000000014556031650020323 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TRB/===0000644000175000017500000000006414556031650020614 0ustar tinatinaInvalid document-start marker in doublequoted tring YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TRB/test.event0000644000175000017500000000001614556031650022342 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TRB/error0000644000175000017500000000000014556031650021365 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TRB/in.yaml0000644000175000017500000000001414556031650021610 0ustar tinatina--- " --- " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6PBE/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6PBE/===0000644000175000017500000000006114556031650020571 0ustar tinatinaZero-indented sequences in explicit mapping keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6PBE/test.event0000644000175000017500000000012614556031650022324 0ustar tinatina+STR +DOC --- +MAP +SEQ =VAL :a =VAL :b -SEQ +SEQ =VAL :c =VAL :d -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6PBE/emit.yaml0000644000175000017500000000003414556031650022122 0ustar tinatina--- ? - a - b : - c - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6PBE/in.yaml0000644000175000017500000000003014556031650021566 0ustar tinatina--- ? - a - b : - c - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/0000755000175000017500000000000014556031650020252 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/00/0000755000175000017500000000000014556031650020471 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/00/in.json0000644000175000017500000000002314556031650021765 0ustar tinatina"1 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/00/===0000644000175000017500000000003714556031650020762 0ustar tinatinaTrailing tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/00/test.event0000644000175000017500000000005314556031650022511 0ustar tinatina+STR +DOC =VAL "1 trailing\t tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/00/in.yaml0000644000175000017500000000002714556031650021762 0ustar tinatina"1 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/00/out.yaml0000644000175000017500000000002314556031650022157 0ustar tinatina"1 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/02/0000755000175000017500000000000014556031650020473 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/02/in.json0000644000175000017500000000002314556031650021767 0ustar tinatina"3 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/02/===0000644000175000017500000000003714556031650020764 0ustar tinatinaTrailing tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/02/test.event0000644000175000017500000000005314556031650022513 0ustar tinatina+STR +DOC =VAL "3 trailing\t tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/02/in.yaml0000644000175000017500000000002714556031650021764 0ustar tinatina"3 trailing\ tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/02/out.yaml0000644000175000017500000000002314556031650022161 0ustar tinatina"3 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/04/0000755000175000017500000000000014556031650020475 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/04/in.json0000644000175000017500000000002114556031650021767 0ustar tinatina"5 trailing tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/04/===0000644000175000017500000000003714556031650020766 0ustar tinatinaTrailing tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/04/test.event0000644000175000017500000000005114556031650022513 0ustar tinatina+STR +DOC =VAL "5 trailing tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/04/in.yaml0000644000175000017500000000002614556031650021765 0ustar tinatina"5 trailing tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/04/out.yaml0000644000175000017500000000002114556031650022161 0ustar tinatina"5 trailing tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/05/0000755000175000017500000000000014556031650020476 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/05/in.json0000644000175000017500000000002114556031650021770 0ustar tinatina"6 trailing tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/05/===0000644000175000017500000000003714556031650020767 0ustar tinatinaTrailing tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/05/test.event0000644000175000017500000000005114556031650022514 0ustar tinatina+STR +DOC =VAL "6 trailing tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/05/in.yaml0000644000175000017500000000003014556031650021761 0ustar tinatina"6 trailing tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/05/out.yaml0000644000175000017500000000002114556031650022162 0ustar tinatina"6 trailing tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/01/0000755000175000017500000000000014556031650020472 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/01/in.json0000644000175000017500000000002314556031650021766 0ustar tinatina"2 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/01/===0000644000175000017500000000003714556031650020763 0ustar tinatinaTrailing tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/01/test.event0000644000175000017500000000005314556031650022512 0ustar tinatina+STR +DOC =VAL "2 trailing\t tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/01/in.yaml0000644000175000017500000000003114556031650021756 0ustar tinatina"2 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/01/out.yaml0000644000175000017500000000002314556031650022160 0ustar tinatina"2 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/03/0000755000175000017500000000000014556031650020474 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/03/in.json0000644000175000017500000000002314556031650021770 0ustar tinatina"4 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/03/===0000644000175000017500000000003714556031650020765 0ustar tinatinaTrailing tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/03/test.event0000644000175000017500000000005314556031650022514 0ustar tinatina+STR +DOC =VAL "4 trailing\t tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/03/in.yaml0000644000175000017500000000003114556031650021760 0ustar tinatina"4 trailing\ tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DE56/03/out.yaml0000644000175000017500000000002314556031650022162 0ustar tinatina"4 trailing\t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4GC6/0000755000175000017500000000000014556031650020252 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4GC6/in.json0000644000175000017500000000002714556031650021552 0ustar tinatina"here's to \"quotes\"" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4GC6/===0000644000175000017500000000005314556031650020541 0ustar tinatinaSpec Example 7.7. Single Quoted Characters YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4GC6/test.event0000644000175000017500000000005514556031650022274 0ustar tinatina+STR +DOC =VAL 'here's to "quotes" -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4GC6/in.yaml0000644000175000017500000000002614556031650021542 0ustar tinatina'here''s to "quotes"' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JTT/0000755000175000017500000000000014556031650020336 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JTT/===0000644000175000017500000000004614556031650020627 0ustar tinatinaFlow sequence without closing bracket YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JTT/test.event0000644000175000017500000000007314556031650022360 0ustar tinatina+STR +DOC --- +SEQ [] +SEQ [] =VAL :a =VAL :b =VAL :c -SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JTT/error0000644000175000017500000000000014556031650021400 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JTT/in.yaml0000644000175000017500000000002214556031650021622 0ustar tinatina--- [ [ a, b, c ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/82AN/0000755000175000017500000000000014556031650020257 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/82AN/in.json0000644000175000017500000000002114556031650021551 0ustar tinatina"---word1 word2" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/82AN/===0000644000175000017500000000004714556031650020551 0ustar tinatinaThree dashes and content without space YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/82AN/test.event0000644000175000017500000000005114556031650022275 0ustar tinatina+STR +DOC =VAL :---word1 word2 -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/82AN/in.yaml0000644000175000017500000000001714556031650021547 0ustar tinatina---word1 word2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/82AN/out.yaml0000644000175000017500000000002114556031650021743 0ustar tinatina'---word1 word2' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y2GN/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y2GN/in.json0000644000175000017500000000002514556031650021624 0ustar tinatina{ "key": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y2GN/===0000644000175000017500000000004014556031647020617 0ustar tinatinaAnchor with colon in the middle YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y2GN/test.event0000644000175000017500000000010114556031650022340 0ustar tinatina+STR +DOC --- +MAP =VAL :key =VAL &an:chor :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y2GN/in.yaml0000644000175000017500000000003014556031650021611 0ustar tinatina--- key: &an:chor value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y2GN/out.yaml0000644000175000017500000000003014556031650022012 0ustar tinatina--- key: &an:chor value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/236B/0000755000175000017500000000000014556031650020223 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/236B/===0000644000175000017500000000003414556031650020511 0ustar tinatinaInvalid value after mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/236B/test.event0000644000175000017500000000004314556031650022242 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/236B/error0000644000175000017500000000000014556031650021265 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/236B/in.yaml0000644000175000017500000000002314556031650021510 0ustar tinatinafoo: bar invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JR7V/0000755000175000017500000000000014556031650020337 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JR7V/in.json0000644000175000017500000000032314556031650021636 0ustar tinatina[ "a?string", "another ? string", { "key": "value?" }, [ "a?string" ], [ "another ? string" ], { "key": "value?" }, { "key": "value?" }, { "key?": "value" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JR7V/===0000644000175000017500000000003214556031650020623 0ustar tinatinaQuestion marks in scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JR7V/test.event0000644000175000017500000000042114556031650022356 0ustar tinatina+STR +DOC +SEQ =VAL :a?string =VAL :another ? string +MAP =VAL :key =VAL :value? -MAP +SEQ [] =VAL :a?string -SEQ +SEQ [] =VAL :another ? string -SEQ +MAP {} =VAL :key =VAL :value? -MAP +MAP {} =VAL :key =VAL :value? -MAP +MAP {} =VAL :key? =VAL :value -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JR7V/in.yaml0000644000175000017500000000020014556031650021621 0ustar tinatina- a?string - another ? string - key: value? - [a?string] - [another ? string] - {key: value? } - {key: value?} - {key?: value } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JR7V/out.yaml0000644000175000017500000000017014556031650022030 0ustar tinatina- a?string - another ? string - key: value? - - a?string - - another ? string - key: value? - key: value? - key?: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BMT/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BMT/in.json0000644000175000017500000000033214556031650021617 0ustar tinatina{ "top1": { "key1": "one" }, "top2": { "key2": "two" }, "top3": { "key3": "three" }, "top4": { "key4": "four" }, "top5": { "key5": "five" }, "top6": "six", "top7": "seven" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BMT/===0000644000175000017500000000004314556031650020606 0ustar tinatinaNode and Mapping Key Anchors [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BMT/test.event0000644000175000017500000000053014556031650022340 0ustar tinatina+STR +DOC --- +MAP =VAL :top1 +MAP &node1 =VAL &k1 :key1 =VAL :one -MAP =VAL :top2 +MAP &node2 =VAL :key2 =VAL :two -MAP =VAL :top3 +MAP =VAL &k3 :key3 =VAL :three -MAP =VAL :top4 +MAP &node4 =VAL &k4 :key4 =VAL :four -MAP =VAL :top5 +MAP &node5 =VAL :key5 =VAL :five -MAP =VAL :top6 =VAL &val6 :six =VAL :top7 =VAL &val7 :seven -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BMT/in.yaml0000644000175000017500000000027214556031650021613 0ustar tinatina--- top1: &node1 &k1 key1: one top2: &node2 # comment key2: two top3: &k3 key3: three top4: &node4 &k4 key4: four top5: &node5 key5: five top6: &val6 six top7: &val7 seven YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7BMT/out.yaml0000644000175000017500000000025414556031650022014 0ustar tinatina--- top1: &node1 &k1 key1: one top2: &node2 key2: two top3: &k3 key3: three top4: &node4 &k4 key4: four top5: &node5 key5: five top6: &val6 six top7: &val7 seven YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XYN/0000755000175000017500000000000014556031650020355 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XYN/in.json0000644000175000017500000000002714556031650021655 0ustar tinatina[ "unicode anchor" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XYN/===0000644000175000017500000000003614556031650020645 0ustar tinatinaAnchor with unicode character YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XYN/test.event0000644000175000017500000000007514556031650022401 0ustar tinatina+STR +DOC --- +SEQ =VAL &😁 :unicode anchor -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XYN/in.yaml0000644000175000017500000000003314556031650021643 0ustar tinatina--- - &😁 unicode anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XYN/out.yaml0000644000175000017500000000003314556031650022044 0ustar tinatina--- - &😁 unicode anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7W2P/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7W2P/in.json0000644000175000017500000000005214556031650021604 0ustar tinatina{ "a": null, "b": null, "c": null } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7W2P/===0000644000175000017500000000004214556031650020573 0ustar tinatinaBlock Mapping with Missing Values YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7W2P/test.event0000644000175000017500000000011314556031650022323 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL : =VAL :b =VAL : =VAL :c =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7W2P/in.yaml0000644000175000017500000000001314556031650021572 0ustar tinatina? a ? b c: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7W2P/out.yaml0000644000175000017500000000001114556031650021771 0ustar tinatinaa: b: c: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UGM3/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UGM3/in.json0000644000175000017500000000147314556031650021630 0ustar tinatina{ "invoice": 34843, "date": "2001-01-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 }, { "sku": "BL4438H", "quantity": 1, "description": "Super Hoop", "price": 2392 } ], "tax": 251.42, "total": 4443.52, "comments": "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338." } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UGM3/===0000644000175000017500000000003314556031650020607 0ustar tinatinaSpec Example 2.27. Invoice YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UGM3/test.event0000644000175000017500000000140314556031650022342 0ustar tinatina+STR +DOC --- +MAP =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 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UGM3/in.yaml0000644000175000017500000000120414556031650021611 0ustar tinatina--- ! 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. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UGM3/out.yaml0000644000175000017500000000077314556031650022024 0ustar tinatina--- ! 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. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KK5P/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KK5P/===0000644000175000017500000000006014556031650020606 0ustar tinatinaVarious combinations of explicit block mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KK5P/test.event0000644000175000017500000000043714556031650022347 0ustar tinatina+STR +DOC +MAP =VAL :complex1 +MAP +SEQ =VAL :a -SEQ =VAL : -MAP =VAL :complex2 +MAP +SEQ =VAL :a -SEQ =VAL :b -MAP =VAL :complex3 +MAP +SEQ =VAL :a -SEQ =VAL >b\n -MAP =VAL :complex4 +MAP =VAL >a\n =VAL : -MAP =VAL :complex5 +MAP +SEQ =VAL :a -SEQ +SEQ =VAL :b -SEQ -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KK5P/in.yaml0000644000175000017500000000017414556031650021615 0ustar tinatinacomplex1: ? - a complex2: ? - a : b complex3: ? - a : > b complex4: ? > a : complex5: ? - a : - b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KK5P/out.yaml0000644000175000017500000000020014556031650022004 0ustar tinatinacomplex1: ? - a : complex2: ? - a : b complex3: ? - a : > b complex4: ? > a : complex5: ? - a : - b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/753E/0000755000175000017500000000000014556031650020232 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/753E/in.json0000644000175000017500000000000514556031650021526 0ustar tinatina"ab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/753E/===0000644000175000017500000000003114556031650020515 0ustar tinatinaBlock Scalar Strip [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/753E/test.event0000644000175000017500000000004514556031650022253 0ustar tinatina+STR +DOC --- =VAL |ab -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/753E/in.yaml0000644000175000017500000000002314556031650021517 0ustar tinatina--- |- ab ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/753E/out.yaml0000644000175000017500000000002014556031650021715 0ustar tinatina--- |- ab ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S3PD/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S3PD/===0000644000175000017500000000006214556031650020607 0ustar tinatinaSpec Example 8.18. Implicit Block Mapping Entries YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S3PD/test.event0000644000175000017500000000016714556031650022346 0ustar tinatina+STR +DOC +MAP =VAL :plain key =VAL :in-line value =VAL : =VAL : =VAL "quoted key +SEQ =VAL :entry -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S3PD/emit.yaml0000644000175000017500000000006114556031650022137 0ustar tinatinaplain key: in-line value : "quoted key": - entry YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S3PD/in.yaml0000644000175000017500000000007614556031650021615 0ustar tinatinaplain key: in-line value : # Both empty "quoted key": - entry YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZXT5/0000755000175000017500000000000014556031650020361 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZXT5/===0000644000175000017500000000006414556031650020652 0ustar tinatinaImplicit key followed by newline and adjacent value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZXT5/test.event0000644000175000017500000000003414556031650022400 0ustar tinatina+STR +DOC +SEQ [] =VAL "key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZXT5/error0000644000175000017500000000000014556031650021423 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZXT5/in.yaml0000644000175000017500000000002314556031650021646 0ustar tinatina[ "key" :value ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4HVU/0000755000175000017500000000000014556031650020335 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4HVU/===0000644000175000017500000000003614556031647020633 0ustar tinatinaWrong indendation in Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4HVU/test.event0000644000175000017500000000007214556031650022356 0ustar tinatina+STR +DOC +MAP =VAL :key +SEQ =VAL :ok =VAL :also ok -SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4HVU/error0000644000175000017500000000000014556031650021377 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4HVU/in.yaml0000644000175000017500000000004414556031650021625 0ustar tinatinakey: - ok - also ok - wrong YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X38W/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X38W/===0000644000175000017500000000003014556031650020602 0ustar tinatinaAliases in Flow Objects YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X38W/test.event0000644000175000017500000000017114556031650022341 0ustar tinatina+STR +DOC +MAP {} +SEQ [] &a =VAL :a =VAL &b :b -SEQ =ALI *b =ALI *a +SEQ [] =VAL :c =ALI *b =VAL :d -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X38W/in.yaml0000644000175000017500000000004514556031650021611 0ustar tinatina{ &a [a, &b b]: *b, *a : [c, *b, d]} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X38W/out.yaml0000644000175000017500000000004714556031650022014 0ustar tinatina? &a - a - &b b : *b *a : - c - *b - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7J7/0000755000175000017500000000000014556031650020266 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7J7/===0000644000175000017500000000003114556031650020551 0ustar tinatinaNode anchor not indented YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7J7/test.event0000644000175000017500000000004314556031650022305 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL &x : YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7J7/error0000644000175000017500000000000014556031650021330 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7J7/in.yaml0000644000175000017500000000002514556031650021555 0ustar tinatinakey: &x !!map a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2CMS/0000755000175000017500000000000014556031650020313 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2CMS/===0000644000175000017500000000004314556031650020601 0ustar tinatinaInvalid mapping in plain multiline YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2CMS/test.event0000644000175000017500000000001214556031650022326 0ustar tinatina+STR +DOC YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2CMS/error0000644000175000017500000000000014556031650021355 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2CMS/in.yaml0000644000175000017500000000002614556031650021603 0ustar tinatinathis is invalid: x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/87E4/0000755000175000017500000000000014556031650020236 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/87E4/in.json0000644000175000017500000000012114556031650021531 0ustar tinatina{ "implicit block key": [ { "implicit flow key": "value" } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/87E4/===0000644000175000017500000000005614556031650020530 0ustar tinatinaSpec Example 7.8. Single Quoted Implicit Keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/87E4/test.event0000644000175000017500000000016514556031650022262 0ustar tinatina+STR +DOC +MAP =VAL 'implicit block key +SEQ [] +MAP {} =VAL 'implicit flow key =VAL :value -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/87E4/in.yaml0000644000175000017500000000007314556031650021530 0ustar tinatina'implicit block key' : [ 'implicit flow key' : value, ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/87E4/out.yaml0000644000175000017500000000006314556031650021730 0ustar tinatina'implicit block key': - 'implicit flow key': value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F6MC/0000755000175000017500000000000014556031650020302 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F6MC/in.json0000644000175000017500000000011714556031650021602 0ustar tinatina{ "a": " more indented\nregular\n", "b": "\n\n more indented\nregular\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F6MC/===0000644000175000017500000000007514556031650020575 0ustar tinatinaMore indented lines at the beginning of folded block scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F6MC/test.event0000644000175000017500000000016614556031650022327 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL > more indented\nregular\n =VAL :b =VAL >\n\n more indented\nregular\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F6MC/emit.yaml0000644000175000017500000000011014556031650022114 0ustar tinatina--- a: >2 more indented regular b: >2 more indented regular YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F6MC/in.yaml0000644000175000017500000000011014556031650021564 0ustar tinatina--- a: >2 more indented regular b: >2 more indented regular YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XV9V/0000755000175000017500000000000014556031650020363 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XV9V/in.json0000644000175000017500000000012514556031650021662 0ustar tinatina{ "Folding": "Empty line\nas a line feed", "Chomping": "Clipped empty lines\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XV9V/===0000644000175000017500000000004414556031650020652 0ustar tinatinaSpec Example 6.5. Empty Lines [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XV9V/test.event0000644000175000017500000000017014556031650022403 0ustar tinatina+STR +DOC +MAP =VAL :Folding =VAL "Empty line\nas a line feed =VAL :Chomping =VAL |Clipped empty lines\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XV9V/in.yaml0000644000175000017500000000011714556031650021654 0ustar tinatinaFolding: "Empty line as a line feed" Chomping: | Clipped empty lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XV9V/out.yaml0000644000175000017500000000011014556031650022046 0ustar tinatinaFolding: "Empty line\nas a line feed" Chomping: | Clipped empty lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J9HZ/0000755000175000017500000000000014556031650020333 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J9HZ/in.json0000644000175000017500000000015314556031650021633 0ustar tinatina{ "hr": [ "Mark McGwire", "Sammy Sosa" ], "rbi": [ "Sammy Sosa", "Ken Griffey" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J9HZ/===0000644000175000017500000000006414556031650020624 0ustar tinatinaSpec Example 2.9. Single Document with Two Comments YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J9HZ/test.event0000644000175000017500000000022014556031650022347 0ustar tinatina+STR +DOC --- +MAP =VAL :hr +SEQ =VAL :Mark McGwire =VAL :Sammy Sosa -SEQ =VAL :rbi +SEQ =VAL :Sammy Sosa =VAL :Ken Griffey -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J9HZ/in.yaml0000644000175000017500000000016314556031650021625 0ustar tinatina--- hr: # 1998 hr ranking - Mark McGwire - Sammy Sosa rbi: # 1998 rbi ranking - Sammy Sosa - Ken Griffey YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J9HZ/out.yaml0000644000175000017500000000010414556031650022021 0ustar tinatina--- hr: - Mark McGwire - Sammy Sosa rbi: - Sammy Sosa - Ken Griffey YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/0000755000175000017500000000000014556031650020351 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/in.json0000644000175000017500000000001414556031650021645 0ustar tinatina"bar" "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/===0000644000175000017500000000005414556031650020641 0ustar tinatinaSpec Example 6.18. Primary Tag Handle [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/test.event0000644000175000017500000000014414556031650022372 0ustar tinatina+STR +DOC --- =VAL "bar -DOC ... +DOC --- =VAL "bar -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/emit.yaml0000644000175000017500000000007514556031650022175 0ustar tinatina--- !foo "bar" ... --- ! "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/in.yaml0000644000175000017500000000012614556031650021642 0ustar tinatina# Private --- !foo "bar" ... # Global %TAG ! tag:example.com,2000:app/ --- !foo "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WLZ/out.yaml0000644000175000017500000000007514556031650022046 0ustar tinatina--- !foo "bar" ... --- ! "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CVW2/0000755000175000017500000000000014556031650020330 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CVW2/===0000644000175000017500000000003414556031650020616 0ustar tinatinaInvalid comment after comma YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CVW2/test.event0000644000175000017500000000005614556031650022353 0ustar tinatina+STR +DOC --- +SEQ [] =VAL :a =VAL :b =VAL :c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CVW2/error0000644000175000017500000000000014556031650021372 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CVW2/in.yaml0000644000175000017500000000003114556031650021614 0ustar tinatina--- [ a, b, c,#invalid ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DBG4/0000755000175000017500000000000014556031650020267 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DBG4/in.json0000644000175000017500000000030614556031650021567 0ustar tinatina[ "::vector", ": - ()", "Up, up, and away!", -123, "http://example.com/foo#bar", [ "::vector", ": - ()", "Up, up and away!", -123, "http://example.com/foo#bar" ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DBG4/===0000644000175000017500000000004414556031650020556 0ustar tinatinaSpec Example 7.10. Plain Characters YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DBG4/test.event0000644000175000017500000000035214556031650022311 0ustar tinatina+STR +DOC +SEQ =VAL :::vector =VAL ": - () =VAL :Up, up, and away! =VAL :-123 =VAL :http://example.com/foo#bar +SEQ [] =VAL :::vector =VAL ": - () =VAL "Up, up and away! =VAL :-123 =VAL :http://example.com/foo#bar -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DBG4/in.yaml0000644000175000017500000000033214556031650021557 0ustar tinatina# Outside flow collection: - ::vector - ": - ()" - Up, up, and away! - -123 - http://example.com/foo#bar # Inside flow collection: - [ ::vector, ": - ()", "Up, up and away!", -123, http://example.com/foo#bar ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DBG4/out.yaml0000644000175000017500000000024714556031650021765 0ustar tinatina- ::vector - ": - ()" - Up, up, and away! - -123 - http://example.com/foo#bar - - ::vector - ": - ()" - "Up, up and away!" - -123 - http://example.com/foo#bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8QBE/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8QBE/in.json0000644000175000017500000000005414556031650021606 0ustar tinatina{ "key": [ "item1", "item2" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8QBE/===0000644000175000017500000000004014556031647020577 0ustar tinatinaBlock Sequence in Block Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8QBE/test.event0000644000175000017500000000011214556031650022322 0ustar tinatina+STR +DOC +MAP =VAL :key +SEQ =VAL :item1 =VAL :item2 -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8QBE/in.yaml0000644000175000017500000000002714556031650021577 0ustar tinatinakey: - item1 - item2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8QBE/out.yaml0000644000175000017500000000002514556031650021776 0ustar tinatinakey: - item1 - item2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5KJE/0000755000175000017500000000000014556031650020305 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5KJE/in.json0000644000175000017500000000010214556031650021577 0ustar tinatina[ [ "one", "two" ], [ "three", "four" ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5KJE/===0000644000175000017500000000004114556031650020571 0ustar tinatinaSpec Example 7.13. Flow Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5KJE/test.event0000644000175000017500000000014314556031650022325 0ustar tinatina+STR +DOC +SEQ +SEQ [] =VAL :one =VAL :two -SEQ +SEQ [] =VAL :three =VAL :four -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5KJE/in.yaml0000644000175000017500000000004014556031650021571 0ustar tinatina- [ one, two, ] - [three ,four] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5KJE/out.yaml0000644000175000017500000000004314556031650021775 0ustar tinatina- - one - two - - three - four YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4H7K/0000755000175000017500000000000014556031650020264 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4H7K/===0000644000175000017500000000006114556031650020552 0ustar tinatinaFlow sequence with invalid extra closing bracket YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4H7K/test.event0000644000175000017500000000006514556031650022307 0ustar tinatina+STR +DOC --- +SEQ =VAL :a =VAL :b =VAL :c -SEQ -DOC YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4H7K/error0000644000175000017500000000000014556031650021326 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4H7K/in.yaml0000644000175000017500000000002214556031650021550 0ustar tinatina--- [ a, b, c ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V9D5/0000755000175000017500000000000014556031650020276 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V9D5/===0000644000175000017500000000005214556031650020564 0ustar tinatinaSpec Example 8.19. Compact Block Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V9D5/test.event0000644000175000017500000000021314556031650022314 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :sun =VAL :yellow -MAP +MAP +MAP =VAL :earth =VAL :blue -MAP +MAP =VAL :moon =VAL :white -MAP -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V9D5/in.yaml0000644000175000017500000000005614556031650021571 0ustar tinatina- sun: yellow - ? earth: blue : moon: white YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6S55/0000755000175000017500000000000014556031650020251 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6S55/===0000644000175000017500000000004614556031650020542 0ustar tinatinaInvalid scalar at the end of sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6S55/test.event0000644000175000017500000000006214556031650022271 0ustar tinatina+STR +DOC +MAP =VAL :key +SEQ =VAL :bar =VAL :baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6S55/error0000644000175000017500000000000014556031650021313 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6S55/in.yaml0000644000175000017500000000003414556031650021540 0ustar tinatinakey: - bar - baz invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KMK3/0000755000175000017500000000000014556031650020314 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KMK3/in.json0000644000175000017500000000005414556031650021614 0ustar tinatina{ "foo": { "bar": 1 }, "baz": 2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KMK3/===0000644000175000017500000000002114556031650020576 0ustar tinatinaBlock Submapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KMK3/test.event0000644000175000017500000000012614556031650022335 0ustar tinatina+STR +DOC +MAP =VAL :foo +MAP =VAL :bar =VAL :1 -MAP =VAL :baz =VAL :2 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KMK3/in.yaml0000644000175000017500000000002514556031650021603 0ustar tinatinafoo: bar: 1 baz: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3MYT/0000755000175000017500000000000014556031650020343 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3MYT/in.json0000644000175000017500000000002114556031650021635 0ustar tinatina"k:#foo &a !t s" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3MYT/===0000644000175000017500000000006714556031650020637 0ustar tinatinaPlain Scalar looking like key, comment, anchor and tag YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3MYT/test.event0000644000175000017500000000005514556031650022365 0ustar tinatina+STR +DOC --- =VAL :k:#foo &a !t s -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3MYT/in.yaml0000644000175000017500000000002414556031650021631 0ustar tinatina--- k:#foo &a !t s YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3MYT/out.yaml0000644000175000017500000000002314556031650022031 0ustar tinatina--- k:#foo &a !t s YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MJS9/0000755000175000017500000000000014556031650020331 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MJS9/in.json0000644000175000017500000000003214556031650021625 0ustar tinatina"foo \n\n\t bar\n\nbaz\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MJS9/===0000644000175000017500000000004014556031647020622 0ustar tinatinaSpec Example 6.7. Block Folding YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MJS9/test.event0000644000175000017500000000006214556031650022351 0ustar tinatina+STR +DOC =VAL >foo \n\n\t bar\n\nbaz\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MJS9/in.yaml0000644000175000017500000000003214556031650021616 0ustar tinatina> foo bar baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MJS9/out.yaml0000644000175000017500000000003114556031650022016 0ustar tinatina> foo bar baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DFF7/0000755000175000017500000000000014556031650020275 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DFF7/===0000644000175000017500000000005014556031650020561 0ustar tinatinaSpec Example 7.16. Flow Mapping Entries YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DFF7/test.event0000644000175000017500000000014514556031650022317 0ustar tinatina+STR +DOC +MAP {} =VAL :explicit =VAL :entry =VAL :implicit =VAL :entry =VAL : =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DFF7/in.yaml0000644000175000017500000000005214556031650021564 0ustar tinatina{ ? explicit: entry, implicit: entry, ? } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DFF7/out.yaml0000644000175000017500000000004214556031650021764 0ustar tinatinaexplicit: entry implicit: entry : YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/0000755000175000017500000000000014556031650020273 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/in.json0000644000175000017500000000006514556031650021575 0ustar tinatina[ { "aaa" : "xxx\n", "bbb" : "xxx\n" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/===0000644000175000017500000000002014556031650020554 0ustar tinatinaLiteral scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/test.event0000644000175000017500000000012414556031650022312 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :aaa =VAL |xxx\n =VAL :bbb =VAL |xxx\n -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/emit.yaml0000644000175000017500000000004214556031650022111 0ustar tinatina- aaa: | xxx bbb: | xxx YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/in.yaml0000644000175000017500000000004314556031650021562 0ustar tinatina- aaa: |2 xxx bbb: | xxx YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4WA9/out.yaml0000644000175000017500000000004614556031650021766 0ustar tinatina--- - aaa: | xxx bbb: | xxx YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2JQS/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2JQS/===0000644000175000017500000000004014556031650020611 0ustar tinatinaBlock Mapping with Missing Keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2JQS/test.event0000644000175000017500000000007414556031650022351 0ustar tinatina+STR +DOC +MAP =VAL : =VAL :a =VAL : =VAL :b -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2JQS/in.yaml0000644000175000017500000000001014556031650021607 0ustar tinatina: a : b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/33X3/0000755000175000017500000000000014556031650020247 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/33X3/in.json0000644000175000017500000000002414556031650021544 0ustar tinatina[ 1, -2, 33 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/33X3/===0000644000175000017500000000005414556031650020537 0ustar tinatinaThree explicit integers in a block sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/33X3/test.event0000644000175000017500000000020414556031650022265 0ustar tinatina+STR +DOC --- +SEQ =VAL :1 =VAL :-2 =VAL :33 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/33X3/in.yaml0000644000175000017500000000004414556031650021537 0ustar tinatina--- - !!int 1 - !!int -2 - !!int 33 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/33X3/out.yaml0000644000175000017500000000004414556031650021740 0ustar tinatina--- - !!int 1 - !!int -2 - !!int 33 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/in.json0000644000175000017500000000002114556031650021607 0ustar tinatina"---word1 word2" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/===0000644000175000017500000000005514556031650020606 0ustar tinatinaThree dashes and content without space [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/test.event0000644000175000017500000000005514556031650022337 0ustar tinatina+STR +DOC --- =VAL :---word1 word2 -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/emit.yaml0000644000175000017500000000002514556031650022134 0ustar tinatina--- '---word1 word2' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/in.yaml0000644000175000017500000000002314556031650021602 0ustar tinatina--- ---word1 word2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EXG3/out.yaml0000644000175000017500000000002114556031650022001 0ustar tinatina'---word1 word2' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2SXE/0000755000175000017500000000000014556031650020330 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2SXE/in.json0000644000175000017500000000004514556031650021630 0ustar tinatina{ "key": "value", "foo": "key" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2SXE/===0000644000175000017500000000003314556031650020615 0ustar tinatinaAnchors With Colon in Name YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2SXE/test.event0000644000175000017500000000011614556031650022350 0ustar tinatina+STR +DOC +MAP =VAL &a: :key =VAL &a :value =VAL :foo =ALI *a: -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2SXE/in.yaml0000644000175000017500000000003514556031650021620 0ustar tinatina&a: key: &a value foo: *a: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2SXE/out.yaml0000644000175000017500000000003314556031650022017 0ustar tinatina&a: key: &a value foo: *a: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PW8X/0000755000175000017500000000000014556031650020355 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PW8X/===0000644000175000017500000000003114556031650020640 0ustar tinatinaAnchors on Empty Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PW8X/test.event0000644000175000017500000000026514556031650022402 0ustar tinatina+STR +DOC +SEQ =VAL &a : =VAL :a +MAP =VAL &a : =VAL :a =VAL :b =VAL &b : -MAP +MAP =VAL &c : =VAL &a : -MAP +MAP =VAL &d : =VAL : -MAP +MAP =VAL &e : =VAL &a : -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PW8X/in.yaml0000644000175000017500000000010114556031650021637 0ustar tinatina- &a - a - &a : a b: &b - &c : &a - ? &d - ? &e : &a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PW8X/out.yaml0000644000175000017500000000006514556031650022051 0ustar tinatina- &a - a - &a : a b: &b - &c : &a - &d : - &e : &a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G5U8/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G5U8/===0000644000175000017500000000003614556031650020567 0ustar tinatinaPlain dashes in flow sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G5U8/test.event0000644000175000017500000000003314556031650022315 0ustar tinatina+STR +DOC --- +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G5U8/error0000644000175000017500000000000014556031650021341 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G5U8/in.yaml0000644000175000017500000000001514556031650021565 0ustar tinatina--- - [-, -] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K4SU/0000755000175000017500000000000014556031650020335 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K4SU/in.json0000644000175000017500000000003314556031650021632 0ustar tinatina[ "foo", "bar", 42 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K4SU/===0000644000175000017500000000003614556031650020625 0ustar tinatinaMultiple Entry Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K4SU/test.event0000644000175000017500000000007314556031650022357 0ustar tinatina+STR +DOC +SEQ =VAL :foo =VAL :bar =VAL :42 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K4SU/in.yaml0000644000175000017500000000002114556031650021620 0ustar tinatina- foo - bar - 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMQ5/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMQ5/in.json0000644000175000017500000000004314556031650021617 0ustar tinatina{ "foo": "bar", "baz": "foo" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMQ5/===0000644000175000017500000000004314556031650020607 0ustar tinatinaSpec Example 6.23. Node Properties YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMQ5/test.event0000644000175000017500000000017514556031650022346 0ustar tinatina+STR +DOC +MAP =VAL &a1 "foo =VAL :bar =VAL &a2 :baz =ALI *a1 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMQ5/in.yaml0000644000175000017500000000005314556031650021611 0ustar tinatina!!str &a1 "foo": !!str bar &a2 baz : *a1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMQ5/out.yaml0000644000175000017500000000005014556031650022007 0ustar tinatina&a1 !!str "foo": !!str bar &a2 baz: *a1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/54T7/0000755000175000017500000000000014556031650020252 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/54T7/in.json0000644000175000017500000000004314556031650021550 0ustar tinatina{ "foo": "you", "bar": "far" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/54T7/===0000644000175000017500000000001514556031647020545 0ustar tinatinaFlow Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/54T7/test.event0000644000175000017500000000011114556031650022265 0ustar tinatina+STR +DOC +MAP {} =VAL :foo =VAL :you =VAL :bar =VAL :far -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/54T7/in.yaml0000644000175000017500000000002514556031650021541 0ustar tinatina{foo: you, bar: far} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/54T7/out.yaml0000644000175000017500000000002214556031650021737 0ustar tinatinafoo: you bar: far YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A6F9/0000755000175000017500000000000014556031650020254 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A6F9/in.json0000644000175000017500000000007614556031650021560 0ustar tinatina{ "strip": "text", "clip": "text\n", "keep": "text\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A6F9/===0000644000175000017500000000005414556031650020544 0ustar tinatinaSpec Example 8.4. Chomping Final Line Break YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A6F9/test.event0000644000175000017500000000014514556031650022276 0ustar tinatina+STR +DOC +MAP =VAL :strip =VAL |text =VAL :clip =VAL |text\n =VAL :keep =VAL |text\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A6F9/in.yaml0000644000175000017500000000006014556031650021542 0ustar tinatinastrip: |- text clip: | text keep: |+ text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A6F9/out.yaml0000644000175000017500000000005714556031650021751 0ustar tinatinastrip: |- text clip: | text keep: | text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZT7/0000755000175000017500000000000014556031650020355 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZT7/in.json0000644000175000017500000000101314556031650021651 0ustar tinatina{ "Time": "2001-11-23 15:01:42 -5", "User": "ed", "Warning": "This is an error message for the log file" } { "Time": "2001-11-23 15:02:31 -5", "User": "ed", "Warning": "A slightly different error message." } { "Date": "2001-11-23 15:03:17 -5", "User": "ed", "Fatal": "Unknown variable \"bar\"", "Stack": [ { "file": "TopClass.py", "line": 23, "code": "x = MoreObject(\"345\\n\")\n" }, { "file": "MoreClass.py", "line": 58, "code": "foo = bar" } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZT7/===0000644000175000017500000000003414556031650020643 0ustar tinatinaSpec Example 2.28. Log File YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZT7/test.event0000644000175000017500000000117114556031650022377 0ustar tinatina+STR +DOC --- +MAP =VAL :Time =VAL :2001-11-23 15:01:42 -5 =VAL :User =VAL :ed =VAL :Warning =VAL :This is an error message for the log file -MAP -DOC +DOC --- +MAP =VAL :Time =VAL :2001-11-23 15:02:31 -5 =VAL :User =VAL :ed =VAL :Warning =VAL :A slightly different error message. -MAP -DOC +DOC --- +MAP =VAL :Date =VAL :2001-11-23 15:03:17 -5 =VAL :User =VAL :ed =VAL :Fatal =VAL :Unknown variable "bar" =VAL :Stack +SEQ +MAP =VAL :file =VAL :TopClass.py =VAL :line =VAL :23 =VAL :code =VAL |x = MoreObject("345\\n")\n -MAP +MAP =VAL :file =VAL :MoreClass.py =VAL :line =VAL :58 =VAL :code =VAL |foo = bar -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZT7/in.yaml0000644000175000017500000000063314556031650021651 0ustar tinatina--- Time: 2001-11-23 15:01:42 -5 User: ed Warning: This is an error message for the log file --- Time: 2001-11-23 15:02:31 -5 User: ed Warning: A slightly different error message. --- Date: 2001-11-23 15:03:17 -5 User: ed Fatal: Unknown variable "bar" Stack: - file: TopClass.py line: 23 code: | x = MoreObject("345\n") - file: MoreClass.py line: 58 code: |- foo = bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RZT7/out.yaml0000644000175000017500000000060114556031650022045 0ustar tinatina--- Time: 2001-11-23 15:01:42 -5 User: ed Warning: This is an error message for the log file --- Time: 2001-11-23 15:02:31 -5 User: ed Warning: A slightly different error message. --- Date: 2001-11-23 15:03:17 -5 User: ed Fatal: Unknown variable "bar" Stack: - file: TopClass.py line: 23 code: | x = MoreObject("345\n") - file: MoreClass.py line: 58 code: |- foo = bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XLQ9/0000755000175000017500000000000014556031650020344 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XLQ9/in.json0000644000175000017500000000002314556031650021640 0ustar tinatina"scalar %YAML 1.2" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XLQ9/===0000644000175000017500000000006214556031647020641 0ustar tinatinaMultiline scalar that looks like a YAML directive YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XLQ9/test.event0000644000175000017500000000005714556031650022370 0ustar tinatina+STR +DOC --- =VAL :scalar %YAML 1.2 -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XLQ9/in.yaml0000644000175000017500000000002514556031650021633 0ustar tinatina--- scalar %YAML 1.2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XLQ9/out.yaml0000644000175000017500000000002514556031650022034 0ustar tinatina--- scalar %YAML 1.2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/0000755000175000017500000000000014556031650020560 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/in.json0000644000175000017500000000001314556031650022053 0ustar tinatina"a ...x b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/===0000644000175000017500000000004114556031650021044 0ustar tinatinaScalar doc with '...' in content YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/test.event0000644000175000017500000000004714556031650022603 0ustar tinatina+STR +DOC --- =VAL "a ...x b -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/emit.yaml0000644000175000017500000000001714556031650022400 0ustar tinatina--- "a ...x b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/in.yaml0000644000175000017500000000001714556031650022050 0ustar tinatina--- "a ...x b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/00/out.yaml0000644000175000017500000000001514556031650022247 0ustar tinatina--- a ...x b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/01/0000755000175000017500000000000014556031650020561 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/01/in.json0000644000175000017500000000001314556031650022054 0ustar tinatina"a ...x b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/01/===0000644000175000017500000000004114556031650021045 0ustar tinatinaScalar doc with '...' in content YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/01/test.event0000644000175000017500000000001614556031650022600 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/01/error0000644000175000017500000000000014556031650021623 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MQT/01/in.yaml0000644000175000017500000000002014556031650022043 0ustar tinatina--- "a ... x b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q88A/0000755000175000017500000000000014556031650020270 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q88A/in.json0000644000175000017500000000011014556031650021561 0ustar tinatina[ [ "a", "b" ], { "a": "b" }, "a", "b", "c" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q88A/===0000644000175000017500000000004014556031650020553 0ustar tinatinaSpec Example 7.23. Flow Content YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q88A/test.event0000644000175000017500000000016014556031650022307 0ustar tinatina+STR +DOC +SEQ +SEQ [] =VAL :a =VAL :b -SEQ +MAP {} =VAL :a =VAL :b -MAP =VAL "a =VAL 'b =VAL :c -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q88A/in.yaml0000644000175000017500000000004614556031650021562 0ustar tinatina- [ a, b ] - { a: b } - "a" - 'b' - c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q88A/out.yaml0000644000175000017500000000004314556031650021760 0ustar tinatina- - a - b - a: b - "a" - 'b' - c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/0000755000175000017500000000000014556031650020352 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/in.json0000644000175000017500000000012514556031650021651 0ustar tinatina{ "plain": "text lines", "quoted": "text lines", "block": "text\n \tlines\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/===0000644000175000017500000000004014556031650020635 0ustar tinatinaSpec Example 6.4. Line Prefixes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/test.event0000644000175000017500000000017414556031650022376 0ustar tinatina+STR +DOC +MAP =VAL :plain =VAL :text lines =VAL :quoted =VAL "text lines =VAL :block =VAL |text\n \tlines\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/emit.yaml0000644000175000017500000000010114556031650022164 0ustar tinatinaplain: text lines quoted: "text lines" block: | text lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/in.yaml0000644000175000017500000000010614556031650021641 0ustar tinatinaplain: text lines quoted: "text lines" block: | text lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ZYM/out.yaml0000644000175000017500000000010114556031650022035 0ustar tinatinaplain: text lines quoted: "text lines" block: "text\n \tlines\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LHL4/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LHL4/===0000644000175000017500000000001414556031650020576 0ustar tinatinaInvalid tag YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LHL4/test.event0000644000175000017500000000001614556031650022331 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LHL4/error0000644000175000017500000000000014556031650021354 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LHL4/in.yaml0000644000175000017500000000003114556031650021576 0ustar tinatina--- !invalid{}tag scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/58MP/0000755000175000017500000000000014556031650020300 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/58MP/in.json0000644000175000017500000000002014556031650021571 0ustar tinatina{ "x": ":x" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/58MP/===0000644000175000017500000000003014556031650020562 0ustar tinatinaFlow mapping edge cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/58MP/test.event0000644000175000017500000000006214556031650022320 0ustar tinatina+STR +DOC +MAP {} =VAL :x =VAL ::x -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/58MP/in.yaml0000644000175000017500000000001014556031650021561 0ustar tinatina{x: :x} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/58MP/out.yaml0000644000175000017500000000000614556031650021767 0ustar tinatinax: :x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HS5T/0000755000175000017500000000000014556031650020332 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HS5T/in.json0000644000175000017500000000005514556031650021633 0ustar tinatina"1st non-empty\n2nd non-empty 3rd non-empty" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HS5T/===0000644000175000017500000000003714556031650020623 0ustar tinatinaSpec Example 7.12. Plain Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HS5T/test.event0000644000175000017500000000010514556031650022350 0ustar tinatina+STR +DOC =VAL :1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HS5T/in.yaml0000644000175000017500000000005614556031650021625 0ustar tinatina1st non-empty 2nd non-empty 3rd non-empty YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HS5T/out.yaml0000644000175000017500000000005314556031650022023 0ustar tinatina1st non-empty 2nd non-empty 3rd non-empty YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LE5A/0000755000175000017500000000000014556031650020275 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LE5A/in.json0000644000175000017500000000004514556031650021575 0ustar tinatina[ "a", "b", "c", "c", "" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LE5A/===0000644000175000017500000000003614556031650020565 0ustar tinatinaSpec Example 7.24. Flow Nodes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LE5A/test.event0000644000175000017500000000020214556031650022311 0ustar tinatina+STR +DOC +SEQ =VAL "a =VAL 'b =VAL &anchor "c =ALI *anchor =VAL : -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LE5A/in.yaml0000644000175000017500000000006214556031650021565 0ustar tinatina- !!str "a" - 'b' - &anchor "c" - *anchor - !!str YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N4JP/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N4JP/===0000644000175000017500000000003314556031650020607 0ustar tinatinaBad indentation in mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N4JP/test.event0000644000175000017500000000007414556031650022345 0ustar tinatina+STR +DOC +MAP =VAL :map +MAP =VAL :key1 =VAL "quoted1 -MAP YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N4JP/error0000644000175000017500000000000014556031650021364 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N4JP/in.yaml0000644000175000017500000000006014556031650021610 0ustar tinatinamap: key1: "quoted1" key2: "bad indentation" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LP6E/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LP6E/in.json0000644000175000017500000000013614556031650021616 0ustar tinatina[ [ "a", "b", "c" ], { "a": "b", "c": "d", "e": "f" }, [] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LP6E/===0000644000175000017500000000004114556031650020601 0ustar tinatinaWhitespace After Scalars in Flow YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LP6E/test.event0000644000175000017500000000021514556031650022335 0ustar tinatina+STR +DOC +SEQ +SEQ [] =VAL :a =VAL :b =VAL :c -SEQ +MAP {} =VAL "a =VAL :b =VAL :c =VAL 'd =VAL :e =VAL "f -MAP +SEQ [] -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LP6E/in.yaml0000644000175000017500000000010614556031650021604 0ustar tinatina- [a, b , c ] - { "a" : b , c : 'd' , e : "f" } - [ ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LP6E/out.yaml0000644000175000017500000000006214556031650022006 0ustar tinatina- - a - b - c - "a": b c: 'd' e: "f" - [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7NX/0000755000175000017500000000000014556031650020340 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7NX/in.json0000644000175000017500000000013514556031650021640 0ustar tinatina{ "a": [ "b", "c", { "d": [ "e", "f" ] } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7NX/===0000644000175000017500000000003014556031650020622 0ustar tinatinaNested flow collections YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7NX/test.event0000644000175000017500000000017414556031650022364 0ustar tinatina+STR +DOC --- +MAP {} =VAL :a +SEQ [] =VAL :b =VAL :c +MAP {} =VAL :d +SEQ [] =VAL :e =VAL :f -SEQ -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7NX/in.yaml0000644000175000017500000000005414556031650021631 0ustar tinatina--- { a: [ b, c, { d: [e, f] } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7NX/out.yaml0000644000175000017500000000004014556031650022025 0ustar tinatina--- a: - b - c - d: - e - f YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X4QW/0000755000175000017500000000000014556031650020352 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X4QW/===0000644000175000017500000000007014556031650020640 0ustar tinatinaComment without whitespace after block scalar indicator YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X4QW/test.event0000644000175000017500000000003314556031650022370 0ustar tinatina+STR +DOC +MAP =VAL :block YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X4QW/error0000644000175000017500000000000014556031650021414 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X4QW/in.yaml0000644000175000017500000000003314556031650021640 0ustar tinatinablock: ># comment scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZK9H/0000755000175000017500000000000014556031650020334 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZK9H/in.json0000644000175000017500000000007714556031650021641 0ustar tinatina{ "key": [ [ [ "value" ] ] ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZK9H/===0000644000175000017500000000003614556031650020624 0ustar tinatinaNested top level flow mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZK9H/test.event0000644000175000017500000000013614556031650022356 0ustar tinatina+STR +DOC +MAP {} =VAL :key +SEQ [] +SEQ [] +SEQ [] =VAL :value -SEQ -SEQ -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZK9H/in.yaml0000644000175000017500000000003214556031650021621 0ustar tinatina{ key: [[[ value ]]] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZK9H/out.yaml0000644000175000017500000000002114556031650022020 0ustar tinatinakey: - - - value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMA/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMA/===0000644000175000017500000000004514556031650020602 0ustar tinatinaDirective by itself with no document YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMA/test.event0000644000175000017500000000000514556031650022327 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMA/error0000644000175000017500000000000014556031650021354 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMA/in.yaml0000644000175000017500000000001214556031650021575 0ustar tinatina%YAML 1.2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JQW/0000755000175000017500000000000014556031650020336 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JQW/in.json0000644000175000017500000000003514556031650021635 0ustar tinatina"\\//||\\/||\n// || ||__\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JQW/===0000644000175000017500000000006714556031650020632 0ustar tinatinaSpec Example 2.13. In literals, newlines are preserved YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JQW/test.event0000644000175000017500000000007114556031650022356 0ustar tinatina+STR +DOC --- =VAL |\\//||\\/||\n// || ||__\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JQW/in.yaml0000644000175000017500000000005414556031650021627 0ustar tinatina# ASCII Art --- | \//||\/|| // || ||__ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JQW/out.yaml0000644000175000017500000000004014556031650022023 0ustar tinatina--- | \//||\/|| // || ||__ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RXY3/0000755000175000017500000000000014556031650020354 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RXY3/===0000644000175000017500000000006414556031650020645 0ustar tinatinaInvalid document-end marker in single quoted string YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RXY3/test.event0000644000175000017500000000001614556031650022373 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RXY3/error0000644000175000017500000000000014556031650021416 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RXY3/in.yaml0000644000175000017500000000001414556031650021641 0ustar tinatina--- ' ... ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D49Q/0000755000175000017500000000000014556031650020270 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D49Q/===0000644000175000017500000000004614556031650020561 0ustar tinatinaMultiline single quoted implicit keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D49Q/test.event0000644000175000017500000000004314556031650022307 0ustar tinatina+STR +DOC +MAP =VAL 'a\\nb =VAL :1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D49Q/error0000644000175000017500000000000014556031650021332 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D49Q/in.yaml0000644000175000017500000000002414556031650021556 0ustar tinatina'a\nb': 1 'c d': 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2AD/0000755000175000017500000000000014556031650020275 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2AD/in.json0000644000175000017500000000007314556031650021576 0ustar tinatina[ "literal\n", " folded\n", "keep\n\n", " strip" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2AD/===0000644000175000017500000000004614556031650020566 0ustar tinatinaSpec Example 8.1. Block Scalar Header YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2AD/test.event0000644000175000017500000000013214556031650022313 0ustar tinatina+STR +DOC +SEQ =VAL |literal\n =VAL > folded\n =VAL |keep\n\n =VAL > strip -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2AD/in.yaml0000644000175000017500000000021714556031650021567 0ustar tinatina- | # Empty header↓ literal - >1 # Indentation indicator↓ folded - |+ # Chomping indicator↓ keep - >1- # Both indicators↓ strip YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2AD/out.yaml0000644000175000017500000000007114556031650021766 0ustar tinatina- | literal - >2 folded - |+ keep - >2- strip YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TYM/0000755000175000017500000000000014556031650020345 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TYM/in.json0000644000175000017500000000002614556031650021644 0ustar tinatina"fluorescent" "green" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TYM/===0000644000175000017500000000004414556031650020634 0ustar tinatinaSpec Example 6.21. Local Tag Prefix YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TYM/test.event0000644000175000017500000000014014556031650022362 0ustar tinatina+STR +DOC --- =VAL :fluorescent -DOC ... +DOC --- =VAL :green -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5TYM/in.yaml0000644000175000017500000000014514556031650021637 0ustar tinatina%TAG !m! !my- --- # Bulb here !m!light fluorescent ... %TAG !m! !my- --- # Color here !m!light green YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/0000755000175000017500000000000014556031650020333 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/in.json0000644000175000017500000000002614556031650021632 0ustar tinatina"quoted string" "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/===0000644000175000017500000000002414556031650020620 0ustar tinatinaScalars on --- line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/test.event0000644000175000017500000000011214556031650022347 0ustar tinatina+STR +DOC --- =VAL "quoted string -DOC +DOC --- =VAL &node :foo -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/emit.yaml0000644000175000017500000000004214556031650022151 0ustar tinatina--- "quoted string" --- &node foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/in.yaml0000644000175000017500000000004214556031650021621 0ustar tinatina--- "quoted string" --- &node foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KSS4/out.yaml0000644000175000017500000000004614556031650022026 0ustar tinatina--- "quoted string" --- &node foo ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KS4U/0000755000175000017500000000000014556031650020335 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KS4U/===0000644000175000017500000000005014556031647020627 0ustar tinatinaInvalid item after end of flow sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KS4U/test.event0000644000175000017500000000005714556031650022361 0ustar tinatina+STR +DOC --- +SEQ [] =VAL :sequence item -SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KS4U/error0000644000175000017500000000000014556031650021377 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KS4U/in.yaml0000644000175000017500000000004314556031650021624 0ustar tinatina--- [ sequence item ] invalid item YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZL4Z/0000755000175000017500000000000014556031650020352 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZL4Z/===0000644000175000017500000000002714556031650020642 0ustar tinatinaInvalid nested mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZL4Z/test.event0000644000175000017500000000004314556031650022371 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL 'b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZL4Z/error0000644000175000017500000000000014556031650021414 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZL4Z/in.yaml0000644000175000017500000000001614556031650021641 0ustar tinatina--- a: 'b': c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BS4K/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BS4K/===0000644000175000017500000000004314556031650020600 0ustar tinatinaComment between plain scalar lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BS4K/test.event0000644000175000017500000000003314556031650022330 0ustar tinatina+STR +DOC =VAL :word1 -DOC YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BS4K/error0000644000175000017500000000000014556031650021354 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BS4K/in.yaml0000644000175000017500000000002714556031650021603 0ustar tinatinaword1 # comment word2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8MK2/0000755000175000017500000000000014556031650020270 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8MK2/in.json0000644000175000017500000000000414556031650021563 0ustar tinatina"a" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8MK2/===0000644000175000017500000000003214556031650020554 0ustar tinatinaExplicit Non-Specific Tag YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8MK2/test.event0000644000175000017500000000004014556031650022304 0ustar tinatina+STR +DOC =VAL :a -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8MK2/in.yaml0000644000175000017500000000000414556031650021554 0ustar tinatina! a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N782/0000755000175000017500000000000014556031650020245 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N782/===0000644000175000017500000000004714556031650020537 0ustar tinatinaInvalid document markers in flow style YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N782/test.event0000644000175000017500000000002214556031650022261 0ustar tinatina+STR +DOC +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N782/error0000644000175000017500000000000014556031650021307 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/N782/in.yaml0000644000175000017500000000001614556031650021534 0ustar tinatina[ --- , ... ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/0000755000175000017500000000000014556031650020331 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/00/0000755000175000017500000000000014556031650020550 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/00/===0000644000175000017500000000004114556031650021034 0ustar tinatinaFlow collections over many lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/00/test.event0000644000175000017500000000003714556031650022572 0ustar tinatina+STR +DOC +MAP =VAL :k +MAP {} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/00/error0000644000175000017500000000000014556031650021612 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/00/in.yaml0000644000175000017500000000001514556031650022036 0ustar tinatinak: { k : v } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/0000755000175000017500000000000014556031650020551 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/in.json0000644000175000017500000000004014556031650022044 0ustar tinatina{ "k" : { "k" : "v" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/===0000644000175000017500000000004114556031650021035 0ustar tinatinaFlow collections over many lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/test.event0000644000175000017500000000010314556031650022565 0ustar tinatina+STR +DOC +MAP =VAL :k +MAP {} =VAL :k =VAL :v -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/emit.yaml0000644000175000017500000000001214556031650022364 0ustar tinatinak: k: v YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/in.yaml0000644000175000017500000000002114556031650022034 0ustar tinatinak: { k : v } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/VJP3/01/out.yaml0000644000175000017500000000001614556031650022241 0ustar tinatina--- k: k: v YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MZX3/0000755000175000017500000000000014556031650020350 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MZX3/in.json0000644000175000017500000000012214556031650021644 0ustar tinatina[ "plain", "double quoted", "single quoted", "block\n", "plain again" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MZX3/===0000644000175000017500000000003514556031650020637 0ustar tinatinaNon-Specific Tags on Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MZX3/test.event0000644000175000017500000000016214556031650022371 0ustar tinatina+STR +DOC +SEQ =VAL :plain =VAL "double quoted =VAL 'single quoted =VAL >block\n =VAL :plain again -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MZX3/in.yaml0000644000175000017500000000010614556031650021637 0ustar tinatina- plain - "double quoted" - 'single quoted' - > block - plain again YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FQ7F/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FQ7F/in.json0000644000175000017500000000006614556031650021615 0ustar tinatina[ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FQ7F/===0000644000175000017500000000004614556031650020603 0ustar tinatinaSpec Example 2.1. Sequence of Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FQ7F/test.event0000644000175000017500000000012414556031650022331 0ustar tinatina+STR +DOC +SEQ =VAL :Mark McGwire =VAL :Sammy Sosa =VAL :Ken Griffey -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FQ7F/in.yaml0000644000175000017500000000005214556031650021601 0ustar tinatina- Mark McGwire - Sammy Sosa - Ken Griffey YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FQ7F/lex.token0000644000175000017500000000025114556031650022142 0ustar tinatinaSEQ-MARK 0 1 1 1 WS-SPACE 1 1 1 2 TEXT-VAL 2 12 1 3 :Mark McGwire WS-NEWLN 14 1 1 15 SEQ-MARK 15 1 2 1 WS-SPACE 1 1 1 2 TEXT-VAL 2 12 1 3 :Sammy Sosa WS-NEWLN 14 1 1 15 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M29M/0000755000175000017500000000000014556031650020273 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M29M/in.json0000644000175000017500000000003414556031650021571 0ustar tinatina{ "a": "ab\n\ncd\nef\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M29M/===0000644000175000017500000000002514556031650020561 0ustar tinatinaLiteral Block Scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M29M/test.event0000644000175000017500000000007714556031650022321 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL |ab\n\ncd\nef\n -MAP -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M29M/in.yaml0000644000175000017500000000003214556031650021560 0ustar tinatinaa: | ab cd ef ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M29M/out.yaml0000644000175000017500000000003114556031650021760 0ustar tinatinaa: | ab cd ef ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/0000755000175000017500000000000014556031650020331 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/in.json0000644000175000017500000000002214556031650021624 0ustar tinatina" foo\nbar\nbaz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/===0000644000175000017500000000004514556031650020621 0ustar tinatinaSpec Example 6.8. Flow Folding [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/test.event0000644000175000017500000000005614556031650022354 0ustar tinatina+STR +DOC --- =VAL " foo\nbar\nbaz -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/emit.yaml0000644000175000017500000000002614556031650022151 0ustar tinatina--- " foo\nbar\nbaz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/in.yaml0000644000175000017500000000004014556031650021615 0ustar tinatina--- " foo bar baz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6WPF/out.yaml0000644000175000017500000000002214556031650022016 0ustar tinatina" foo\nbar\nbaz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/0000755000175000017500000000000014556031650020273 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/00/0000755000175000017500000000000014556031650020512 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/00/===0000644000175000017500000000003114556031650020775 0ustar tinatinaQuestion mark edge cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/00/test.event0000644000175000017500000000011014556031650022524 0ustar tinatina+STR +DOC +SEQ +MAP +MAP =VAL : =VAL :x -MAP =VAL : -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/00/in.yaml0000644000175000017500000000001014556031650021773 0ustar tinatina- ? : x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/00/out.yaml0000644000175000017500000000001414556031650022200 0ustar tinatina- ? : x : YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/01/0000755000175000017500000000000014556031650020513 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/01/===0000644000175000017500000000003114556031650020776 0ustar tinatinaQuestion mark edge cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/01/test.event0000644000175000017500000000010414556031650022530 0ustar tinatina+STR +DOC +MAP +MAP +SEQ [] -SEQ =VAL :x -MAP =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/01/in.yaml0000644000175000017500000000001014556031650021774 0ustar tinatina? []: x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M2N8/01/out.yaml0000644000175000017500000000001214556031650022177 0ustar tinatina? []: x : YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JWB/0000755000175000017500000000000014556031650020317 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JWB/in.json0000644000175000017500000000007514556031650021622 0ustar tinatina{ "foo": [ "a", { "key": "value" } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JWB/===0000644000175000017500000000002714556031650020607 0ustar tinatinaTags for Block Objects YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JWB/test.event0000644000175000017500000000027214556031650022342 0ustar tinatina+STR +DOC +MAP =VAL :foo +SEQ =VAL :a +MAP =VAL :key =VAL :value -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JWB/in.yaml0000644000175000017500000000006614556031650021613 0ustar tinatinafoo: !!seq - !!str a - !!map key: !!str value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6JWB/out.yaml0000644000175000017500000000006014556031650022006 0ustar tinatinafoo: !!seq - !!str a - !!map key: !!str value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K527/0000755000175000017500000000000014556031650020237 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K527/in.json0000644000175000017500000000003014556031650021531 0ustar tinatina"trimmed\n\n\nas space" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K527/===0000644000175000017500000000003714556031647020536 0ustar tinatinaSpec Example 6.6. Line Folding YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K527/test.event0000644000175000017500000000006014556031650022255 0ustar tinatina+STR +DOC =VAL >trimmed\n\n\nas space -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K527/in.yaml0000644000175000017500000000004014556031650021523 0ustar tinatina>- trimmed as space YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K527/out.yaml0000644000175000017500000000003314556031650021726 0ustar tinatina>- trimmed as space YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZ63/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZ63/in.json0000644000175000017500000000005514556031650021573 0ustar tinatina{ "one": [ 2, 3 ], "four": 5 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZ63/===0000644000175000017500000000006114556031650020560 0ustar tinatinaSequence With Same Indentation as Parent Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZ63/test.event0000644000175000017500000000012514556031650022312 0ustar tinatina+STR +DOC +MAP =VAL :one +SEQ =VAL :2 =VAL :3 -SEQ =VAL :four =VAL :5 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZ63/in.yaml0000644000175000017500000000002514556031650021561 0ustar tinatinaone: - 2 - 3 four: 5 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/0000755000175000017500000000000014556031650020342 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/in.json0000644000175000017500000000003314556031650021637 0ustar tinatina"\n\nliteral\n \n\ntext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/===0000644000175000017500000000004214556031650020627 0ustar tinatinaSpec Example 8.8. Literal Content YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/test.event0000644000175000017500000000006314556031650022363 0ustar tinatina+STR +DOC =VAL |\n\nliteral\n \n\ntext\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/emit.yaml0000644000175000017500000000003214556031650022157 0ustar tinatina| literal text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/in.yaml0000644000175000017500000000005314556031650021632 0ustar tinatina| literal text # Comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DWX9/out.yaml0000644000175000017500000000003314556031650022031 0ustar tinatina"\n\nliteral\n \n\ntext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L9U5/0000755000175000017500000000000014556031650020305 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L9U5/in.json0000644000175000017500000000012114556031650021600 0ustar tinatina{ "implicit block key": [ { "implicit flow key": "value" } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L9U5/===0000644000175000017500000000004714556031650020577 0ustar tinatinaSpec Example 7.11. Plain Implicit Keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L9U5/test.event0000644000175000017500000000016514556031650022331 0ustar tinatina+STR +DOC +MAP =VAL :implicit block key +SEQ [] +MAP {} =VAL :implicit flow key =VAL :value -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L9U5/in.yaml0000644000175000017500000000006714556031650021602 0ustar tinatinaimplicit block key : [ implicit flow key : value, ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L9U5/out.yaml0000644000175000017500000000005714556031650022002 0ustar tinatinaimplicit block key: - implicit flow key: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5U3A/0000755000175000017500000000000014556031650020264 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5U3A/===0000644000175000017500000000004514556031650020554 0ustar tinatinaSequence on same Line as Mapping Key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5U3A/test.event0000644000175000017500000000003114556031650022300 0ustar tinatina+STR +DOC +MAP =VAL :key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5U3A/error0000644000175000017500000000000014556031650021326 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5U3A/in.yaml0000644000175000017500000000002214556031650021550 0ustar tinatinakey: - a - b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4QFQ/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4QFQ/in.json0000644000175000017500000000011214556031650021615 0ustar tinatina[ "detected\n", "\n\n# detected\n", " explicit\n", "detected\n" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4QFQ/===0000644000175000017500000000006414556031650020613 0ustar tinatinaSpec Example 8.2. Block Indentation Indicator [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4QFQ/test.event0000644000175000017500000000015114556031650022341 0ustar tinatina+STR +DOC +SEQ =VAL |detected\n =VAL >\n\n# detected\n =VAL | explicit\n =VAL >detected\n -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4QFQ/emit.yaml0000644000175000017500000000010214556031650022135 0ustar tinatina- | detected - > # detected - |2 explicit - > detected YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4QFQ/in.yaml0000644000175000017500000000010214556031650021605 0ustar tinatina- | detected - > # detected - |1 explicit - > detected YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7MNF/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7MNF/===0000644000175000017500000000001614556031650020604 0ustar tinatinaMissing colon YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7MNF/test.event0000644000175000017500000000007214556031650022337 0ustar tinatina+STR +DOC +MAP =VAL :top1 +MAP =VAL :key1 =VAL :val1 -MAP YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7MNF/error0000644000175000017500000000000014556031650021360 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7MNF/in.yaml0000644000175000017500000000003014556031650021601 0ustar tinatinatop1: key1: val1 top2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7TQ/0000755000175000017500000000000014556031650020332 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7TQ/===0000644000175000017500000000003714556031650020623 0ustar tinatinaExtra words on %YAML directive YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7TQ/test.event0000644000175000017500000000000514556031650022347 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7TQ/error0000644000175000017500000000000014556031650021374 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H7TQ/in.yaml0000644000175000017500000000002214556031650021616 0ustar tinatina%YAML 1.2 foo --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/0000755000175000017500000000000014556031650020246 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/in.json0000644000175000017500000000007414556031650021550 0ustar tinatina[ { "key": "value" }, { "key": ":value" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/===0000644000175000017500000000005714556031650020541 0ustar tinatinaColon at the beginning of adjacent flow scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/test.event0000644000175000017500000000014514556031650022270 0ustar tinatina+STR +DOC +SEQ +MAP {} =VAL "key =VAL :value -MAP +MAP {} =VAL "key =VAL ::value -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/emit.yaml0000644000175000017500000000003714556031650022070 0ustar tinatina- "key": value - "key": :value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/in.yaml0000644000175000017500000000004514556031650021537 0ustar tinatina- { "key":value } - { "key"::value } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5T43/out.yaml0000644000175000017500000000003314556031650021735 0ustar tinatina- key: value - key: :value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/0000755000175000017500000000000014556031650020330 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/007/0000755000175000017500000000000014556031650020636 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/007/===0000644000175000017500000000003114556031650021121 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/007/test.event0000644000175000017500000000002714556031650022657 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/007/error0000644000175000017500000000000014556031650021700 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/007/in.yaml0000644000175000017500000000001014556031650022117 0ustar tinatina? - : - YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/007/out.yaml0000644000175000017500000000001014556031650022320 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/001/0000755000175000017500000000000014556031650020630 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/001/in.json0000644000175000017500000000004014556031650022123 0ustar tinatina{ "foo": "\t\n", "bar": 1 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/001/===0000644000175000017500000000003114556031650021113 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/001/test.event0000644000175000017500000000010514556031650022646 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL |\t\n =VAL :bar =VAL :1 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/001/in.yaml0000644000175000017500000000002114556031650022113 0ustar tinatinafoo: | bar: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/001/out.yaml0000644000175000017500000000002214556031650022315 0ustar tinatinafoo: | bar: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/008/0000755000175000017500000000000014556031650020637 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/008/===0000644000175000017500000000003114556031650021122 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/008/test.event0000644000175000017500000000002714556031650022660 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/008/error0000644000175000017500000000000014556031650021701 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/008/in.yaml0000644000175000017500000000000714556031650022126 0ustar tinatina? key: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/008/out.yaml0000644000175000017500000000001014556031650022321 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/009/0000755000175000017500000000000014556031650020640 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/009/===0000644000175000017500000000003114556031650021123 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/009/test.event0000644000175000017500000000002714556031650022661 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/009/error0000644000175000017500000000000014556031650021702 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/009/in.yaml0000644000175000017500000000001614556031650022127 0ustar tinatina? key: : key: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/009/out.yaml0000644000175000017500000000001014556031650022322 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/000/0000755000175000017500000000000014556031650020627 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/000/===0000644000175000017500000000003114556031650021112 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/000/test.event0000644000175000017500000000003114556031650022643 0ustar tinatina+STR +DOC +MAP =VAL :foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/000/error0000644000175000017500000000000014556031650021671 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/000/in.yaml0000644000175000017500000000002014556031650022111 0ustar tinatinafoo: | bar: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/002/0000755000175000017500000000000014556031650020631 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/002/in.json0000644000175000017500000000002614556031650022130 0ustar tinatina[ [ "foo" ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/002/===0000644000175000017500000000003114556031650021114 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/002/test.event0000644000175000017500000000006514556031650022654 0ustar tinatina+STR +DOC +SEQ +SEQ [] =VAL :foo -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/002/in.yaml0000644000175000017500000000001614556031650022120 0ustar tinatina- [ foo ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/002/out.yaml0000644000175000017500000000001014556031650022313 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/010/0000755000175000017500000000000014556031650020630 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/010/in.json0000644000175000017500000000001114556031650022121 0ustar tinatina[ -1 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/010/===0000644000175000017500000000003114556031650021113 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/010/test.event0000644000175000017500000000004714556031650022653 0ustar tinatina+STR +DOC +SEQ =VAL :-1 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/010/in.yaml0000644000175000017500000000000514556031650022115 0ustar tinatina- -1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/010/out.yaml0000644000175000017500000000000514556031650022316 0ustar tinatina- -1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/006/0000755000175000017500000000000014556031650020635 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/006/===0000644000175000017500000000003114556031650021120 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/006/test.event0000644000175000017500000000002714556031650022656 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/006/error0000644000175000017500000000000014556031650021677 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/006/in.yaml0000644000175000017500000000000414556031650022121 0ustar tinatina? - YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/006/out.yaml0000644000175000017500000000001014556031650022317 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/004/0000755000175000017500000000000014556031650020633 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/004/===0000644000175000017500000000003114556031650021116 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/004/test.event0000644000175000017500000000002714556031650022654 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/004/error0000644000175000017500000000000014556031650021675 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/004/in.yaml0000644000175000017500000000000414556031650022117 0ustar tinatina- - YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/004/out.yaml0000644000175000017500000000001014556031650022315 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/003/0000755000175000017500000000000014556031650020632 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/003/===0000644000175000017500000000003114556031650021115 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/003/test.event0000644000175000017500000000002714556031650022653 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/003/error0000644000175000017500000000000014556031650021674 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/003/in.yaml0000644000175000017500000000002214556031650022116 0ustar tinatina- [ foo, foo ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/003/out.yaml0000644000175000017500000000001014556031650022314 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/005/0000755000175000017500000000000014556031650020634 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/005/===0000644000175000017500000000003114556031650021117 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/005/test.event0000644000175000017500000000002714556031650022655 0ustar tinatina+STR +DOC +SEQ +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/005/error0000644000175000017500000000000014556031650021676 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/005/in.yaml0000644000175000017500000000000514556031650022121 0ustar tinatina- - YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Y79Y/005/out.yaml0000644000175000017500000000001014556031650022316 0ustar tinatina- - foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LQZ7/0000755000175000017500000000000014556031650020344 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LQZ7/in.json0000644000175000017500000000012114556031650021637 0ustar tinatina{ "implicit block key": [ { "implicit flow key": "value" } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LQZ7/===0000644000175000017500000000005614556031650020636 0ustar tinatinaSpec Example 7.4. Double Quoted Implicit Keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LQZ7/test.event0000644000175000017500000000016514556031650022370 0ustar tinatina+STR +DOC +MAP =VAL "implicit block key +SEQ [] +MAP {} =VAL "implicit flow key =VAL :value -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LQZ7/in.yaml0000644000175000017500000000007314556031650021636 0ustar tinatina"implicit block key" : [ "implicit flow key" : value, ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/LQZ7/out.yaml0000644000175000017500000000006314556031650022036 0ustar tinatina"implicit block key": - "implicit flow key": value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZW3/0000755000175000017500000000000014556031650020333 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZW3/in.json0000644000175000017500000000010214556031650021625 0ustar tinatina[ { "bla\"keks": "foo" }, { "bla]keks": "foo" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZW3/===0000644000175000017500000000002514556031650020621 0ustar tinatinaLookahead test cases YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZW3/test.event0000644000175000017500000000014414556031650022354 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :bla"keks =VAL :foo -MAP +MAP =VAL :bla]keks =VAL :foo -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AZW3/in.yaml0000644000175000017500000000004014556031650021617 0ustar tinatina- bla"keks: foo - bla]keks: foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4UYU/0000755000175000017500000000000014556031650020355 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4UYU/in.json0000644000175000017500000000002214556031650021650 0ustar tinatina"foo: bar\": baz" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4UYU/===0000644000175000017500000000003614556031650020645 0ustar tinatinaColon in Double Quoted String YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4UYU/test.event0000644000175000017500000000005114556031650022373 0ustar tinatina+STR +DOC =VAL "foo: bar": baz -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4UYU/in.yaml0000644000175000017500000000002214556031650021641 0ustar tinatina"foo: bar\": baz" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SR86/0000755000175000017500000000000014556031650020311 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SR86/===0000644000175000017500000000002214556031650020574 0ustar tinatinaAnchor plus Alias YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SR86/test.event0000644000175000017500000000006414556031650022333 0ustar tinatina+STR +DOC +MAP =VAL :key1 =VAL &a :value =VAL :key2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SR86/error0000644000175000017500000000000014556031650021353 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SR86/in.yaml0000644000175000017500000000003314556031650021577 0ustar tinatinakey1: &a value key2: &b *a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2DT/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2DT/in.json0000644000175000017500000000010214556031650021575 0ustar tinatina{ "adjacent": "value", "readable": "value", "empty": null } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2DT/===0000644000175000017500000000006014556031650020570 0ustar tinatinaSpec Example 7.18. Flow Mapping Adjacent Values YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2DT/test.event0000644000175000017500000000015214556031650022323 0ustar tinatina+STR +DOC +MAP {} =VAL "adjacent =VAL :value =VAL "readable =VAL :value =VAL "empty =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2DT/in.yaml0000644000175000017500000000006214556031650021573 0ustar tinatina{ "adjacent":value, "readable": value, "empty": } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2DT/out.yaml0000644000175000017500000000005514556031650021776 0ustar tinatina"adjacent": value "readable": value "empty": YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FTA2/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FTA2/in.json0000644000175000017500000000001214556031650021575 0ustar tinatina[ "a" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FTA2/===0000644000175000017500000000007614556031650020577 0ustar tinatinaSingle block sequence with anchor and explicit document start YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FTA2/test.event0000644000175000017500000000006414556031650022325 0ustar tinatina+STR +DOC --- +SEQ &sequence =VAL :a -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FTA2/in.yaml0000644000175000017500000000002214556031650021567 0ustar tinatina--- &sequence - a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FTA2/out.yaml0000644000175000017500000000002214556031650021770 0ustar tinatina--- &sequence - a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3C3/0000755000175000017500000000000014556031650020264 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3C3/in.json0000644000175000017500000000000614556031650021561 0ustar tinatina"foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3C3/===0000644000175000017500000000004714556031650020556 0ustar tinatinaSpec Example 6.16. “TAG” directive YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3C3/test.event0000644000175000017500000000007214556031650022305 0ustar tinatina+STR +DOC --- =VAL "foo -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3C3/in.yaml0000644000175000017500000000006314556031650021555 0ustar tinatina%TAG !yaml! tag:yaml.org,2002: --- !yaml!str "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3C3/out.yaml0000644000175000017500000000002014556031650021747 0ustar tinatina--- !!str "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J5UC/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J5UC/in.json0000644000175000017500000000006614556031650021620 0ustar tinatina{ "foo": "blue", "bar": "arrr", "baz": "jazz" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J5UC/===0000644000175000017500000000003414556031650020603 0ustar tinatinaMultiple Pair Block Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J5UC/test.event0000644000175000017500000000013514556031650022336 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :blue =VAL :bar =VAL :arrr =VAL :baz =VAL :jazz -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J5UC/in.yaml0000644000175000017500000000003614556031650021606 0ustar tinatinafoo: blue bar: arrr baz: jazz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SBG9/0000755000175000017500000000000014556031650020313 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SBG9/===0000644000175000017500000000003614556031647020611 0ustar tinatinaFlow Sequence in Flow Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SBG9/test.event0000644000175000017500000000015314556031650022334 0ustar tinatina+STR +DOC +MAP {} =VAL :a +SEQ [] =VAL :b =VAL :c -SEQ +SEQ [] =VAL :d =VAL :e -SEQ =VAL :f -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SBG9/in.yaml0000644000175000017500000000002714556031650021604 0ustar tinatina{a: [b, c], [d, e]: f} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SBG9/out.yaml0000644000175000017500000000003314556031650022002 0ustar tinatinaa: - b - c ? - d - e : f YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BU8L/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BU8L/in.json0000644000175000017500000000004014556031650021614 0ustar tinatina{ "key": { "a": "b" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BU8L/===0000644000175000017500000000004614556031650020612 0ustar tinatinaNode Anchor and Tag on Seperate Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BU8L/test.event0000644000175000017500000000014214556031650022340 0ustar tinatina+STR +DOC +MAP =VAL :key +MAP &anchor =VAL :a =VAL :b -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BU8L/in.yaml0000644000175000017500000000003314556031650021607 0ustar tinatinakey: &anchor !!map a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BU8L/out.yaml0000644000175000017500000000003214556031650022007 0ustar tinatinakey: &anchor !!map a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/98YD/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/98YD/in.json0000644000175000017500000000000014556031650021573 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/98YD/===0000644000175000017500000000004414556031650020573 0ustar tinatinaSpec Example 5.5. Comment Indicator YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/98YD/test.event0000644000175000017500000000001214556031650022317 0ustar tinatina+STR -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/98YD/in.yaml0000644000175000017500000000002014556031650021566 0ustar tinatina# Comment only. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/98YD/out.yaml0000644000175000017500000000000014556031650021765 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K54U/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K54U/in.json0000644000175000017500000000001114556031650021570 0ustar tinatina"scalar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K54U/===0000644000175000017500000000003214556031647020571 0ustar tinatinaTab after document header YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K54U/test.event0000644000175000017500000000004514556031650022320 0ustar tinatina+STR +DOC --- =VAL :scalar -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K54U/in.yaml0000644000175000017500000000001314556031650021563 0ustar tinatina--- scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K54U/out.yaml0000644000175000017500000000001314556031650021764 0ustar tinatina--- scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W42U/0000755000175000017500000000000014556031650020310 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W42U/in.json0000644000175000017500000000012514556031650021607 0ustar tinatina[ null, "block node\n", [ "one", "two" ], { "one": "two" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W42U/===0000644000175000017500000000005614556031650020602 0ustar tinatinaSpec Example 8.15. Block Sequence Entry Types YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W42U/test.event0000644000175000017500000000016414556031650022333 0ustar tinatina+STR +DOC +SEQ =VAL : =VAL |block node\n +SEQ =VAL :one =VAL :two -SEQ +MAP =VAL :one =VAL :two -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W42U/in.yaml0000644000175000017500000000013414556031650021600 0ustar tinatina- # Empty - | block node - - one # Compact - two # sequence - one: two # Compact mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W42U/out.yaml0000644000175000017500000000005614556031650022004 0ustar tinatina- - | block node - - one - two - one: two YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMW/0000755000175000017500000000000014556031650020340 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMW/===0000644000175000017500000000003514556031650020627 0ustar tinatinaSingle Pair Implicit Entries YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMW/test.event0000644000175000017500000000032714556031650022364 0ustar tinatina+STR +DOC +SEQ +SEQ [] +MAP {} =VAL :YAML =VAL :separate -MAP -SEQ +SEQ [] +MAP {} =VAL "JSON like =VAL :adjacent -MAP -SEQ +SEQ [] +MAP {} +MAP {} =VAL :JSON =VAL :like -MAP =VAL :adjacent -MAP -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMW/in.yaml0000644000175000017500000000011514556031650021627 0ustar tinatina- [ YAML : separate ] - [ "JSON like":adjacent ] - [ {JSON: like}:adjacent ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MMW/out.yaml0000644000175000017500000000011514556031650022030 0ustar tinatina- - YAML: separate - - "JSON like": adjacent - - ? JSON: like : adjacent YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FRK4/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FRK4/===0000644000175000017500000000005614556031650020607 0ustar tinatinaSpec Example 7.3. Completely Empty Flow Nodes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FRK4/test.event0000644000175000017500000000010314556031650022331 0ustar tinatina+STR +DOC +MAP {} =VAL :foo =VAL : =VAL : =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FRK4/in.yaml0000644000175000017500000000003014556031650021600 0ustar tinatina{ ? foo :, : bar, } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4RWC/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4RWC/in.json0000644000175000017500000000002214556031650021621 0ustar tinatina[ 1, 2, 3 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4RWC/===0000644000175000017500000000004614556031650020617 0ustar tinatinaTrailing spaces after flow collection YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4RWC/test.event0000644000175000017500000000007114556031650022346 0ustar tinatina+STR +DOC +SEQ [] =VAL :1 =VAL :2 =VAL :3 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4RWC/in.yaml0000644000175000017500000000002014556031650021610 0ustar tinatina [1, 2, 3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4RWC/out.yaml0000644000175000017500000000001414556031650022014 0ustar tinatina- 1 - 2 - 3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q9WF/0000755000175000017500000000000014556031650020335 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q9WF/===0000644000175000017500000000004514556031650020625 0ustar tinatinaSpec Example 6.12. Separation Spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q9WF/test.event0000644000175000017500000000021314556031650022353 0ustar tinatina+STR +DOC +MAP +MAP {} =VAL :first =VAL :Sammy =VAL :last =VAL :Sosa -MAP +MAP =VAL :hr =VAL :65 =VAL :avg =VAL :0.278 -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q9WF/in.yaml0000644000175000017500000000014114556031650021623 0ustar tinatina{ first: Sammy, last: Sosa }: # Statistics: hr: # Home runs 65 avg: # Average 0.278 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q9WF/out.yaml0000644000175000017500000000006214556031650022026 0ustar tinatina? first: Sammy last: Sosa : hr: 65 avg: 0.278 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SYW4/0000755000175000017500000000000014556031650020355 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SYW4/in.json0000644000175000017500000000005514556031650021656 0ustar tinatina{ "hr": 65, "avg": 0.278, "rbi": 147 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SYW4/===0000644000175000017500000000005514556031650020646 0ustar tinatinaSpec Example 2.2. Mapping Scalars to Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SYW4/test.event0000644000175000017500000000013214556031650022373 0ustar tinatina+STR +DOC +MAP =VAL :hr =VAL :65 =VAL :avg =VAL :0.278 =VAL :rbi =VAL :147 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SYW4/in.yaml0000644000175000017500000000012014556031650021640 0ustar tinatinahr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SYW4/out.yaml0000644000175000017500000000003314556031650022044 0ustar tinatinahr: 65 avg: 0.278 rbi: 147 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QT73/0000755000175000017500000000000014556031650020305 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QT73/in.json0000644000175000017500000000000014556031650021574 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QT73/===0000644000175000017500000000004014556031650020570 0ustar tinatinaComment and document-end marker YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QT73/test.event0000644000175000017500000000001214556031650022320 0ustar tinatina+STR -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QT73/in.yaml0000644000175000017500000000001614556031650021574 0ustar tinatina# comment ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QT73/out.yaml0000644000175000017500000000000014556031650021766 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4CQQ/0000755000175000017500000000000014556031650020317 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4CQQ/in.json0000644000175000017500000000014514556031650021620 0ustar tinatina{ "plain": "This unquoted scalar spans many lines.", "quoted": "So does this quoted scalar.\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4CQQ/===0000644000175000017500000000005314556031650020606 0ustar tinatinaSpec Example 2.18. Multi-line Flow Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4CQQ/test.event0000644000175000017500000000021014556031650022332 0ustar tinatina+STR +DOC +MAP =VAL :plain =VAL :This unquoted scalar spans many lines. =VAL :quoted =VAL "So does this quoted scalar.\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4CQQ/in.yaml0000644000175000017500000000013514556031650021610 0ustar tinatinaplain: This unquoted scalar spans many lines. quoted: "So does this quoted scalar.\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4CQQ/out.yaml0000644000175000017500000000012614556031650022011 0ustar tinatinaplain: This unquoted scalar spans many lines. quoted: "So does this quoted scalar.\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/in.json0000644000175000017500000000005714556031650021644 0ustar tinatina" 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/===0000644000175000017500000000005414556031650020631 0ustar tinatinaSpec Example 7.6. Double Quoted Lines [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/test.event0000644000175000017500000000011314556031650022356 0ustar tinatina+STR +DOC --- =VAL " 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/emit.yaml0000644000175000017500000000006314556031650022162 0ustar tinatina--- " 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/in.yaml0000644000175000017500000000006614556031650021635 0ustar tinatina--- " 1st non-empty 2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9TFX/out.yaml0000644000175000017500000000005714556031650022036 0ustar tinatina" 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/0000755000175000017500000000000014556031650020324 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/00/0000755000175000017500000000000014556031650020543 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/00/in.json0000644000175000017500000000002014556031650022034 0ustar tinatina"1 inline\ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/00/===0000644000175000017500000000003514556031650021032 0ustar tinatinaInline tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/00/test.event0000644000175000017500000000005014556031650022560 0ustar tinatina+STR +DOC =VAL "1 inline\ttab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/00/in.yaml0000644000175000017500000000002014556031650022025 0ustar tinatina"1 inline\ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/02/0000755000175000017500000000000014556031650020545 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/02/in.json0000644000175000017500000000002014556031650022036 0ustar tinatina"3 inline\ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/02/===0000644000175000017500000000003514556031650021034 0ustar tinatinaInline tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/02/test.event0000644000175000017500000000005014556031650022562 0ustar tinatina+STR +DOC =VAL "3 inline\ttab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/02/in.yaml0000644000175000017500000000001714556031650022035 0ustar tinatina"3 inline tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/02/out.yaml0000644000175000017500000000002014556031650022230 0ustar tinatina"3 inline\ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/01/0000755000175000017500000000000014556031650020544 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/01/in.json0000644000175000017500000000002014556031650022035 0ustar tinatina"2 inline\ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/01/===0000644000175000017500000000003514556031650021033 0ustar tinatinaInline tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/01/test.event0000644000175000017500000000005014556031650022561 0ustar tinatina+STR +DOC =VAL "2 inline\ttab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/01/in.yaml0000644000175000017500000000002014556031650022026 0ustar tinatina"2 inline\ tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/KH5V/01/out.yaml0000644000175000017500000000002014556031650022227 0ustar tinatina"2 inline\ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5GBF/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5GBF/in.json0000644000175000017500000000012514556031650021571 0ustar tinatina{ "Folding": "Empty line\nas a line feed", "Chomping": "Clipped empty lines\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5GBF/===0000644000175000017500000000003614556031650020562 0ustar tinatinaSpec Example 6.5. Empty Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5GBF/test.event0000644000175000017500000000017014556031650022312 0ustar tinatina+STR +DOC +MAP =VAL :Folding =VAL "Empty line\nas a line feed =VAL :Chomping =VAL |Clipped empty lines\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5GBF/in.yaml0000644000175000017500000000012314556031650021560 0ustar tinatinaFolding: "Empty line as a line feed" Chomping: | Clipped empty lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5GBF/out.yaml0000644000175000017500000000011014556031650021755 0ustar tinatinaFolding: "Empty line\nas a line feed" Chomping: | Clipped empty lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CT4Q/0000755000175000017500000000000014556031650020322 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CT4Q/in.json0000644000175000017500000000004114556031650021616 0ustar tinatina[ { "foo bar": "baz" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CT4Q/===0000644000175000017500000000005614556031650020614 0ustar tinatinaSpec Example 7.20. Single Pair Explicit Entry YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CT4Q/test.event0000644000175000017500000000010614556031650022341 0ustar tinatina+STR +DOC +SEQ [] +MAP {} =VAL :foo bar =VAL :baz -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CT4Q/in.yaml0000644000175000017500000000002514556031650021611 0ustar tinatina[ ? foo bar : baz ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CT4Q/out.yaml0000644000175000017500000000001714556031650022013 0ustar tinatina- foo bar: baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/in.json0000644000175000017500000000007214556031650021604 0ustar tinatina"folded to a space,\nto a line feed, or \t \tnon-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/===0000644000175000017500000000006214556031650020573 0ustar tinatinaSpec Example 7.5. Double Quoted Line Breaks [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/test.event0000644000175000017500000000012614556031650022325 0ustar tinatina+STR +DOC --- =VAL "folded to a space,\nto a line feed, or \t \tnon-content -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/emit.yaml0000644000175000017500000000007614556031650022131 0ustar tinatina--- "folded to a space,\nto a line feed, or \t \tnon-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/in.yaml0000644000175000017500000000010214556031650021567 0ustar tinatina--- "folded to a space, to a line feed, or \ \ non-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q8AD/out.yaml0000644000175000017500000000007214556031650021776 0ustar tinatina"folded to a space,\nto a line feed, or \t \tnon-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G992/0000755000175000017500000000000014556031650020241 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G992/in.json0000644000175000017500000000002014556031650021532 0ustar tinatina"folded text\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G992/===0000644000175000017500000000004014556031647020532 0ustar tinatinaSpec Example 8.9. Folded Scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G992/test.event0000644000175000017500000000005014556031650022256 0ustar tinatina+STR +DOC =VAL >folded text\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G992/in.yaml0000644000175000017500000000002214556031650021525 0ustar tinatina> folded text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G992/out.yaml0000644000175000017500000000002014556031650021724 0ustar tinatina> folded text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6SLA/0000755000175000017500000000000014556031650020314 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6SLA/in.json0000644000175000017500000000010514556031650021611 0ustar tinatina{ "foo\nbar:baz\tx \\$%^&*()x": 23, "x\\ny:z\\tx $%^&*()x": 24 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6SLA/===0000644000175000017500000000005114556031650020601 0ustar tinatinaAllowed characters in quoted mapping key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6SLA/test.event0000644000175000017500000000015414556031650022336 0ustar tinatina+STR +DOC +MAP =VAL "foo\nbar:baz\tx \\$%^&*()x =VAL :23 =VAL 'x\\ny:z\\tx $%^&*()x =VAL :24 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6SLA/in.yaml0000644000175000017500000000007214556031650021605 0ustar tinatina"foo\nbar:baz\tx \\$%^&*()x": 23 'x\ny:z\tx $%^&*()x': 24 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6SLA/out.yaml0000644000175000017500000000007514556031650022011 0ustar tinatina? "foo\nbar:baz\tx \\$%^&*()x" : 23 'x\ny:z\tx $%^&*()x': 24 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SY6V/0000755000175000017500000000000014556031650020356 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SY6V/===0000644000175000017500000000005214556031650020644 0ustar tinatinaAnchor before sequence entry on same line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SY6V/test.event0000644000175000017500000000000514556031650022373 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SY6V/error0000644000175000017500000000000014556031650021420 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SY6V/in.yaml0000644000175000017500000000003114556031650021642 0ustar tinatina&anchor - sequence entry YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R52L/0000755000175000017500000000000014556031650020273 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R52L/in.json0000644000175000017500000000014514556031650021574 0ustar tinatina{ "top1": [ "item1", { "key2": "value2" }, "item3" ], "top2": "value2" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R52L/===0000644000175000017500000000005214556031650020561 0ustar tinatinaNested flow mapping sequence and mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R52L/test.event0000644000175000017500000000022214556031650022311 0ustar tinatina+STR +DOC --- +MAP {} =VAL :top1 +SEQ [] =VAL :item1 +MAP {} =VAL :key2 =VAL :value2 -MAP =VAL :item3 -SEQ =VAL :top2 =VAL :value2 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R52L/in.yaml0000644000175000017500000000007314556031650021565 0ustar tinatina--- { top1: [item1, {key2: value2}, item3], top2: value2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/R52L/out.yaml0000644000175000017500000000006614556031650021770 0ustar tinatina--- top1: - item1 - key2: value2 - item3 top2: value2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K858/0000755000175000017500000000000014556031650020246 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K858/in.json0000644000175000017500000000006014556031650021543 0ustar tinatina{ "strip": "", "clip": "", "keep": "\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K858/===0000644000175000017500000000005014556031650020532 0ustar tinatinaSpec Example 8.6. Empty Scalar Chomping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K858/test.event0000644000175000017500000000012714556031650022270 0ustar tinatina+STR +DOC +MAP =VAL :strip =VAL > =VAL :clip =VAL > =VAL :keep =VAL |\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K858/in.yaml0000644000175000017500000000003614556031650021537 0ustar tinatinastrip: >- clip: > keep: |+ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K858/out.yaml0000644000175000017500000000004214556031650021735 0ustar tinatinastrip: "" clip: "" keep: |2+ ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P94K/0000755000175000017500000000000014556031650020276 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P94K/in.json0000644000175000017500000000002514556031650021574 0ustar tinatina{ "key": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P94K/===0000644000175000017500000000004714556031650020570 0ustar tinatinaSpec Example 6.11. Multi-Line Comments YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P94K/test.event0000644000175000017500000000006414556031650022320 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P94K/in.yaml0000644000175000017500000000005414556031650021567 0ustar tinatinakey: # Comment # lines value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P94K/out.yaml0000644000175000017500000000001314556031650021763 0ustar tinatinakey: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JTV5/0000755000175000017500000000000014556031650020337 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JTV5/in.json0000644000175000017500000000005114556031650021634 0ustar tinatina{ "a true": "null d", "e 42": null } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JTV5/===0000644000175000017500000000004514556031650020627 0ustar tinatinaBlock Mapping with Multiline Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JTV5/test.event0000644000175000017500000000011214556031650022353 0ustar tinatina+STR +DOC +MAP =VAL :a true =VAL :null d =VAL :e 42 =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JTV5/in.yaml0000644000175000017500000000003714556031650021631 0ustar tinatina? a true : null d ? e 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JTV5/out.yaml0000644000175000017500000000002514556031650022027 0ustar tinatinaa true: null d e 42: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FUP4/0000755000175000017500000000000014556031650020325 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FUP4/in.json0000644000175000017500000000004414556031650021624 0ustar tinatina[ "a", [ "b", "c" ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FUP4/===0000644000175000017500000000003714556031647020624 0ustar tinatinaFlow Sequence in Flow Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FUP4/test.event0000644000175000017500000000010614556031650022344 0ustar tinatina+STR +DOC +SEQ [] =VAL :a +SEQ [] =VAL :b =VAL :c -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FUP4/in.yaml0000644000175000017500000000001414556031650021612 0ustar tinatina[a, [b, c]] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FUP4/out.yaml0000644000175000017500000000002014556031650022010 0ustar tinatina- a - - b - c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3R3P/0000755000175000017500000000000014556031650020276 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3R3P/in.json0000644000175000017500000000001214556031650021570 0ustar tinatina[ "a" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3R3P/===0000644000175000017500000000004214556031650020563 0ustar tinatinaSingle block sequence with anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3R3P/test.event0000644000175000017500000000006014556031650022314 0ustar tinatina+STR +DOC +SEQ &sequence =VAL :a -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3R3P/in.yaml0000644000175000017500000000001614556031650021565 0ustar tinatina&sequence - a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3R3P/out.yaml0000644000175000017500000000001614556031650021766 0ustar tinatina&sequence - a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8G76/0000755000175000017500000000000014556031650020242 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8G76/in.json0000644000175000017500000000000014556031650021531 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8G76/===0000644000175000017500000000004114556031650020526 0ustar tinatinaSpec Example 6.10. Comment Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8G76/test.event0000644000175000017500000000001214556031650022255 0ustar tinatina+STR -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8G76/in.yaml0000644000175000017500000000002214556031650021526 0ustar tinatina # Comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8G76/out.yaml0000644000175000017500000000000014556031650021723 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6KGN/0000755000175000017500000000000014556031650020314 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6KGN/in.json0000644000175000017500000000003514556031650021613 0ustar tinatina{ "a": null, "b": null } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6KGN/===0000644000175000017500000000002614556031650020603 0ustar tinatinaAnchor for empty node YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6KGN/test.event0000644000175000017500000000011614556031650022334 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL &anchor : =VAL :b =ALI *anchor -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6KGN/in.yaml0000644000175000017500000000003214556031650021601 0ustar tinatina--- a: &anchor b: *anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6KGN/out.yaml0000644000175000017500000000003214556031650022002 0ustar tinatina--- a: &anchor b: *anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RLU9/0000755000175000017500000000000014556031650020342 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RLU9/in.json0000644000175000017500000000006114556031650021640 0ustar tinatina{ "foo": [ 42 ], "bar": [ 44 ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RLU9/===0000644000175000017500000000002014556031650020623 0ustar tinatinaSequence Indent YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RLU9/test.event0000644000175000017500000000013014556031650022356 0ustar tinatina+STR +DOC +MAP =VAL :foo +SEQ =VAL :42 -SEQ =VAL :bar +SEQ =VAL :44 -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RLU9/in.yaml0000644000175000017500000000002614556031650021632 0ustar tinatinafoo: - 42 bar: - 44 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RLU9/out.yaml0000644000175000017500000000002414556031650022031 0ustar tinatinafoo: - 42 bar: - 44 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5MUD/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5MUD/in.json0000644000175000017500000000002314556031650021615 0ustar tinatina{ "foo": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5MUD/===0000644000175000017500000000004614556031650020612 0ustar tinatinaColon and adjacent value on next line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5MUD/test.event0000644000175000017500000000007114556031650022341 0ustar tinatina+STR +DOC --- +MAP {} =VAL "foo =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5MUD/in.yaml0000644000175000017500000000002514556031650021610 0ustar tinatina--- { "foo" :bar } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5MUD/out.yaml0000644000175000017500000000001714556031650022012 0ustar tinatina--- "foo": bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/27NA/0000755000175000017500000000000014556031650020256 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/27NA/in.json0000644000175000017500000000000714556031650021554 0ustar tinatina"text" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/27NA/===0000644000175000017500000000004614556031650020547 0ustar tinatinaSpec Example 5.9. Directive Indicator YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/27NA/test.event0000644000175000017500000000004314556031650022275 0ustar tinatina+STR +DOC --- =VAL :text -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/27NA/in.yaml0000644000175000017500000000002314556031650021543 0ustar tinatina%YAML 1.2 --- text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/27NA/out.yaml0000644000175000017500000000001114556031650021741 0ustar tinatina--- text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7ZZ5/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7ZZ5/in.json0000644000175000017500000000021314556031650021623 0ustar tinatina{ "nested sequences": [ [ [ [] ] ], [ [ {} ] ] ], "key1": [], "key2": {} } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7ZZ5/===0000644000175000017500000000002714556031650020616 0ustar tinatinaEmpty flow collections YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7ZZ5/test.event0000644000175000017500000000026514556031650022353 0ustar tinatina+STR +DOC --- +MAP =VAL :nested sequences +SEQ +SEQ +SEQ +SEQ [] -SEQ -SEQ -SEQ +SEQ +SEQ +MAP {} -MAP -SEQ -SEQ -SEQ =VAL :key1 +SEQ [] -SEQ =VAL :key2 +MAP {} -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7ZZ5/in.yaml0000644000175000017500000000007214556031650021617 0ustar tinatina--- nested sequences: - - - [] - - - {} key1: [] key2: {} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7ZZ5/out.yaml0000644000175000017500000000007214556031650022020 0ustar tinatina--- nested sequences: - - - [] - - - {} key1: [] key2: {} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SKE5/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SKE5/in.json0000644000175000017500000000004414556031650021615 0ustar tinatina{ "seq": [ "a", "b" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SKE5/===0000644000175000017500000000004514556031650020606 0ustar tinatinaAnchor before zero indented sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SKE5/test.event0000644000175000017500000000011614556031650022336 0ustar tinatina+STR +DOC --- +MAP =VAL :seq +SEQ &anchor =VAL :a =VAL :b -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SKE5/in.yaml0000644000175000017500000000003214556031650021603 0ustar tinatina--- seq: &anchor - a - b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SKE5/out.yaml0000644000175000017500000000003114556031650022003 0ustar tinatina--- seq: &anchor - a - b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D9TU/0000755000175000017500000000000014556031650020334 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D9TU/in.json0000644000175000017500000000002314556031650021630 0ustar tinatina{ "foo": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D9TU/===0000644000175000017500000000003214556031650020620 0ustar tinatinaSingle Pair Block Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D9TU/test.event0000644000175000017500000000006214556031650022354 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D9TU/in.yaml0000644000175000017500000000001114556031650021616 0ustar tinatinafoo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TE2A/0000755000175000017500000000000014556031650020302 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TE2A/in.json0000644000175000017500000000006014556031650021577 0ustar tinatina{ "block mapping": { "key": "value" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TE2A/===0000644000175000017500000000004214556031650020567 0ustar tinatinaSpec Example 8.16. Block Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TE2A/test.event0000644000175000017500000000012214556031650022317 0ustar tinatina+STR +DOC +MAP =VAL :block mapping +MAP =VAL :key =VAL :value -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TE2A/in.yaml0000644000175000017500000000003314556031650021570 0ustar tinatinablock mapping: key: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TE2A/out.yaml0000644000175000017500000000003414556031650021772 0ustar tinatinablock mapping: key: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YJV2/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YJV2/===0000644000175000017500000000002614556031650020630 0ustar tinatinaDash in flow sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YJV2/test.event0000644000175000017500000000002214556031650022355 0ustar tinatina+STR +DOC +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YJV2/error0000644000175000017500000000000014556031650021403 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YJV2/in.yaml0000644000175000017500000000000414556031650021625 0ustar tinatina[-] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XDJ/0000755000175000017500000000000014556031650020324 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XDJ/===0000644000175000017500000000004114556031647020616 0ustar tinatinaComment in plain multiline value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XDJ/test.event0000644000175000017500000000004514556031650022345 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL :word1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XDJ/error0000644000175000017500000000000014556031650021366 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8XDJ/in.yaml0000644000175000017500000000003214556031650021611 0ustar tinatinakey: word1 # xxx word2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UT92/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UT92/in.json0000644000175000017500000000003314556031650021607 0ustar tinatina{ "matches %": 20 } null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UT92/===0000644000175000017500000000004514556031650020602 0ustar tinatinaSpec Example 9.4. Explicit Documents YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UT92/test.event0000644000175000017500000000013314556031650022331 0ustar tinatina+STR +DOC --- +MAP {} =VAL :matches % =VAL :20 -MAP -DOC ... +DOC --- =VAL : -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UT92/in.yaml0000644000175000017500000000005314556031650021602 0ustar tinatina--- { matches % : 20 } ... --- # Empty ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UT92/out.yaml0000644000175000017500000000003614556031650022004 0ustar tinatina--- matches %: 20 ... --- ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5C5M/0000755000175000017500000000000014556031650020260 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5C5M/in.json0000644000175000017500000000014314556031650021557 0ustar tinatina[ { "one": "two", "three": "four" }, { "five": "six", "seven": "eight" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5C5M/===0000644000175000017500000000004114556031650020544 0ustar tinatinaSpec Example 7.15. Flow Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5C5M/test.event0000644000175000017500000000022014556031650022274 0ustar tinatina+STR +DOC +SEQ +MAP {} =VAL :one =VAL :two =VAL :three =VAL :four -MAP +MAP {} =VAL :five =VAL :six =VAL :seven =VAL :eight -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5C5M/in.yaml0000644000175000017500000000007414556031650021553 0ustar tinatina- { one : two , three: four , } - {five: six,seven : eight} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/5C5M/out.yaml0000644000175000017500000000006414556031650021753 0ustar tinatina- one: two three: four - five: six seven: eight YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/57H4/0000755000175000017500000000000014556031650020236 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/57H4/in.json0000644000175000017500000000014514556031650021537 0ustar tinatina{ "sequence": [ "entry", [ "nested" ] ], "mapping": { "foo": "bar" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/57H4/===0000644000175000017500000000005214556031650020524 0ustar tinatinaSpec Example 8.22. Block Collection Nodes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/57H4/test.event0000644000175000017500000000031614556031650022260 0ustar tinatina+STR +DOC +MAP =VAL :sequence +SEQ =VAL :entry +SEQ =VAL :nested -SEQ -SEQ =VAL :mapping +MAP =VAL :foo =VAL :bar -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/57H4/in.yaml0000644000175000017500000000010314556031650021522 0ustar tinatinasequence: !!seq - entry - !!seq - nested mapping: !!map foo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/57H4/out.yaml0000644000175000017500000000010514556031650021725 0ustar tinatinasequence: !!seq - entry - !!seq - nested mapping: !!map foo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QLJ7/0000755000175000017500000000000014556031650020324 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QLJ7/===0000644000175000017500000000007614556031650020620 0ustar tinatinaTag shorthand used in documents but only defined in the first YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QLJ7/test.event0000644000175000017500000000011714556031650022345 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QLJ7/error0000644000175000017500000000000014556031650021366 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QLJ7/in.yaml0000644000175000017500000000013514556031650021615 0ustar tinatina%TAG !prefix! tag:example.com,2011: --- !prefix!A a: b --- !prefix!B c: d --- !prefix!C e: f YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZCZ6/0000755000175000017500000000000014556031650020343 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZCZ6/===0000644000175000017500000000005314556031650020632 0ustar tinatinaInvalid mapping in plain single line value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZCZ6/test.event0000644000175000017500000000002714556031650022364 0ustar tinatina+STR +DOC +MAP =VAL :a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZCZ6/error0000644000175000017500000000000014556031650021405 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZCZ6/in.yaml0000644000175000017500000000001314556031650021627 0ustar tinatinaa: b: c: d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G9HC/0000755000175000017500000000000014556031650020301 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G9HC/===0000644000175000017500000000005114556031650020566 0ustar tinatinaInvalid anchor in zero indented sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G9HC/test.event0000644000175000017500000000003514556031650022321 0ustar tinatina+STR +DOC --- +MAP =VAL :seq YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G9HC/error0000644000175000017500000000000014556031650021343 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/G9HC/in.yaml0000644000175000017500000000003114556031650021565 0ustar tinatina--- seq: &anchor - a - b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MXS3/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MXS3/in.json0000644000175000017500000000003114556031650021634 0ustar tinatina[ { "a": "b" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MXS3/===0000644000175000017500000000003714556031650020632 0ustar tinatinaFlow Mapping in Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MXS3/test.event0000644000175000017500000000007314556031650022363 0ustar tinatina+STR +DOC +SEQ +MAP {} =VAL :a =VAL :b -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MXS3/in.yaml0000644000175000017500000000001114556031650021623 0ustar tinatina- {a: b} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MXS3/out.yaml0000644000175000017500000000000714556031650022031 0ustar tinatina- a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z9M4/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z9M4/in.json0000644000175000017500000000001414556031650021606 0ustar tinatina[ "bar" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z9M4/===0000644000175000017500000000004514556031650020602 0ustar tinatinaSpec Example 6.22. Global Tag Prefix YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z9M4/test.event0000644000175000017500000000011314556031650022327 0ustar tinatina+STR +DOC --- +SEQ =VAL "bar -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z9M4/in.yaml0000644000175000017500000000006614556031650021606 0ustar tinatina%TAG !e! tag:example.com,2000:app/ --- - !e!foo "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z9M4/out.yaml0000644000175000017500000000005414556031650022004 0ustar tinatina--- - ! "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CFD4/0000755000175000017500000000000014556031650020267 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CFD4/===0000644000175000017500000000006114556031650020555 0ustar tinatinaEmpty implicit key in single pair flow sequences YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CFD4/test.event0000644000175000017500000000021014556031650022302 0ustar tinatina+STR +DOC +SEQ +SEQ [] +MAP {} =VAL : =VAL :empty key -MAP -SEQ +SEQ [] +MAP {} =VAL : =VAL :another empty key -MAP -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CFD4/in.yaml0000644000175000017500000000005214556031650021556 0ustar tinatina- [ : empty key ] - [: another empty key] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CFD4/out.yaml0000644000175000017500000000005014556031650021755 0ustar tinatina- - : empty key - - : another empty key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CUP7/0000755000175000017500000000000014556031650020325 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CUP7/in.json0000644000175000017500000000005614556031650021627 0ustar tinatina{ "anchored": "value", "alias": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CUP7/===0000644000175000017500000000005314556031650020614 0ustar tinatinaSpec Example 5.6. Node Property Indicators YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CUP7/test.event0000644000175000017500000000014314556031650022345 0ustar tinatina+STR +DOC +MAP =VAL :anchored =VAL &anchor :value =VAL :alias =ALI *anchor -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CUP7/in.yaml0000644000175000017500000000005614556031650021620 0ustar tinatinaanchored: !local &anchor value alias: *anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CUP7/out.yaml0000644000175000017500000000005614556031650022021 0ustar tinatinaanchored: &anchor !local value alias: *anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NAT4/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NAT4/in.json0000644000175000017500000000015314556031650021615 0ustar tinatina{ "a": " ", "b": " ", "c": " ", "d": " ", "e": "\n", "f": "\n", "g": "\n\n", "h": "\n\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NAT4/===0000644000175000017500000000005514556031650020606 0ustar tinatinaVarious empty or newline only quoted strings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NAT4/test.event0000644000175000017500000000025214556031650022336 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL ' =VAL :b =VAL ' =VAL :c =VAL " =VAL :d =VAL " =VAL :e =VAL '\n =VAL :f =VAL "\n =VAL :g =VAL '\n\n =VAL :h =VAL "\n\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NAT4/emit.yaml0000644000175000017500000000010714556031650022135 0ustar tinatina--- a: ' ' b: ' ' c: " " d: " " e: ' ' f: "\n" g: ' ' h: "\n\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NAT4/in.yaml0000644000175000017500000000012614556031650021606 0ustar tinatina--- a: ' ' b: ' ' c: " " d: " " e: ' ' f: " " g: ' ' h: " " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FBC9/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FBC9/in.json0000644000175000017500000000026214556031650021573 0ustar tinatina{ "safe": "a!\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~ !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~", "safe question mark": "?foo", "safe colon": ":foo", "safe dash": "-foo" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FBC9/===0000644000175000017500000000004414556031650020561 0ustar tinatinaAllowed characters in plain scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FBC9/test.event0000644000175000017500000000033314556031650022313 0ustar tinatina+STR +DOC +MAP =VAL :safe =VAL :a!"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~ !"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~ =VAL :safe question mark =VAL :?foo =VAL :safe colon =VAL ::foo =VAL :safe dash =VAL :-foo -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FBC9/in.yaml0000644000175000017500000000022414556031650021562 0ustar tinatinasafe: a!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ safe question mark: ?foo safe colon: :foo safe dash: -foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FBC9/out.yaml0000644000175000017500000000021714556031650021765 0ustar tinatinasafe: a!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ safe question mark: ?foo safe colon: :foo safe dash: -foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q4CL/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q4CL/===0000644000175000017500000000004414556031650020601 0ustar tinatinaTrailing content after quoted value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q4CL/test.event0000644000175000017500000000010114556031650022324 0ustar tinatina+STR +DOC +MAP =VAL :key1 =VAL "quoted1 =VAL :key2 =VAL "quoted2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q4CL/error0000644000175000017500000000000014556031650021354 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q4CL/in.yaml0000644000175000017500000000010114556031650021574 0ustar tinatinakey1: "quoted1" key2: "quoted2" trailing content key3: "quoted3" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K3WX/0000755000175000017500000000000014556031650020343 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K3WX/in.json0000644000175000017500000000002314556031650021637 0ustar tinatina{ "foo": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K3WX/===0000644000175000017500000000006414556031650020634 0ustar tinatinaColon and adjacent value after comment on next line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K3WX/test.event0000644000175000017500000000007114556031650022363 0ustar tinatina+STR +DOC --- +MAP {} =VAL "foo =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K3WX/in.yaml0000644000175000017500000000003714556031650021635 0ustar tinatina--- { "foo" # comment :bar } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/K3WX/out.yaml0000644000175000017500000000001714556031650022034 0ustar tinatina--- "foo": bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/229Q/0000755000175000017500000000000014556031650020244 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/229Q/in.json0000644000175000017500000000021114556031650021537 0ustar tinatina[ { "name": "Mark McGwire", "hr": 65, "avg": 0.278 }, { "name": "Sammy Sosa", "hr": 63, "avg": 0.288 } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/229Q/===0000644000175000017500000000004714556031650020536 0ustar tinatinaSpec Example 2.4. Sequence of Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/229Q/test.event0000644000175000017500000000027414556031650022271 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :name =VAL :Mark McGwire =VAL :hr =VAL :65 =VAL :avg =VAL :0.278 -MAP +MAP =VAL :name =VAL :Sammy Sosa =VAL :hr =VAL :63 =VAL :avg =VAL :0.288 -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/229Q/in.yaml0000644000175000017500000000013614556031650021536 0ustar tinatina- name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/229Q/out.yaml0000644000175000017500000000012414556031650021734 0ustar tinatina- name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4V8U/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4V8U/in.json0000644000175000017500000000004214556031650021612 0ustar tinatina"plain\\value\\with\\backslashes" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4V8U/===0000644000175000017500000000003614556031650020605 0ustar tinatinaPlain scalar with backslashes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4V8U/test.event0000644000175000017500000000007614556031650022342 0ustar tinatina+STR +DOC --- =VAL :plain\\value\\with\\backslashes -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4V8U/in.yaml0000644000175000017500000000004114556031650021602 0ustar tinatina--- plain\value\with\backslashes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4V8U/out.yaml0000644000175000017500000000004114556031650022003 0ustar tinatina--- plain\value\with\backslashes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D88J/0000755000175000017500000000000014556031650020264 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D88J/in.json0000644000175000017500000000004214556031650021561 0ustar tinatina{ "a": [ "b", "c" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D88J/===0000644000175000017500000000003714556031650020555 0ustar tinatinaFlow Sequence in Block Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D88J/test.event0000644000175000017500000000010314556031650022300 0ustar tinatina+STR +DOC +MAP =VAL :a +SEQ [] =VAL :b =VAL :c -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D88J/in.yaml0000644000175000017500000000001214556031650021547 0ustar tinatinaa: [b, c] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D88J/out.yaml0000644000175000017500000000001314556031650021751 0ustar tinatinaa: - b - c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KAX/0000755000175000017500000000000014556031650020323 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KAX/in.json0000644000175000017500000000020714556031650021623 0ustar tinatina"scalar1" "scalar2" "scalar3" { "key5": "value4" } { "a6": 1, "b6": 2 } { "key8": "value7" } { "key10": "value9" } "value11" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KAX/===0000644000175000017500000000005114556031650020610 0ustar tinatinaVarious combinations of tags and anchors YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KAX/test.event0000644000175000017500000000114014556031650022341 0ustar tinatina+STR +DOC --- =VAL &a1 :scalar1 -DOC +DOC --- =VAL &a2 :scalar2 -DOC +DOC --- =VAL &a3 :scalar3 -DOC +DOC --- +MAP &a4 =VAL &a5 :key5 =VAL :value4 -MAP -DOC +DOC --- +MAP =VAL :a6 =VAL :1 =VAL &anchor6 :b6 =VAL :2 -MAP -DOC +DOC --- +MAP =VAL &a8 :key8 =VAL :value7 -MAP -DOC +DOC --- +MAP =VAL &a10 :key10 =VAL :value9 -MAP -DOC +DOC --- =VAL &a11 :value11 -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KAX/in.yaml0000644000175000017500000000033314556031650021614 0ustar tinatina--- &a1 !!str scalar1 --- !!str &a2 scalar2 --- &a3 !!str scalar3 --- &a4 !!map &a5 !!str key5: value4 --- a6: 1 &anchor6 b6: 2 --- !!map &a8 !!str key8: value7 --- !!map !!str &a10 key10: value9 --- !!str &a11 value11 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9KAX/out.yaml0000644000175000017500000000033314556031650022015 0ustar tinatina--- &a1 !!str scalar1 --- &a2 !!str scalar2 --- &a3 !!str scalar3 --- &a4 !!map &a5 !!str key5: value4 --- a6: 1 &anchor6 b6: 2 --- !!map &a8 !!str key8: value7 --- !!map &a10 !!str key10: value9 --- &a11 !!str value11 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U9NS/0000755000175000017500000000000014556031650020345 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U9NS/in.json0000644000175000017500000000023514556031650021646 0ustar tinatina{ "time": "20:03:20", "player": "Sammy Sosa", "action": "strike (miss)" } { "time": "20:03:47", "player": "Sammy Sosa", "action": "grand slam" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U9NS/===0000644000175000017500000000006014556031650020632 0ustar tinatinaSpec Example 2.8. Play by Play Feed from a Game YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U9NS/test.event0000644000175000017500000000036114556031650022367 0ustar tinatina+STR +DOC --- +MAP =VAL :time =VAL :20:03:20 =VAL :player =VAL :Sammy Sosa =VAL :action =VAL :strike (miss) -MAP -DOC ... +DOC --- +MAP =VAL :time =VAL :20:03:47 =VAL :player =VAL :Sammy Sosa =VAL :action =VAL :grand slam -MAP -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U9NS/in.yaml0000644000175000017500000000017514556031650021642 0ustar tinatina--- time: 20:03:20 player: Sammy Sosa action: strike (miss) ... --- time: 20:03:47 player: Sammy Sosa action: grand slam ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/in.json0000644000175000017500000000001514556031650021615 0ustar tinatina"a b c d\ne" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/===0000644000175000017500000000004414556031647020615 0ustar tinatinaMultiline Scalar at Top Level [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/test.event0000644000175000017500000000005114556031650022336 0ustar tinatina+STR +DOC --- =VAL :a b c d\ne -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/emit.yaml0000644000175000017500000000001714556031650022140 0ustar tinatina--- a b c d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/in.yaml0000644000175000017500000000002314556031650021605 0ustar tinatina--- a b c d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EX5H/out.yaml0000644000175000017500000000001314556031650022005 0ustar tinatinaa b c d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q5MG/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q5MG/in.json0000644000175000017500000000000314556031650021612 0ustar tinatina{} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q5MG/===0000644000175000017500000000006414556031650020611 0ustar tinatinaTab at beginning of line followed by a flow mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q5MG/test.event0000644000175000017500000000004114556031650022335 0ustar tinatina+STR +DOC +MAP {} -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q5MG/in.yaml0000644000175000017500000000000414556031650021604 0ustar tinatina {} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Q5MG/out.yaml0000644000175000017500000000000314556031650022004 0ustar tinatina{} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/565N/0000755000175000017500000000000014556031650020244 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/565N/in.json0000644000175000017500000000116214556031650021545 0ustar tinatina{ "canonical": "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=", "generic": "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\nOTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\n+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\nAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=\n", "description": "The binary value above is a tiny arrow encoded as a gif image." } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/565N/===0000644000175000017500000000002114556031650020526 0ustar tinatinaConstruct Binary YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/565N/test.event0000644000175000017500000000131714556031650022270 0ustar tinatina+STR +DOC +MAP =VAL :canonical =VAL "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= =VAL :generic =VAL |R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\nOTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\n+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\nAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=\n =VAL :description =VAL :The binary value above is a tiny arrow encoded as a gif image. -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/565N/in.yaml0000644000175000017500000000117414556031650021541 0ustar tinatinacanonical: !!binary "\ R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" generic: !!binary | R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= description: The binary value above is a tiny arrow encoded as a gif image. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/65WH/0000755000175000017500000000000014556031650020300 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/65WH/in.json0000644000175000017500000000001414556031650021574 0ustar tinatina[ "foo" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/65WH/===0000644000175000017500000000003414556031650020566 0ustar tinatinaSingle Entry Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/65WH/test.event0000644000175000017500000000005014556031650022315 0ustar tinatina+STR +DOC +SEQ =VAL :foo -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/65WH/in.yaml0000644000175000017500000000000614556031650021566 0ustar tinatina- foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/735Y/0000755000175000017500000000000014556031650020256 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/735Y/in.json0000644000175000017500000000010414556031650021552 0ustar tinatina[ "flow in block", "Block scalar\n", { "foo": "bar" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/735Y/===0000644000175000017500000000004414556031650020545 0ustar tinatinaSpec Example 8.20. Block Node Types YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/735Y/test.event0000644000175000017500000000017514556031650022303 0ustar tinatina+STR +DOC +SEQ =VAL "flow in block =VAL >Block scalar\n +MAP =VAL :foo =VAL :bar -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/735Y/in.yaml0000644000175000017500000000011514556031650021545 0ustar tinatina- "flow in block" - > Block scalar - !!map # Block collection foo : bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/735Y/out.yaml0000644000175000017500000000007014556031650021746 0ustar tinatina- "flow in block" - > Block scalar - !!map foo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7A4E/0000755000175000017500000000000014556031650020247 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7A4E/in.json0000644000175000017500000000005714556031650021552 0ustar tinatina" 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7A4E/===0000644000175000017500000000004614556031650020540 0ustar tinatinaSpec Example 7.6. Double Quoted Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7A4E/test.event0000644000175000017500000000010714556031650022267 0ustar tinatina+STR +DOC =VAL " 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7A4E/in.yaml0000644000175000017500000000006214556031650021537 0ustar tinatina" 1st non-empty 2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7A4E/out.yaml0000644000175000017500000000005714556031650021744 0ustar tinatina" 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/00/0000755000175000017500000000000014556031650020511 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/00/in.json0000644000175000017500000000001314556031650022004 0ustar tinatina[ ":x" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/00/===0000644000175000017500000000004714556031650021003 0ustar tinatinaScalars in flow start with syntax char YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/00/test.event0000644000175000017500000000005214556031650022530 0ustar tinatina+STR +DOC +SEQ [] =VAL ::x -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/00/in.yaml0000644000175000017500000000000514556031650021776 0ustar tinatina[:x] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/00/out.yaml0000644000175000017500000000000514556031650022177 0ustar tinatina- :x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/01/0000755000175000017500000000000014556031650020512 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/01/in.json0000644000175000017500000000001314556031650022005 0ustar tinatina[ "?x" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/01/===0000644000175000017500000000004714556031650021004 0ustar tinatinaScalars in flow start with syntax char YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/01/test.event0000644000175000017500000000005214556031650022531 0ustar tinatina+STR +DOC +SEQ [] =VAL :?x -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/01/in.yaml0000644000175000017500000000000514556031650021777 0ustar tinatina[?x] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HM87/01/out.yaml0000644000175000017500000000000514556031650022200 0ustar tinatina- ?x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AB8U/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AB8U/in.json0000644000175000017500000000005214556031650021604 0ustar tinatina[ "single multiline - sequence entry" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AB8U/===0000644000175000017500000000007214556031650020576 0ustar tinatinaSequence entry that looks like two with wrong indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AB8U/test.event0000644000175000017500000000010614556031650022325 0ustar tinatina+STR +DOC +SEQ =VAL :single multiline - sequence entry -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AB8U/in.yaml0000644000175000017500000000004514556031650021577 0ustar tinatina- single multiline - sequence entry YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/AB8U/out.yaml0000644000175000017500000000004414556031650021777 0ustar tinatina- single multiline - sequence entry YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T833/0000755000175000017500000000000014556031650020250 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T833/===0000644000175000017500000000005014556031650020534 0ustar tinatinaFlow mapping missing a separating comma YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T833/test.event0000644000175000017500000000003514556031650022270 0ustar tinatina+STR +DOC --- +MAP =VAL :foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T833/error0000644000175000017500000000000014556031650021312 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T833/in.yaml0000644000175000017500000000003014556031650021533 0ustar tinatina--- { foo: 1 bar: 2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8KB6/0000755000175000017500000000000014556031650020261 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8KB6/in.json0000644000175000017500000000014014556031650021555 0ustar tinatina[ { "single line": null, "a": "b" }, { "multi line": null, "a": "b" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8KB6/===0000644000175000017500000000005714556031650020554 0ustar tinatinaMultiline plain flow mapping key without value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8KB6/test.event0000644000175000017500000000021514556031650022301 0ustar tinatina+STR +DOC --- +SEQ +MAP {} =VAL :single line =VAL : =VAL :a =VAL :b -MAP +MAP {} =VAL :multi line =VAL : =VAL :a =VAL :b -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8KB6/in.yaml0000644000175000017500000000006314556031650021552 0ustar tinatina--- - { single line, a: b} - { multi line, a: b} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8KB6/out.yaml0000644000175000017500000000005714556031650021756 0ustar tinatina--- - single line: a: b - multi line: a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EHF6/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EHF6/in.json0000644000175000017500000000004214556031650021574 0ustar tinatina{ "k": [ "a", "b" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EHF6/===0000644000175000017500000000002614556031650020566 0ustar tinatinaTags for Flow Objects YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EHF6/test.event0000644000175000017500000000021614556031650022320 0ustar tinatina+STR +DOC +MAP {} =VAL :k +SEQ [] =VAL :a =VAL :b -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EHF6/in.yaml0000644000175000017500000000004514556031650021570 0ustar tinatina!!map { k: !!seq [ a, !!str b] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EHF6/out.yaml0000644000175000017500000000003514556031650021770 0ustar tinatina!!map k: !!seq - a - !!str b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/in.json0000644000175000017500000000002014556031650021563 0ustar tinatina"folded text\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/===0000644000175000017500000000004614556031650020563 0ustar tinatinaSpec Example 8.9. Folded Scalar [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/test.event0000644000175000017500000000005414556031650022313 0ustar tinatina+STR +DOC --- =VAL >folded text\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/emit.yaml0000644000175000017500000000002414556031650022110 0ustar tinatina--- > folded text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/in.yaml0000644000175000017500000000002614556031650021562 0ustar tinatina--- > folded text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/B3HG/out.yaml0000644000175000017500000000002014556031650021755 0ustar tinatina> folded text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4JQ/0000755000175000017500000000000014556031650020330 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4JQ/in.json0000644000175000017500000000003114556031650021623 0ustar tinatina[ "12", 12, "12" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4JQ/===0000644000175000017500000000004514556031650020620 0ustar tinatinaSpec Example 6.28. Non-Specific Tags YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4JQ/test.event0000644000175000017500000000007514556031650022354 0ustar tinatina+STR +DOC +SEQ =VAL "12 =VAL :12 =VAL :12 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4JQ/in.yaml0000644000175000017500000000006714556031650021625 0ustar tinatina# Assuming conventional resolution: - "12" - 12 - ! 12 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4JQ/out.yaml0000644000175000017500000000002314556031650022016 0ustar tinatina- "12" - 12 - ! 12 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BCT/0000755000175000017500000000000014556031650020305 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BCT/in.json0000644000175000017500000000007314556031650021606 0ustar tinatina[ { "foo": "bar" }, [ "baz", "baz" ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BCT/===0000644000175000017500000000004414556031650020574 0ustar tinatinaSpec Example 6.3. Separation Spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BCT/test.event0000644000175000017500000000013214556031650022323 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :foo =VAL :bar -MAP +SEQ =VAL :baz =VAL :baz -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BCT/in.yaml0000644000175000017500000000003414556031650021574 0ustar tinatina- foo: bar - - baz - baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6BCT/out.yaml0000644000175000017500000000003314556031650021774 0ustar tinatina- foo: bar - - baz - baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/WZ62/0000755000175000017500000000000014556031650020317 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/WZ62/in.json0000644000175000017500000000003514556031650021616 0ustar tinatina{ "foo": "", "": "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/WZ62/===0000644000175000017500000000004014556031650020602 0ustar tinatinaSpec Example 7.2. Empty Content YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/WZ62/test.event0000644000175000017500000000016314556031650022341 0ustar tinatina+STR +DOC +MAP {} =VAL :foo =VAL : =VAL : =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/WZ62/in.yaml0000644000175000017500000000004214556031650021605 0ustar tinatina{ foo : !!str, !!str : bar, } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/WZ62/out.yaml0000644000175000017500000000002714556031650022011 0ustar tinatinafoo: !!str !!str : bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BF9H/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BF9H/===0000644000175000017500000000005314556031650020566 0ustar tinatinaTrailing comment in multiline plain scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BF9H/test.event0000644000175000017500000000005114556031650022315 0ustar tinatina+STR +DOC --- +MAP =VAL :plain =VAL :a b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BF9H/error0000644000175000017500000000000014556031650021341 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/BF9H/in.yaml0000644000175000017500000000005714556031650021573 0ustar tinatina--- plain: a b # end of scalar c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UV7Q/0000755000175000017500000000000014556031650020351 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UV7Q/in.json0000644000175000017500000000003314556031650021646 0ustar tinatina{ "x": [ "x x" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UV7Q/===0000644000175000017500000000003414556031650020637 0ustar tinatinaLegal tab after indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UV7Q/test.event0000644000175000017500000000007214556031650022372 0ustar tinatina+STR +DOC +MAP =VAL :x +SEQ =VAL :x x -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UV7Q/in.yaml0000644000175000017500000000001514556031650021637 0ustar tinatinax: - x x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UV7Q/out.yaml0000644000175000017500000000001114556031650022034 0ustar tinatinax: - x x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK4H/0000755000175000017500000000000014556031650020301 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK4H/===0000644000175000017500000000004114556031650020565 0ustar tinatinaImplicit key followed by newline YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK4H/test.event0000644000175000017500000000004014556031650022315 0ustar tinatina+STR +DOC --- +SEQ [] =VAL :key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK4H/error0000644000175000017500000000000014556031650021343 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK4H/in.yaml0000644000175000017500000000002614556031650021571 0ustar tinatina--- [ key : value ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/0000755000175000017500000000000014556031650020233 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/00/0000755000175000017500000000000014556031650020452 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/00/===0000644000175000017500000000002114556031650020734 0ustar tinatinaLiteral modifers YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/00/test.event0000644000175000017500000000001614556031650022471 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/00/error0000644000175000017500000000000014556031650021514 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/00/in.yaml0000644000175000017500000000000714556031650021741 0ustar tinatina--- |0 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/02/0000755000175000017500000000000014556031650020454 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/02/in.json0000644000175000017500000000000314556031650021746 0ustar tinatina"" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/02/===0000644000175000017500000000002114556031650020736 0ustar tinatinaLiteral modifers YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/02/test.event0000644000175000017500000000003714556031650022476 0ustar tinatina+STR +DOC --- =VAL | -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/02/emit.yaml0000644000175000017500000000000714556031650022273 0ustar tinatina--- "" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/02/in.yaml0000644000175000017500000000000714556031650021743 0ustar tinatina--- |1-YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/01/0000755000175000017500000000000014556031650020453 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/01/===0000644000175000017500000000002114556031650020735 0ustar tinatinaLiteral modifers YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/01/test.event0000644000175000017500000000001614556031650022472 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/01/error0000644000175000017500000000000014556031650021515 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/01/in.yaml0000644000175000017500000000001014556031650021734 0ustar tinatina--- |10 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/03/0000755000175000017500000000000014556031650020455 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/03/in.json0000644000175000017500000000000314556031650021747 0ustar tinatina"" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/03/===0000644000175000017500000000002114556031650020737 0ustar tinatinaLiteral modifers YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/03/test.event0000644000175000017500000000003714556031650022477 0ustar tinatina+STR +DOC --- =VAL | -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/03/emit.yaml0000644000175000017500000000000714556031650022274 0ustar tinatina--- "" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2G84/03/in.yaml0000644000175000017500000000000714556031650021744 0ustar tinatina--- |1+YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W5VH/0000755000175000017500000000000014556031650020340 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W5VH/in.json0000644000175000017500000000005114556031650021635 0ustar tinatina{ "a": "scalar a", "b": "scalar a" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W5VH/===0000644000175000017500000000003414556031650020626 0ustar tinatinaAllowed characters in alias YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W5VH/test.event0000644000175000017500000000013614556031650022362 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL &:@*!$": :scalar a =VAL :b =ALI *:@*!$": -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W5VH/in.yaml0000644000175000017500000000005314556031650021630 0ustar tinatinaa: &:@*!$": scalar a b: *:@*!$": YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JS2J/0000755000175000017500000000000014556031650020317 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JS2J/in.json0000644000175000017500000000010214556031650021611 0ustar tinatina{ "First occurrence": "Value", "Second occurrence": "Value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JS2J/===0000644000175000017500000000004014556031650020602 0ustar tinatinaSpec Example 6.29. Node Anchors YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JS2J/test.event0000644000175000017500000000015614556031650022343 0ustar tinatina+STR +DOC +MAP =VAL :First occurrence =VAL &anchor :Value =VAL :Second occurrence =ALI *anchor -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JS2J/in.yaml0000644000175000017500000000007314556031650021611 0ustar tinatinaFirst occurrence: &anchor Value Second occurrence: *anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W4TN/0000755000175000017500000000000014556031650020343 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W4TN/in.json0000644000175000017500000000003014556031650021635 0ustar tinatina"%!PS-Adobe-2.0\n" null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W4TN/===0000644000175000017500000000004714556031650020635 0ustar tinatinaSpec Example 9.5. Directives Documents YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W4TN/test.event0000644000175000017500000000011414556031650022361 0ustar tinatina+STR +DOC --- =VAL |%!PS-Adobe-2.0\n -DOC ... +DOC --- =VAL : -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W4TN/in.yaml0000644000175000017500000000007514556031650021637 0ustar tinatina%YAML 1.2 --- | %!PS-Adobe-2.0 ... %YAML 1.2 --- # Empty ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/W4TN/out.yaml0000644000175000017500000000004314556031650022033 0ustar tinatina--- | %!PS-Adobe-2.0 ... --- ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93WF/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93WF/in.json0000644000175000017500000000003014556031650021571 0ustar tinatina"trimmed\n\n\nas space" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93WF/===0000644000175000017500000000004514556031650020567 0ustar tinatinaSpec Example 6.6. Line Folding [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93WF/test.event0000644000175000017500000000006414556031650022321 0ustar tinatina+STR +DOC --- =VAL >trimmed\n\n\nas space -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93WF/in.yaml0000644000175000017500000000004414556031650021567 0ustar tinatina--- >- trimmed as space YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93WF/out.yaml0000644000175000017500000000003714556031650021772 0ustar tinatina--- >- trimmed as space YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9JBA/0000755000175000017500000000000014556031650020274 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9JBA/===0000644000175000017500000000005314556031647020571 0ustar tinatinaInvalid comment after end of flow sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9JBA/test.event0000644000175000017500000000006314556031650022315 0ustar tinatina+STR +DOC --- +SEQ [] =VAL :a =VAL :b =VAL :c -SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9JBA/error0000644000175000017500000000000014556031650021336 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9JBA/in.yaml0000644000175000017500000000003114556031650021560 0ustar tinatina--- [ a, b, c, ]#invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F3CP/0000755000175000017500000000000014556031650020302 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F3CP/in.json0000644000175000017500000000013514556031650021602 0ustar tinatina{ "a": [ "b", "c", { "d": [ "e", "f" ] } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F3CP/===0000644000175000017500000000004414556031650020571 0ustar tinatinaNested flow collections on one line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F3CP/test.event0000644000175000017500000000017414556031650022326 0ustar tinatina+STR +DOC --- +MAP {} =VAL :a +SEQ [] =VAL :b =VAL :c +MAP {} =VAL :d +SEQ [] =VAL :e =VAL :f -SEQ -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F3CP/in.yaml0000644000175000017500000000004214556031650021570 0ustar tinatina--- { a: [b, c, { d: [e, f] } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F3CP/out.yaml0000644000175000017500000000004014556031650021767 0ustar tinatina--- a: - b - c - d: - e - f YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4T7/0000755000175000017500000000000014556031650020310 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4T7/in.json0000644000175000017500000000002314556031650021604 0ustar tinatina{ "aaa": "bbb" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4T7/===0000644000175000017500000000002514556031650020576 0ustar tinatinaDocument with footer YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4T7/test.event0000644000175000017500000000006614556031650022334 0ustar tinatina+STR +DOC +MAP =VAL :aaa =VAL :bbb -MAP -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S4T7/in.yaml0000644000175000017500000000001514556031650021576 0ustar tinatinaaaa: bbb ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YD5X/0000755000175000017500000000000014556031650020340 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YD5X/in.json0000644000175000017500000000021014556031650021632 0ustar tinatina[ [ "name", "hr", "avg" ], [ "Mark McGwire", 65, 0.278 ], [ "Sammy Sosa", 63, 0.288 ] ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YD5X/===0000644000175000017500000000005014556031647020632 0ustar tinatinaSpec Example 2.5. Sequence of Sequences YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YD5X/test.event0000644000175000017500000000026114556031650022361 0ustar tinatina+STR +DOC +SEQ +SEQ [] =VAL :name =VAL :hr =VAL :avg -SEQ +SEQ [] =VAL :Mark McGwire =VAL :65 =VAL :0.278 -SEQ +SEQ [] =VAL :Sammy Sosa =VAL :63 =VAL :0.288 -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YD5X/in.yaml0000644000175000017500000000012414556031650021627 0ustar tinatina- [name , hr, avg ] - [Mark McGwire, 65, 0.278] - [Sammy Sosa , 63, 0.288] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/YD5X/out.yaml0000644000175000017500000000013214556031650022027 0ustar tinatina- - name - hr - avg - - Mark McGwire - 65 - 0.278 - - Sammy Sosa - 63 - 0.288 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P76L/0000755000175000017500000000000014556031650020277 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P76L/in.json0000644000175000017500000000001014556031650021567 0ustar tinatina"1 - 3" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P76L/===0000644000175000017500000000005014556031650020563 0ustar tinatinaSpec Example 6.19. Secondary Tag Handle YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P76L/test.event0000644000175000017500000000010314556031650022313 0ustar tinatina+STR +DOC --- =VAL :1 - 3 -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P76L/in.yaml0000644000175000017500000000011214556031650021563 0ustar tinatina%TAG !! tag:example.com,2000:app/ --- !!int 1 - 3 # Interval, not integer YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P76L/out.yaml0000644000175000017500000000005214556031650021767 0ustar tinatina--- ! 1 - 3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F8F9/0000755000175000017500000000000014556031650020263 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F8F9/in.json0000644000175000017500000000010614556031650021561 0ustar tinatina{ "strip": "# text", "clip": "# text\n", "keep": "# text\n\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F8F9/===0000644000175000017500000000005214556031650020551 0ustar tinatinaSpec Example 8.5. Chomping Trailing Lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F8F9/test.event0000644000175000017500000000015514556031650022306 0ustar tinatina+STR +DOC +MAP =VAL :strip =VAL |# text =VAL :clip =VAL |# text\n =VAL :keep =VAL |# text\n\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F8F9/in.yaml0000644000175000017500000000023014556031650021550 0ustar tinatina # Strip # Comments: strip: |- # text # Clip # comments: clip: | # text # Keep # comments: keep: |+ # text # Trail # comments. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/F8F9/out.yaml0000644000175000017500000000007314556031650021756 0ustar tinatinastrip: |- # text clip: | # text keep: |+ # text ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6VJK/0000755000175000017500000000000014556031650020327 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6VJK/in.json0000644000175000017500000000017214556031650021630 0ustar tinatina"Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6VJK/===0000644000175000017500000000012514556031650020616 0ustar tinatinaSpec Example 2.15. Folded newlines are preserved for "more indented" and blank lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6VJK/test.event0000644000175000017500000000022214556031650022345 0ustar tinatina+STR +DOC =VAL >Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6VJK/in.yaml0000644000175000017500000000017014556031650021617 0ustar tinatina> Sammy Sosa completed another fine season with great stats. 63 Home Runs 0.288 Batting Average What a year! YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6VJK/out.yaml0000644000175000017500000000017314556031650022023 0ustar tinatina> Sammy Sosa completed another fine season with great stats. 63 Home Runs 0.288 Batting Average What a year! YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NP9H/0000755000175000017500000000000014556031650020325 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NP9H/in.json0000644000175000017500000000007214556031650021625 0ustar tinatina"folded to a space,\nto a line feed, or \t \tnon-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NP9H/===0000644000175000017500000000005414556031650020615 0ustar tinatinaSpec Example 7.5. Double Quoted Line Breaks YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NP9H/test.event0000644000175000017500000000012214556031650022342 0ustar tinatina+STR +DOC =VAL "folded to a space,\nto a line feed, or \t \tnon-content -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NP9H/in.yaml0000644000175000017500000000007714556031650021623 0ustar tinatina"folded to a space, to a line feed, or \ \ non-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NP9H/out.yaml0000644000175000017500000000007214556031650022017 0ustar tinatina"folded to a space,\nto a line feed, or \t \tnon-content" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7LBH/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7LBH/===0000644000175000017500000000004614556031650020574 0ustar tinatinaMultiline double quoted implicit keys YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7LBH/test.event0000644000175000017500000000004214556031650022321 0ustar tinatina+STR +DOC +MAP =VAL "a\nb =VAL :1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7LBH/error0000644000175000017500000000000014556031650021345 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7LBH/in.yaml0000644000175000017500000000002414556031650021571 0ustar tinatina"a\nb": 1 "c d": 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L383/0000755000175000017500000000000014556031650020240 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L383/in.json0000644000175000017500000000001414556031650021534 0ustar tinatina"foo" "foo" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L383/===0000644000175000017500000000004714556031650020532 0ustar tinatinaTwo scalar docs with trailing comments YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L383/test.event0000644000175000017500000000007214556031650022261 0ustar tinatina+STR +DOC --- =VAL :foo -DOC +DOC --- =VAL :foo -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L383/in.yaml0000644000175000017500000000004614556031650021532 0ustar tinatina--- foo # comment --- foo # comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L383/out.yaml0000644000175000017500000000002014556031650021723 0ustar tinatina--- foo --- foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NJ66/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NJ66/in.json0000644000175000017500000000011214556031650021565 0ustar tinatina[ { "single line": "value" }, { "multi line": "value" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NJ66/===0000644000175000017500000000004114556031650020556 0ustar tinatinaMultiline plain flow mapping key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NJ66/test.event0000644000175000017500000000016714556031650022320 0ustar tinatina+STR +DOC --- +SEQ +MAP {} =VAL :single line =VAL :value -MAP +MAP {} =VAL :multi line =VAL :value -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NJ66/in.yaml0000644000175000017500000000006514556031650021565 0ustar tinatina--- - { single line: value} - { multi line: value} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NJ66/out.yaml0000644000175000017500000000005514556031650021765 0ustar tinatina--- - single line: value - multi line: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TS54/0000755000175000017500000000000014556031650020306 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TS54/in.json0000644000175000017500000000002414556031650021603 0ustar tinatina"ab cd\nef\n\ngh\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TS54/===0000644000175000017500000000002414556031650020573 0ustar tinatinaFolded Block Scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TS54/test.event0000644000175000017500000000005414556031650022327 0ustar tinatina+STR +DOC =VAL >ab cd\nef\n\ngh\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TS54/in.yaml0000644000175000017500000000002614556031650021576 0ustar tinatina> ab cd ef gh YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TS54/out.yaml0000644000175000017500000000002714556031650022000 0ustar tinatina> ab cd ef gh YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X8DW/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X8DW/in.json0000644000175000017500000000002514556031650021637 0ustar tinatina{ "key": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X8DW/===0000644000175000017500000000005414556031650020631 0ustar tinatinaExplicit key and value seperated by comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X8DW/test.event0000644000175000017500000000007014556031650022360 0ustar tinatina+STR +DOC --- +MAP =VAL :key =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X8DW/in.yaml0000644000175000017500000000003414556031650021630 0ustar tinatina--- ? key # comment : value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/X8DW/out.yaml0000644000175000017500000000001714556031650022032 0ustar tinatina--- key: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/0000755000175000017500000000000014556031650020346 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/00/0000755000175000017500000000000014556031650020565 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/00/in.json0000644000175000017500000000000714556031650022063 0ustar tinatina[null] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/00/===0000644000175000017500000000003114556031650021050 0ustar tinatinaSingle character streams YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/00/test.event0000644000175000017500000000004514556031650022606 0ustar tinatina+STR +DOC +SEQ =VAL : -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/00/in.yaml0000644000175000017500000000000114556031650022046 0ustar tinatina-YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/00/out.yaml0000644000175000017500000000000214556031650022250 0ustar tinatina- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/01/0000755000175000017500000000000014556031650020566 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/01/===0000644000175000017500000000003114556031650021051 0ustar tinatinaSingle character streams YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/01/test.event0000644000175000017500000000005414556031650022607 0ustar tinatina+STR +DOC +MAP =VAL : =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/01/in.yaml0000644000175000017500000000000114556031650022047 0ustar tinatina:YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SM9W/01/out.yaml0000644000175000017500000000000214556031650022251 0ustar tinatina: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XW4D/0000755000175000017500000000000014556031650020335 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XW4D/===0000644000175000017500000000003214556031650020621 0ustar tinatinaVarious Trailing Comments YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XW4D/test.event0000644000175000017500000000033214556031650022355 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL "double quotes =VAL :b =VAL :plain value =VAL :c =VAL :d +SEQ =VAL :seq1 -SEQ +SEQ =VAL :seq2 -SEQ =VAL :e +SEQ &node +MAP =VAL :x =VAL :y -MAP -SEQ =VAL :block =VAL >abcde\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XW4D/in.yaml0000644000175000017500000000023614556031650021630 0ustar tinatinaa: "double quotes" # lala b: plain value # lala c : #lala d ? # lala - seq1 : # lala - #lala seq2 e: &node # lala - x: y block: > # lala abcde YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/XW4D/out.yaml0000644000175000017500000000013214556031650022024 0ustar tinatinaa: "double quotes" b: plain value c: d ? - seq1 : - seq2 e: &node - x: y block: > abcde YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/55WF/0000755000175000017500000000000014556031650020275 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/55WF/===0000644000175000017500000000004714556031650020567 0ustar tinatinaInvalid escape in double quoted string YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/55WF/test.event0000644000175000017500000000001614556031650022314 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/55WF/error0000644000175000017500000000000014556031650021337 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/55WF/in.yaml0000644000175000017500000000001114556031650021557 0ustar tinatina--- "\." YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TL85/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TL85/in.json0000644000175000017500000000002214556031650021576 0ustar tinatina" foo\nbar\nbaz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TL85/===0000644000175000017500000000003714556031650020574 0ustar tinatinaSpec Example 6.8. Flow Folding YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TL85/test.event0000644000175000017500000000005214556031650022322 0ustar tinatina+STR +DOC =VAL " foo\nbar\nbaz -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TL85/in.yaml0000644000175000017500000000003414556031650021572 0ustar tinatina" foo bar baz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TL85/out.yaml0000644000175000017500000000002214556031650021770 0ustar tinatina" foo\nbar\nbaz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6H3V/0000755000175000017500000000000014556031650020275 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6H3V/in.json0000644000175000017500000000003314556031650021572 0ustar tinatina{ "foo: bar\\": "baz'" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6H3V/===0000644000175000017500000000003414556031650020563 0ustar tinatinaBackslashes in singlequotes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6H3V/test.event0000644000175000017500000000007214556031650022316 0ustar tinatina+STR +DOC +MAP =VAL 'foo: bar\\ =VAL :baz' -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6H3V/in.yaml0000644000175000017500000000002214556031650021561 0ustar tinatina'foo: bar\': baz' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6H3V/out.yaml0000644000175000017500000000002214556031650021762 0ustar tinatina'foo: bar\': baz' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4EJS/0000755000175000017500000000000014556031650020314 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4EJS/===0000644000175000017500000000005114556031650020601 0ustar tinatinaInvalid tabs as indendation in a mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4EJS/test.event0000644000175000017500000000003314556031650022332 0ustar tinatina+STR +DOC --- +MAP =VAL :a YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4EJS/error0000644000175000017500000000000014556031650021356 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4EJS/in.yaml0000644000175000017500000000002614556031650021604 0ustar tinatina--- a: b: c: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6HB6/0000755000175000017500000000000014556031650020254 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6HB6/in.json0000644000175000017500000000023314556031650021553 0ustar tinatina{ "Not indented": { "By one space": "By four\n spaces\n", "Flow style": [ "By two", "Also by two", "Still by two" ] } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6HB6/===0000644000175000017500000000004514556031650020544 0ustar tinatinaSpec Example 6.1. Indentation Spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6HB6/test.event0000644000175000017500000000027014556031650022275 0ustar tinatina+STR +DOC +MAP =VAL :Not indented +MAP =VAL :By one space =VAL |By four\n spaces\n =VAL :Flow style +SEQ [] =VAL :By two =VAL :Also by two =VAL :Still by two -SEQ -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6HB6/in.yaml0000644000175000017500000000045514556031650021552 0ustar tinatina # Leading comment line spaces are # neither content nor indentation. Not indented: By one space: | By four spaces Flow style: [ # Leading spaces By two, # in flow style Also by two, # are neither Still by two # content nor ] # indentation. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6HB6/out.yaml0000644000175000017500000000016314556031650021747 0ustar tinatinaNot indented: By one space: | By four spaces Flow style: - By two - Also by two - Still by two YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ABK/0000755000175000017500000000000014556031650020270 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ABK/===0000644000175000017500000000003514556031650020557 0ustar tinatinaFlow Mapping Separate Values YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ABK/test.event0000644000175000017500000000016614556031650022315 0ustar tinatina+STR +DOC +MAP {} =VAL :unquoted =VAL "separate =VAL :http://foo.com =VAL : =VAL :omitted value =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ABK/in.yaml0000644000175000017500000000007314556031650021562 0ustar tinatina{ unquoted : "separate", http://foo.com, omitted value:, } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4ABK/out.yaml0000644000175000017500000000007614556031650021766 0ustar tinatinaunquoted: "separate" http://foo.com: null omitted value: null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S7BG/0000755000175000017500000000000014556031650020311 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S7BG/in.json0000644000175000017500000000001314556031650021604 0ustar tinatina[ ":," ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S7BG/===0000644000175000017500000000003014556031650020573 0ustar tinatinaColon followed by comma YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S7BG/test.event0000644000175000017500000000005314556031650022331 0ustar tinatina+STR +DOC --- +SEQ =VAL ::, -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S7BG/in.yaml0000644000175000017500000000001114556031650021573 0ustar tinatina--- - :, YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/S7BG/out.yaml0000644000175000017500000000001114556031650021774 0ustar tinatina--- - :, YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MAG/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MAG/===0000644000175000017500000000006214556031650020573 0ustar tinatinaFlow sequence with invalid comma at the beginning YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MAG/test.event0000644000175000017500000000002614556031650022324 0ustar tinatina+STR +DOC --- +SEQ [] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MAG/error0000644000175000017500000000000014556031650021346 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9MAG/in.yaml0000644000175000017500000000002214556031650021570 0ustar tinatina--- [ , a, b, c ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FH7J/0000755000175000017500000000000014556031650020305 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FH7J/===0000644000175000017500000000002614556031650020574 0ustar tinatinaTags on Empty Scalars YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FH7J/test.event0000644000175000017500000000033714556031650022332 0ustar tinatina+STR +DOC +SEQ =VAL : +MAP =VAL : =VAL :a =VAL :b =VAL : -MAP +MAP =VAL : =VAL : -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FH7J/in.yaml0000644000175000017500000000006314556031650021576 0ustar tinatina- !!str - !!null : a b: !!str - !!str : !!null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/FH7J/out.yaml0000644000175000017500000000006114556031650021775 0ustar tinatina- !!str - !!null : a b: !!str - !!str : !!null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z67P/0000755000175000017500000000000014556031650020315 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z67P/in.json0000644000175000017500000000006214556031650021614 0ustar tinatina{ "literal": "value\n", "folded": "value\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z67P/===0000644000175000017500000000005414556031650020605 0ustar tinatinaSpec Example 8.21. Block Scalar Nodes [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z67P/test.event0000644000175000017500000000013414556031650022335 0ustar tinatina+STR +DOC +MAP =VAL :literal =VAL |value\n =VAL :folded =VAL >value\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z67P/in.yaml0000644000175000017500000000005314556031650021605 0ustar tinatinaliteral: |2 value folded: !foo >1 value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/Z67P/out.yaml0000644000175000017500000000005214556031650022005 0ustar tinatinaliteral: | value folded: !foo > value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6XDY/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6XDY/in.json0000644000175000017500000000001214556031650021633 0ustar tinatinanull null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6XDY/===0000644000175000017500000000003314556031650020626 0ustar tinatinaTwo document start markers YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6XDY/test.event0000644000175000017500000000006414556031650022363 0ustar tinatina+STR +DOC --- =VAL : -DOC +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6XDY/in.yaml0000644000175000017500000000001014556031650021622 0ustar tinatina--- --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6XDY/out.yaml0000644000175000017500000000001014556031650022023 0ustar tinatina--- --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8CWC/0000755000175000017500000000000014556031650020313 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8CWC/in.json0000644000175000017500000000005414556031650021613 0ustar tinatina{ "key ends with two colons::": "value" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8CWC/===0000644000175000017500000000004414556031647020610 0ustar tinatinaPlain mapping key ending with colon YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8CWC/test.event0000644000175000017500000000011714556031650022334 0ustar tinatina+STR +DOC --- +MAP =VAL :key ends with two colons:: =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8CWC/in.yaml0000644000175000017500000000004614556031650021605 0ustar tinatina--- key ends with two colons::: value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/8CWC/out.yaml0000644000175000017500000000005014556031650022001 0ustar tinatina--- 'key ends with two colons::': value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SA2/0000755000175000017500000000000014556031650020265 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SA2/in.json0000644000175000017500000000011214556031650021560 0ustar tinatina[ { "single line": "value" }, { "multi line": "value" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SA2/===0000644000175000017500000000005114556031650020552 0ustar tinatinaMultiline double quoted flow mapping key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SA2/test.event0000644000175000017500000000016714556031650022313 0ustar tinatina+STR +DOC --- +SEQ +MAP {} =VAL "single line =VAL :value -MAP +MAP {} =VAL "multi line =VAL :value -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SA2/in.yaml0000644000175000017500000000007114556031650021555 0ustar tinatina--- - { "single line": value} - { "multi line": value} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9SA2/out.yaml0000644000175000017500000000006114556031650021755 0ustar tinatina--- - "single line": value - "multi line": value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/0000755000175000017500000000000014556031650020272 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/in.json0000644000175000017500000000003314556031650021567 0ustar tinatina"\n\nliteral\n \n\ntext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/===0000644000175000017500000000005014556031650020556 0ustar tinatinaSpec Example 8.8. Literal Content [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/test.event0000644000175000017500000000006714556031650022317 0ustar tinatina+STR +DOC --- =VAL |\n\nliteral\n \n\ntext\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/emit.yaml0000644000175000017500000000003614556031650022113 0ustar tinatina--- | literal text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/in.yaml0000644000175000017500000000005714556031650021566 0ustar tinatina--- | literal text # Comment YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T26H/out.yaml0000644000175000017500000000003314556031650021761 0ustar tinatina"\n\nliteral\n \n\ntext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NKF9/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NKF9/===0000644000175000017500000000004514556031650020606 0ustar tinatinaEmpty keys in block and flow mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NKF9/test.event0000644000175000017500000000034614556031650022343 0ustar tinatina+STR +DOC --- +MAP =VAL :key =VAL :value =VAL : =VAL :empty key -MAP -DOC +DOC --- +MAP {} =VAL :key =VAL :value =VAL : =VAL :empty key -MAP -DOC +DOC --- +MAP =VAL : =VAL : -MAP -DOC +DOC --- +MAP {} =VAL : =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NKF9/emit.yaml0000644000175000017500000000010214556031650022131 0ustar tinatina--- key: value : empty key --- key: value : empty key --- : --- : YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NKF9/in.yaml0000644000175000017500000000017014556031650021606 0ustar tinatina--- key: value : empty key --- { key: value, : empty key } --- # empty key and value : --- # empty key and value { : } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CQ3W/0000755000175000017500000000000014556031650020324 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CQ3W/===0000644000175000017500000000005314556031650020613 0ustar tinatinaDouble quoted string without closing quote YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CQ3W/test.event0000644000175000017500000000003514556031650022344 0ustar tinatina+STR +DOC --- +MAP =VAL :key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CQ3W/error0000644000175000017500000000000014556031650021366 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CQ3W/in.yaml0000644000175000017500000000004014556031650021610 0ustar tinatina--- key: "missing closing quote YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2XXW/0000755000175000017500000000000014556031650020357 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2XXW/in.json0000644000175000017500000000010614556031650021655 0ustar tinatina{ "Mark McGwire": null, "Sammy Sosa": null, "Ken Griff": null } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2XXW/===0000644000175000017500000000004214556031650020644 0ustar tinatinaSpec Example 2.25. Unordered Sets YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2XXW/test.event0000644000175000017500000000020314556031650022374 0ustar tinatina+STR +DOC --- +MAP =VAL :Mark McGwire =VAL : =VAL :Sammy Sosa =VAL : =VAL :Ken Griff =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2XXW/in.yaml0000644000175000017500000000021114556031650021643 0ustar tinatina# Sets are represented as a # Mapping where each key is # associated with a null value --- !!set ? Mark McGwire ? Sammy Sosa ? Ken Griff YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2XXW/out.yaml0000644000175000017500000000005714556031650022054 0ustar tinatina--- !!set Mark McGwire: Sammy Sosa: Ken Griff: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EW3V/0000755000175000017500000000000014556031650020333 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EW3V/===0000644000175000017500000000003514556031650020622 0ustar tinatinaWrong indendation in mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EW3V/test.event0000644000175000017500000000003014556031650022346 0ustar tinatina+STR +DOC +MAP =VAL :k1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EW3V/error0000644000175000017500000000000014556031650021375 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/EW3V/in.yaml0000644000175000017500000000001714556031650021623 0ustar tinatinak1: v1 k2: v2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A2M4/0000755000175000017500000000000014556031650020252 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A2M4/in.json0000644000175000017500000000007314556031650021553 0ustar tinatina{ "a": [ "b", [ "c", "d" ] ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A2M4/===0000644000175000017500000000005114556031650020537 0ustar tinatinaSpec Example 6.2. Indentation Indicators YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A2M4/test.event0000644000175000017500000000012214556031650022267 0ustar tinatina+STR +DOC +MAP =VAL :a +SEQ =VAL :b +SEQ =VAL :c =VAL :d -SEQ -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A2M4/in.yaml0000644000175000017500000000003414556031650021541 0ustar tinatina? a : - b - - c - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/A2M4/out.yaml0000644000175000017500000000002314556031650021740 0ustar tinatinaa: - b - - c - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9WXW/0000755000175000017500000000000014556031650020365 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9WXW/in.json0000644000175000017500000000001414556031650021661 0ustar tinatina"bar" "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9WXW/===0000644000175000017500000000004614556031650020656 0ustar tinatinaSpec Example 6.18. Primary Tag Handle YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9WXW/test.event0000644000175000017500000000014014556031650022402 0ustar tinatina+STR +DOC =VAL "bar -DOC ... +DOC --- =VAL "bar -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9WXW/in.yaml0000644000175000017500000000012214556031650021652 0ustar tinatina# Private !foo "bar" ... # Global %TAG ! tag:example.com,2000:app/ --- !foo "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9WXW/out.yaml0000644000175000017500000000007114556031650022056 0ustar tinatina!foo "bar" ... --- ! "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JHB9/0000755000175000017500000000000014556031650020303 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JHB9/in.json0000644000175000017500000000014314556031650021602 0ustar tinatina[ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] [ "Chicago Cubs", "St Louis Cardinals" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JHB9/===0000644000175000017500000000005414556031650020573 0ustar tinatinaSpec Example 2.7. Two Documents in a Stream YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JHB9/test.event0000644000175000017500000000023414556031650022324 0ustar tinatina+STR +DOC --- +SEQ =VAL :Mark McGwire =VAL :Sammy Sosa =VAL :Ken Griffey -SEQ -DOC +DOC --- +SEQ =VAL :Chicago Cubs =VAL :St Louis Cardinals -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JHB9/in.yaml0000644000175000017500000000020214556031650021567 0ustar tinatina# Ranking of 1998 home runs --- - Mark McGwire - Sammy Sosa - Ken Griffey # Team ranking --- - Chicago Cubs - St Louis Cardinals YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JHB9/out.yaml0000644000175000017500000000012614556031650021775 0ustar tinatina--- - Mark McGwire - Sammy Sosa - Ken Griffey --- - Chicago Cubs - St Louis Cardinals YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NB6Z/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NB6Z/in.json0000644000175000017500000000004014556031650021621 0ustar tinatina{ "key": "value with\ntabs" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NB6Z/===0000644000175000017500000000005714556031650020621 0ustar tinatinaMultiline plain value with tabs on empty lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NB6Z/test.event0000644000175000017500000000007714556031650022354 0ustar tinatina+STR +DOC +MAP =VAL :key =VAL :value with\ntabs -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NB6Z/in.yaml0000644000175000017500000000003714556031650021620 0ustar tinatinakey: value with tabs YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NB6Z/out.yaml0000644000175000017500000000003214556031650022014 0ustar tinatinakey: 'value with tabs' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2EQ/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2EQ/===0000644000175000017500000000006314556031650020606 0ustar tinatinaInvalid sequene item on same line as previous item YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2EQ/test.event0000644000175000017500000000006014556031650022334 0ustar tinatina+STR +DOC --- +SEQ +MAP {} =VAL :y =VAL :z -MAP YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2EQ/error0000644000175000017500000000000014556031650021360 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/P2EQ/in.yaml0000644000175000017500000000003014556031650021601 0ustar tinatina--- - { y: z }- invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QF4Y/0000755000175000017500000000000014556031650020332 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QF4Y/in.json0000644000175000017500000000003514556031650021631 0ustar tinatina[ { "foo": "bar" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QF4Y/===0000644000175000017500000000005514556031650020623 0ustar tinatinaSpec Example 7.19. Single Pair Flow Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QF4Y/test.event0000644000175000017500000000010214556031650022345 0ustar tinatina+STR +DOC +SEQ [] +MAP {} =VAL :foo =VAL :bar -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QF4Y/in.yaml0000644000175000017500000000001514556031650021620 0ustar tinatina[ foo: bar ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QF4Y/out.yaml0000644000175000017500000000001314556031650022017 0ustar tinatina- foo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/0000755000175000017500000000000014556031650020325 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/00/0000755000175000017500000000000014556031650020544 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/00/in.json0000644000175000017500000000002214556031650022037 0ustar tinatina"1 leading \ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/00/===0000644000175000017500000000003614556031650021034 0ustar tinatinaLeading tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/00/test.event0000644000175000017500000000005214556031650022563 0ustar tinatina+STR +DOC =VAL "1 leading \ttab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/00/emit.yaml0000644000175000017500000000002214556031650022360 0ustar tinatina"1 leading \ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/00/in.yaml0000644000175000017500000000002614556031650022034 0ustar tinatina"1 leading \ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/02/0000755000175000017500000000000014556031650020546 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/02/in.json0000644000175000017500000000002014556031650022037 0ustar tinatina"3 leading tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/02/===0000644000175000017500000000003614556031650021036 0ustar tinatinaLeading tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/02/test.event0000644000175000017500000000005014556031650022563 0ustar tinatina+STR +DOC =VAL "3 leading tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/02/emit.yaml0000644000175000017500000000002014556031650022360 0ustar tinatina"3 leading tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/02/in.yaml0000644000175000017500000000002514556031650022035 0ustar tinatina"3 leading tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/04/0000755000175000017500000000000014556031650020550 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/04/in.json0000644000175000017500000000002414556031650022045 0ustar tinatina"5 leading \t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/04/===0000644000175000017500000000003614556031650021040 0ustar tinatinaLeading tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/04/test.event0000644000175000017500000000005414556031650022571 0ustar tinatina+STR +DOC =VAL "5 leading \t tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/04/emit.yaml0000644000175000017500000000002414556031650022366 0ustar tinatina"5 leading \t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/04/in.yaml0000644000175000017500000000003014556031650022033 0ustar tinatina"5 leading \ tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/05/0000755000175000017500000000000014556031650020551 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/05/in.json0000644000175000017500000000002014556031650022042 0ustar tinatina"6 leading tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/05/===0000644000175000017500000000003614556031650021041 0ustar tinatinaLeading tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/05/test.event0000644000175000017500000000005014556031650022566 0ustar tinatina+STR +DOC =VAL "6 leading tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/05/emit.yaml0000644000175000017500000000002014556031650022363 0ustar tinatina"6 leading tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/05/in.yaml0000644000175000017500000000002714556031650022042 0ustar tinatina"6 leading tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/01/0000755000175000017500000000000014556031650020545 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/01/in.json0000644000175000017500000000002214556031650022040 0ustar tinatina"2 leading \ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/01/===0000644000175000017500000000003614556031650021035 0ustar tinatinaLeading tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/01/test.event0000644000175000017500000000005214556031650022564 0ustar tinatina+STR +DOC =VAL "2 leading \ttab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/01/emit.yaml0000644000175000017500000000002214556031650022361 0ustar tinatina"2 leading \ttab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/01/in.yaml0000644000175000017500000000002614556031650022035 0ustar tinatina"2 leading \ tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/03/0000755000175000017500000000000014556031650020547 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/03/in.json0000644000175000017500000000002414556031650022044 0ustar tinatina"4 leading \t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/03/===0000644000175000017500000000003614556031650021037 0ustar tinatinaLeading tabs in double quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/03/test.event0000644000175000017500000000005414556031650022570 0ustar tinatina+STR +DOC =VAL "4 leading \t tab -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/03/emit.yaml0000644000175000017500000000002414556031650022365 0ustar tinatina"4 leading \t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3RLN/03/in.yaml0000644000175000017500000000003014556031650022032 0ustar tinatina"4 leading \t tab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PBJ2/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PBJ2/in.json0000644000175000017500000000025614556031650021610 0ustar tinatina{ "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PBJ2/===0000644000175000017500000000005714556031650020577 0ustar tinatinaSpec Example 2.3. Mapping Scalars to Sequences YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PBJ2/test.event0000644000175000017500000000031514556031650022325 0ustar tinatina+STR +DOC +MAP =VAL :american +SEQ =VAL :Boston Red Sox =VAL :Detroit Tigers =VAL :New York Yankees -SEQ =VAL :national +SEQ =VAL :New York Mets =VAL :Chicago Cubs =VAL :Atlanta Braves -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PBJ2/in.yaml0000644000175000017500000000020514556031650021573 0ustar tinatinaamerican: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PBJ2/out.yaml0000644000175000017500000000017114556031650021776 0ustar tinatinaamerican: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DMG6/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DMG6/===0000644000175000017500000000003114556031650020567 0ustar tinatinaWrong indendation in Map YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DMG6/test.event0000644000175000017500000000006414556031650022326 0ustar tinatina+STR +DOC +MAP =VAL :key +MAP =VAL :ok =VAL :1 -MAP YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DMG6/error0000644000175000017500000000000014556031650021346 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DMG6/in.yaml0000644000175000017500000000002714556031650021575 0ustar tinatinakey: ok: 1 wrong: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U99R/0000755000175000017500000000000014556031650020317 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U99R/===0000644000175000017500000000002514556031650020605 0ustar tinatinaInvalid comma in tag YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U99R/test.event0000644000175000017500000000001714556031650022337 0ustar tinatina+STR +DOC +SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U99R/error0000644000175000017500000000000014556031650021361 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U99R/in.yaml0000644000175000017500000000001514556031650021605 0ustar tinatina- !!str, xxx YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GH63/0000755000175000017500000000000014556031650020256 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GH63/in.json0000644000175000017500000000004114556031650021552 0ustar tinatina{ "a": 1.3, "fifteen": "d" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GH63/===0000644000175000017500000000005314556031650020545 0ustar tinatinaMixed Block Mapping (explicit to implicit) YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GH63/test.event0000644000175000017500000000010614556031650022275 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL :1.3 =VAL :fifteen =VAL :d -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GH63/in.yaml0000644000175000017500000000002514556031650021545 0ustar tinatina? a : 1.3 fifteen: d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/GH63/out.yaml0000644000175000017500000000002214556031650021743 0ustar tinatinaa: 1.3 fifteen: d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HU3P/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HU3P/===0000644000175000017500000000004014556031650020611 0ustar tinatinaInvalid Mapping in plain scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HU3P/test.event0000644000175000017500000000003114556031650022342 0ustar tinatina+STR +DOC +MAP =VAL :key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HU3P/error0000644000175000017500000000000014556031650021370 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HU3P/in.yaml0000644000175000017500000000003514556031650021616 0ustar tinatinakey: word1 word2 no: key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3UYS/0000755000175000017500000000000014556031650020352 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3UYS/in.json0000644000175000017500000000003514556031650021651 0ustar tinatina{ "escaped slash": "a/b" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3UYS/===0000644000175000017500000000003714556031650020643 0ustar tinatinaEscaped slash in double quotes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3UYS/test.event0000644000175000017500000000007414556031650022375 0ustar tinatina+STR +DOC +MAP =VAL :escaped slash =VAL "a/b -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3UYS/in.yaml0000644000175000017500000000002614556031650021642 0ustar tinatinaescaped slash: "a\/b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3UYS/out.yaml0000644000175000017500000000002514556031650022042 0ustar tinatinaescaped slash: "a/b" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/0000755000175000017500000000000014556031650020333 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/in.json0000644000175000017500000000001414556031650021627 0ustar tinatina"ab\n\n \n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/===0000644000175000017500000000002214556031650020616 0ustar tinatinaBlock Scalar Keep YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/test.event0000644000175000017500000000005414556031650022354 0ustar tinatina+STR +DOC --- =VAL |ab\n\n \n -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/emit.yaml0000644000175000017500000000002414556031650022151 0ustar tinatina--- | ab ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/in.yaml0000644000175000017500000000002414556031650021621 0ustar tinatina--- |+ ab ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6FWR/out.yaml0000644000175000017500000000002014556031650022016 0ustar tinatina"ab\n\n \n" ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PUW8/0000755000175000017500000000000014556031650020352 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PUW8/in.json0000644000175000017500000000002414556031650021647 0ustar tinatina{ "a": "b" } null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PUW8/===0000644000175000017500000000003414556031650020640 0ustar tinatinaDocument start on last line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PUW8/test.event0000644000175000017500000000010714556031650022372 0ustar tinatina+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PUW8/in.yaml0000644000175000017500000000001514556031650021640 0ustar tinatina--- a: b --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/PUW8/out.yaml0000644000175000017500000000001514556031650022041 0ustar tinatina--- a: b --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NHX8/0000755000175000017500000000000014556031650020334 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NHX8/===0000644000175000017500000000003714556031650020625 0ustar tinatinaEmpty Lines at End of Document YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NHX8/test.event0000644000175000017500000000005414556031650022355 0ustar tinatina+STR +DOC +MAP =VAL : =VAL : -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NHX8/emit.yaml0000644000175000017500000000000214556031650022146 0ustar tinatina: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/NHX8/in.yaml0000644000175000017500000000000414556031650021620 0ustar tinatina: YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5DY/0000755000175000017500000000000014556031650020325 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5DY/===0000644000175000017500000000005514556031650020616 0ustar tinatinaSpec Example 2.11. Mapping between Sequences YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5DY/test.event0000644000175000017500000000034414556031650022350 0ustar tinatina+STR +DOC +MAP +SEQ =VAL :Detroit Tigers =VAL :Chicago cubs -SEQ +SEQ =VAL :2001-07-23 -SEQ +SEQ [] =VAL :New York Yankees =VAL :Atlanta Braves -SEQ +SEQ [] =VAL :2001-07-02 =VAL :2001-08-12 =VAL :2001-08-14 -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5DY/in.yaml0000644000175000017500000000021614556031650021616 0ustar tinatina? - Detroit Tigers - Chicago cubs : - 2001-07-23 ? [ New York Yankees, Atlanta Braves ] : [ 2001-07-02, 2001-08-12, 2001-08-14 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M5DY/out.yaml0000644000175000017500000000021014556031650022011 0ustar tinatina? - Detroit Tigers - Chicago cubs : - 2001-07-23 ? - New York Yankees - Atlanta Braves : - 2001-07-02 - 2001-08-12 - 2001-08-14 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZF4X/0000755000175000017500000000000014556031650020342 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZF4X/in.json0000644000175000017500000000016114556031650021641 0ustar tinatina{ "Mark McGwire": { "hr": 65, "avg": 0.278 }, "Sammy Sosa": { "hr": 63, "avg": 0.288 } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZF4X/===0000644000175000017500000000004614556031647020641 0ustar tinatinaSpec Example 2.6. Mapping of Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZF4X/test.event0000644000175000017500000000025414556031650022365 0ustar tinatina+STR +DOC +MAP =VAL :Mark McGwire +MAP {} =VAL :hr =VAL :65 =VAL :avg =VAL :0.278 -MAP =VAL :Sammy Sosa +MAP {} =VAL :hr =VAL :63 =VAL :avg =VAL :0.288 -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZF4X/in.yaml0000644000175000017500000000012014556031650021625 0ustar tinatinaMark McGwire: {hr: 65, avg: 0.278} Sammy Sosa: { hr: 63, avg: 0.288 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZF4X/out.yaml0000644000175000017500000000010614556031650022032 0ustar tinatinaMark McGwire: hr: 65 avg: 0.278 Sammy Sosa: hr: 63 avg: 0.288 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7PZ/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7PZ/in.json0000644000175000017500000000013714556031650021643 0ustar tinatina[ { "Mark McGwire": 65 }, { "Sammy Sosa": 63 }, { "Ken Griffy": 58 } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7PZ/===0000644000175000017500000000004414556031650020630 0ustar tinatinaSpec Example 2.26. Ordered Mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7PZ/test.event0000644000175000017500000000025114556031650022361 0ustar tinatina+STR +DOC --- +SEQ +MAP =VAL :Mark McGwire =VAL :65 -MAP +MAP =VAL :Sammy Sosa =VAL :63 -MAP +MAP =VAL :Ken Griffy =VAL :58 -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7PZ/in.yaml0000644000175000017500000000047614556031650021642 0ustar tinatina# The !!omap tag is one of the optional types # introduced for YAML 1.1. In 1.2, it is not # part of the standard tags and should not be # enabled by default. # Ordered maps are represented as # A sequence of mappings, with # each mapping having one key --- !!omap - Mark McGwire: 65 - Sammy Sosa: 63 - Ken Griffy: 58 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J7PZ/out.yaml0000644000175000017500000000010014556031650022023 0ustar tinatina--- !!omap - Mark McGwire: 65 - Sammy Sosa: 63 - Ken Griffy: 58 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L94M/0000755000175000017500000000000014556031650020274 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L94M/in.json0000644000175000017500000000003214556031650021570 0ustar tinatina{ "a": 47, "c": "d" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L94M/===0000644000175000017500000000003114556031650020557 0ustar tinatinaTags in Explicit Mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L94M/test.event0000644000175000017500000000020714556031650022315 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL :47 =VAL :c =VAL :d -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L94M/in.yaml0000644000175000017500000000004314556031650021563 0ustar tinatina? !!str a : !!int 47 ? c : !!str d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/L94M/out.yaml0000644000175000017500000000003514556031650021765 0ustar tinatina!!str a: !!int 47 c: !!str d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZVH3/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZVH3/===0000644000175000017500000000003514556031650020630 0ustar tinatinaWrong indented sequence item YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZVH3/test.event0000644000175000017500000000005714556031650022365 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :key =VAL :value -MAP YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZVH3/error0000644000175000017500000000000014556031650021403 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/ZVH3/in.yaml0000644000175000017500000000002614556031650021631 0ustar tinatina- key: value - item1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDM2/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDM2/in.json0000644000175000017500000000005414556031650021616 0ustar tinatina[ { "url": "http://example.org" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDM2/===0000644000175000017500000000003214556031650020602 0ustar tinatinaPlain URL in flow mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDM2/test.event0000644000175000017500000000011614556031650022336 0ustar tinatina+STR +DOC +SEQ +MAP {} =VAL :url =VAL :http://example.org -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDM2/in.yaml0000644000175000017500000000003614556031650021607 0ustar tinatina- { url: http://example.org } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/UDM2/out.yaml0000644000175000017500000000003214556031650022004 0ustar tinatina- url: http://example.org YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SSW6/0000755000175000017500000000000014556031650020351 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SSW6/in.json0000644000175000017500000000002714556031650021651 0ustar tinatina"here's to \"quotes\"" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SSW6/===0000644000175000017500000000006114556031650020637 0ustar tinatinaSpec Example 7.7. Single Quoted Characters [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SSW6/test.event0000644000175000017500000000006114556031650022370 0ustar tinatina+STR +DOC --- =VAL 'here's to "quotes" -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SSW6/in.yaml0000644000175000017500000000003214556031650021636 0ustar tinatina--- 'here''s to "quotes"' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/SSW6/out.yaml0000644000175000017500000000003214556031650022037 0ustar tinatina--- 'here''s to "quotes"' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J3BT/0000755000175000017500000000000014556031650020311 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J3BT/in.json0000644000175000017500000000013614556031650021612 0ustar tinatina{ "quoted": "Quoted \t", "block": "void main() {\n\tprintf(\"Hello, world!\\n\");\n}\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J3BT/===0000644000175000017500000000004314556031650020577 0ustar tinatinaSpec Example 5.12. Tabs and Spaces YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J3BT/test.event0000644000175000017500000000017714556031650022340 0ustar tinatina+STR +DOC +MAP =VAL :quoted =VAL "Quoted \t =VAL :block =VAL |void main() {\n\tprintf("Hello, world!\\n");\n}\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J3BT/in.yaml0000644000175000017500000000014014556031650021576 0ustar tinatina# Tabs and spaces quoted: "Quoted " block: | void main() { printf("Hello, world!\n"); } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/J3BT/out.yaml0000644000175000017500000000011714556031650022003 0ustar tinatinaquoted: "Quoted \t" block: | void main() { printf("Hello, world!\n"); } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QB6E/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QB6E/===0000644000175000017500000000004714556031650020576 0ustar tinatinaWrong indented multiline quoted scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QB6E/test.event0000644000175000017500000000004014556031650022320 0ustar tinatina+STR +DOC --- +MAP =VAL :quoted YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QB6E/error0000644000175000017500000000000014556031650021346 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/QB6E/in.yaml0000644000175000017500000000002414556031650021572 0ustar tinatina--- quoted: "a b c" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DHP8/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DHP8/in.json0000644000175000017500000000003314556031650021607 0ustar tinatina[ "foo", "bar", 42 ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DHP8/===0000644000175000017500000000001614556031650020600 0ustar tinatinaFlow Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DHP8/test.event0000644000175000017500000000007614556031650022337 0ustar tinatina+STR +DOC +SEQ [] =VAL :foo =VAL :bar =VAL :42 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DHP8/in.yaml0000644000175000017500000000001714556031650021602 0ustar tinatina[foo, bar, 42] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DHP8/out.yaml0000644000175000017500000000002114556031650021776 0ustar tinatina- foo - bar - 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2SP/0000755000175000017500000000000014556031650020316 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2SP/===0000644000175000017500000000003614556031650020606 0ustar tinatinaFlow Mapping Key on two lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2SP/test.event0000644000175000017500000000003314556031650022334 0ustar tinatina+STR +DOC +SEQ [] =VAL :23 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2SP/error0000644000175000017500000000000014556031650021360 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C2SP/in.yaml0000644000175000017500000000001214556031650021601 0ustar tinatina[23 ]: 42 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C4HZ/0000755000175000017500000000000014556031650020317 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C4HZ/in.json0000644000175000017500000000047314556031650021624 0ustar tinatina[ { "center": { "x": 73, "y": 129 }, "radius": 7 }, { "start": { "x": 73, "y": 129 }, "finish": { "x": 89, "y": 102 } }, { "start": { "x": 73, "y": 129 }, "color": 16772795, "text": "Pretty vector drawing." } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C4HZ/===0000644000175000017500000000003714556031650020610 0ustar tinatinaSpec Example 2.24. Global Tags YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C4HZ/test.event0000644000175000017500000000071414556031650022343 0ustar tinatina+STR +DOC --- +SEQ +MAP =VAL :center +MAP {} &ORIGIN =VAL :x =VAL :73 =VAL :y =VAL :129 -MAP =VAL :radius =VAL :7 -MAP +MAP =VAL :start =ALI *ORIGIN =VAL :finish +MAP {} =VAL :x =VAL :89 =VAL :y =VAL :102 -MAP -MAP +MAP =VAL :start =ALI *ORIGIN =VAL :color =VAL :0xFFEEBB =VAL :text =VAL :Pretty vector drawing. -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C4HZ/in.yaml0000644000175000017500000000045214556031650021612 0ustar tinatina%TAG ! tag:clarkevans.com,2002: --- !shape # Use the ! handle for presenting # tag:clarkevans.com,2002:circle - !circle center: &ORIGIN {x: 73, y: 129} radius: 7 - !line start: *ORIGIN finish: { x: 89, y: 102 } - !label start: *ORIGIN color: 0xFFEEBB text: Pretty vector drawing. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/C4HZ/out.yaml0000644000175000017500000000046314556031650022015 0ustar tinatina--- ! - ! center: &ORIGIN x: 73 y: 129 radius: 7 - ! start: *ORIGIN finish: x: 89 y: 102 - ! start: *ORIGIN color: 0xFFEEBB text: Pretty vector drawing. YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7A3/0000755000175000017500000000000014556031650020256 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7A3/in.json0000644000175000017500000000007014556031650021554 0ustar tinatina"Bare document" "%!PS-Adobe-2.0 # Not the first line\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7A3/===0000644000175000017500000000004114556031650020542 0ustar tinatinaSpec Example 9.3. Bare Documents YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7A3/test.event0000644000175000017500000000014214556031650022275 0ustar tinatina+STR +DOC =VAL :Bare document -DOC ... +DOC =VAL |%!PS-Adobe-2.0 # Not the first line\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7A3/emit.yaml0000644000175000017500000000007214556031650022077 0ustar tinatinaBare document ... | %!PS-Adobe-2.0 # Not the first line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M7A3/in.yaml0000644000175000017500000000011214556031650021542 0ustar tinatinaBare document ... # No document ... | %!PS-Adobe-2.0 # Not the first line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4JVG/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4JVG/===0000644000175000017500000000003614556031650020611 0ustar tinatinaScalar value with two anchors YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4JVG/test.event0000644000175000017500000000012014556031650022334 0ustar tinatina+STR +DOC +MAP =VAL :top1 +MAP &node1 =VAL &k1 :key1 =VAL :val1 -MAP =VAL :top2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4JVG/error0000644000175000017500000000000014556031650021363 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/4JVG/in.yaml0000644000175000017500000000006614556031650021615 0ustar tinatinatop1: &node1 &k1 key1: val1 top2: &node2 &v2 val2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M9B4/0000755000175000017500000000000014556031650020262 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M9B4/in.json0000644000175000017500000000002414556031650021557 0ustar tinatina"literal\n\ttext\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M9B4/===0000644000175000017500000000004114556031650020546 0ustar tinatinaSpec Example 8.7. Literal Scalar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M9B4/test.event0000644000175000017500000000005414556031650022303 0ustar tinatina+STR +DOC =VAL |literal\n\ttext\n -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M9B4/in.yaml0000644000175000017500000000002414556031650021550 0ustar tinatina| literal text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/M9B4/out.yaml0000644000175000017500000000002414556031650021751 0ustar tinatina| literal text YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U44R/0000755000175000017500000000000014556031650020305 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U44R/===0000644000175000017500000000003714556031650020576 0ustar tinatinaBad indentation in mapping (2) YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U44R/test.event0000644000175000017500000000006714556031650022332 0ustar tinatina+STR +DOC +MAP =VAL :map +MAP =VAL :key1 =VAL "quoted1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U44R/error0000644000175000017500000000000014556031650021347 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U44R/in.yaml0000644000175000017500000000006214556031650021575 0ustar tinatinamap: key1: "quoted1" key2: "bad indentation" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7FWL/0000755000175000017500000000000014556031650020326 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7FWL/in.json0000644000175000017500000000002314556031650021622 0ustar tinatina{ "foo": "baz" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7FWL/===0000644000175000017500000000004114556031650020612 0ustar tinatinaSpec Example 6.24. Verbatim Tags YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7FWL/test.event0000644000175000017500000000012114556031650022342 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :baz -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7FWL/in.yaml0000644000175000017500000000005514556031650021620 0ustar tinatina! foo : ! baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/7FWL/out.yaml0000644000175000017500000000002414556031650022015 0ustar tinatina!!str foo: !bar baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6ZKB/0000755000175000017500000000000014556031650020323 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6ZKB/in.json0000644000175000017500000000004614556031650021624 0ustar tinatina"Document" null { "matches %": 20 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6ZKB/===0000644000175000017500000000003114556031647020614 0ustar tinatinaSpec Example 9.6. Stream YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6ZKB/test.event0000644000175000017500000000015514556031650022346 0ustar tinatina+STR +DOC =VAL :Document -DOC +DOC --- =VAL : -DOC ... +DOC --- +MAP =VAL :matches % =VAL :20 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6ZKB/emit.yaml0000644000175000017500000000005514556031650022145 0ustar tinatinaDocument --- ... %YAML 1.2 --- matches %: 20 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6ZKB/in.yaml0000644000175000017500000000006514556031650021616 0ustar tinatinaDocument --- # Empty ... %YAML 1.2 --- matches %: 20 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CTN5/0000755000175000017500000000000014556031650020320 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CTN5/===0000644000175000017500000000004714556031650020612 0ustar tinatinaFlow sequence with invalid extra comma YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CTN5/test.event0000644000175000017500000000005614556031650022343 0ustar tinatina+STR +DOC --- +SEQ [] =VAL :a =VAL :b =VAL :c YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CTN5/error0000644000175000017500000000000014556031650021362 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CTN5/in.yaml0000644000175000017500000000002314556031650021605 0ustar tinatina--- [ a, b, c, , ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/0000755000175000017500000000000014556031650020360 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/in.json0000644000175000017500000000005714556031650021663 0ustar tinatina" 1st non-empty\n2nd non-empty 3rd non-empty " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/===0000644000175000017500000000005414556031650020650 0ustar tinatinaSpec Example 7.9. Single Quoted Lines [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/test.event0000644000175000017500000000011314556031650022375 0ustar tinatina+STR +DOC --- =VAL ' 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/emit.yaml0000644000175000017500000000006514556031650022203 0ustar tinatina--- ' 1st non-empty 2nd non-empty 3rd non-empty ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/in.yaml0000644000175000017500000000006614556031650021654 0ustar tinatina--- ' 1st non-empty 2nd non-empty 3rd non-empty ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/T4YY/out.yaml0000644000175000017500000000006114556031650022050 0ustar tinatina' 1st non-empty 2nd non-empty 3rd non-empty ' YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JKF3/0000755000175000017500000000000014556031650020304 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JKF3/===0000644000175000017500000000005414556031650020574 0ustar tinatinaMultiline unidented double quoted block key YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JKF3/test.event0000644000175000017500000000002414556031650022322 0ustar tinatina+STR +DOC +SEQ +SEQ YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JKF3/error0000644000175000017500000000000014556031650021346 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JKF3/in.yaml0000644000175000017500000000002114556031650021567 0ustar tinatina- - "bar bar": x YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93JH/0000755000175000017500000000000014556031650020264 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93JH/in.json0000644000175000017500000000012314556031650021561 0ustar tinatina[ { "key": "value", "key2": "value2" }, { "key3": "value3" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93JH/===0000644000175000017500000000004114556031650020550 0ustar tinatinaBlock Mappings in Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93JH/test.event0000644000175000017500000000017014556031650022304 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :key =VAL :value =VAL :key2 =VAL :value2 -MAP +MAP =VAL :key3 =VAL :value3 -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93JH/in.yaml0000644000175000017500000000006114556031650021553 0ustar tinatina - key: value key2: value2 - key3: value3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/93JH/out.yaml0000644000175000017500000000005314556031650021755 0ustar tinatina- key: value key2: value2 - key3: value3 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2AUY/0000755000175000017500000000000014556031650020327 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2AUY/in.json0000644000175000017500000000003614556031650021627 0ustar tinatina[ "a", "b", 42, "d" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2AUY/===0000644000175000017500000000002714556031650020617 0ustar tinatinaTags in Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2AUY/test.event0000644000175000017500000000015714556031650022354 0ustar tinatina+STR +DOC +SEQ =VAL :a =VAL :b =VAL :42 =VAL :d -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2AUY/in.yaml0000644000175000017500000000004114556031650021614 0ustar tinatina - !!str a - b - !!int 42 - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/2AUY/out.yaml0000644000175000017500000000003514556031650022020 0ustar tinatina- !!str a - b - !!int 42 - d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RHX7/0000755000175000017500000000000014556031650020337 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RHX7/===0000644000175000017500000000005314556031650020626 0ustar tinatinaYAML directive without document end marker YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RHX7/test.event0000644000175000017500000000005114556031650022355 0ustar tinatina+STR +DOC --- +MAP =VAL :key =VAL :value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RHX7/error0000644000175000017500000000000014556031650021401 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/RHX7/in.yaml0000644000175000017500000000003514556031650021627 0ustar tinatina--- key: value %YAML 1.2 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/0000755000175000017500000000000014556031650020263 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/00/0000755000175000017500000000000014556031650020502 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/00/in.json0000644000175000017500000000002414556031650021777 0ustar tinatina{ "foo" : "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/00/===0000644000175000017500000000004014556031650020765 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/00/test.event0000644000175000017500000000006214556031650022522 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :bar -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/00/emit.yaml0000644000175000017500000000001114556031650022314 0ustar tinatinafoo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/00/in.yaml0000644000175000017500000000001314556031650021766 0ustar tinatinafoo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/02/0000755000175000017500000000000014556031650020504 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/02/in.json0000644000175000017500000000003014556031650021776 0ustar tinatina{ "foo" : "bar baz" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/02/===0000644000175000017500000000004014556031650020767 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/02/test.event0000644000175000017500000000006614556031650022530 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL "bar baz -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/02/emit.yaml0000644000175000017500000000001714556031650022324 0ustar tinatinafoo: "bar baz" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/02/in.yaml0000644000175000017500000000002214556031650021770 0ustar tinatinafoo: "bar baz" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/07/0000755000175000017500000000000014556031650020511 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/07/in.json0000644000175000017500000000000514556031650022005 0ustar tinatinanull YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/07/===0000644000175000017500000000004014556031650020774 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/07/test.event0000644000175000017500000000003714556031650022533 0ustar tinatina+STR +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/07/emit.yaml0000644000175000017500000000001114556031650022323 0ustar tinatina--- null YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/07/in.yaml0000644000175000017500000000002014556031650021773 0ustar tinatina%YAML 1.2 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/04/0000755000175000017500000000000014556031650020506 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/04/in.json0000644000175000017500000000003514556031650022005 0ustar tinatina{ "foo" : 1, "bar" : 2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/04/===0000644000175000017500000000004014556031650020771 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/04/test.event0000644000175000017500000000010214556031650022521 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :1 =VAL :bar =VAL :2 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/04/emit.yaml0000644000175000017500000000001614556031650022325 0ustar tinatinafoo: 1 bar: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/04/in.yaml0000644000175000017500000000002014556031650021770 0ustar tinatinafoo: 1 bar: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/05/0000755000175000017500000000000014556031650020507 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/05/in.json0000644000175000017500000000003514556031650022006 0ustar tinatina{ "foo" : 1, "bar" : 2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/05/===0000644000175000017500000000004014556031650020772 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/05/test.event0000644000175000017500000000010214556031650022522 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :1 =VAL :bar =VAL :2 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/05/emit.yaml0000644000175000017500000000001614556031650022326 0ustar tinatinafoo: 1 bar: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/05/in.yaml0000644000175000017500000000002114556031650021772 0ustar tinatinafoo: 1 bar: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/0000755000175000017500000000000014556031650020503 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/in.json0000644000175000017500000000002414556031650022000 0ustar tinatina{ "foo" : "bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/===0000644000175000017500000000004014556031650020766 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/test.event0000644000175000017500000000003114556031650022517 0ustar tinatina+STR +DOC +MAP =VAL :foo YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/emit.yaml0000644000175000017500000000001514556031650022321 0ustar tinatina--- foo: bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/error0000644000175000017500000000000014556031650021545 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/01/in.yaml0000644000175000017500000000002014556031650021765 0ustar tinatinafoo: "bar baz" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/0000755000175000017500000000000014556031650020510 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/in.json0000644000175000017500000000003514556031650022007 0ustar tinatina{ "foo" : 1, "bar" : 2 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/===0000644000175000017500000000004014556031650020773 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/test.event0000644000175000017500000000005614556031650022533 0ustar tinatina+STR +DOC +MAP =VAL :foo +MAP =VAL :a =VAL :1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/emit.yaml0000644000175000017500000000002214556031650022324 0ustar tinatina--- foo: 1 bar: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/error0000644000175000017500000000000014556031650021552 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/06/in.yaml0000644000175000017500000000002414556031650021776 0ustar tinatinafoo: a: 1 b: 2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/03/0000755000175000017500000000000014556031650020505 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/03/in.json0000644000175000017500000000002014556031650021776 0ustar tinatina{ "foo" : 1 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/03/===0000644000175000017500000000004014556031650020770 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/03/test.event0000644000175000017500000000006014556031650022523 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :1 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/03/emit.yaml0000644000175000017500000000000714556031650022324 0ustar tinatinafoo: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/03/in.yaml0000644000175000017500000000001214556031650021770 0ustar tinatina foo: 1 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/08/0000755000175000017500000000000014556031650020512 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/08/in.json0000644000175000017500000000003714556031650022013 0ustar tinatina{ "foo" : "bar baz \t \t " } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/08/===0000644000175000017500000000004014556031650020775 0ustar tinatinaTabs that look like indentation YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/08/test.event0000644000175000017500000000007514556031650022536 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL "bar baz \t \t -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/08/emit.yaml0000644000175000017500000000002614556031650022332 0ustar tinatinafoo: "bar baz \t \t " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DK95/08/in.yaml0000644000175000017500000000003114556031650021776 0ustar tinatinafoo: "bar baz " YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3GZX/0000755000175000017500000000000014556031650020342 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3GZX/in.json0000644000175000017500000000016314556031650021643 0ustar tinatina{ "First occurrence": "Foo", "Second occurrence": "Foo", "Override anchor": "Bar", "Reuse anchor": "Bar" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3GZX/===0000644000175000017500000000003614556031650020632 0ustar tinatinaSpec Example 7.1. Alias Nodes YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3GZX/test.event0000644000175000017500000000026414556031650022366 0ustar tinatina+STR +DOC +MAP =VAL :First occurrence =VAL &anchor :Foo =VAL :Second occurrence =ALI *anchor =VAL :Override anchor =VAL &anchor :Bar =VAL :Reuse anchor =ALI *anchor -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3GZX/in.yaml0000644000175000017500000000015414556031650021634 0ustar tinatinaFirst occurrence: &anchor Foo Second occurrence: *anchor Override anchor: &anchor Bar Reuse anchor: *anchor YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9DXL/0000755000175000017500000000000014556031650020327 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9DXL/in.json0000644000175000017500000000006714556031650021633 0ustar tinatina{ "Mapping": "Document" } null { "matches %": 20 } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9DXL/===0000644000175000017500000000003714556031650020620 0ustar tinatinaSpec Example 9.6. Stream [1.3] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9DXL/test.event0000644000175000017500000000020514556031650022346 0ustar tinatina+STR +DOC +MAP =VAL :Mapping =VAL :Document -MAP -DOC +DOC --- =VAL : -DOC ... +DOC --- +MAP =VAL :matches % =VAL :20 -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9DXL/emit.yaml0000644000175000017500000000006614556031650022153 0ustar tinatinaMapping: Document --- ... %YAML 1.2 --- matches %: 20 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9DXL/in.yaml0000644000175000017500000000007614556031650021624 0ustar tinatinaMapping: Document --- # Empty ... %YAML 1.2 --- matches %: 20 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CXX2/0000755000175000017500000000000014556031650020333 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CXX2/===0000644000175000017500000000005314556031650020622 0ustar tinatinaMapping with anchor on document start line YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CXX2/test.event0000644000175000017500000000001614556031650022352 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CXX2/error0000644000175000017500000000000014556031650021375 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/CXX2/in.yaml0000644000175000017500000000002114556031650021616 0ustar tinatina--- &anchor a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/26DV/0000755000175000017500000000000014556031650020270 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/26DV/in.json0000644000175000017500000000034114556031650021567 0ustar tinatina{ "top1": { "key1": "scalar1" }, "top2": { "key2": "scalar2" }, "top3": { "scalar1": "scalar3" }, "top4": { "scalar2": "scalar4" }, "top5": "scalar5", "top6": { "key6": "scalar6" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/26DV/===0000644000175000017500000000004414556031650020557 0ustar tinatinaWhitespace around colon in mappings YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/26DV/test.event0000644000175000017500000000050114556031650022306 0ustar tinatina+STR +DOC +MAP =VAL "top1 +MAP =VAL "key1 =VAL &alias1 :scalar1 -MAP =VAL 'top2 +MAP =VAL 'key2 =VAL &alias2 :scalar2 -MAP =VAL :top3 +MAP &node3 =ALI *alias1 =VAL :scalar3 -MAP =VAL :top4 +MAP =ALI *alias2 =VAL :scalar4 -MAP =VAL :top5 =VAL :scalar5 =VAL :top6 +MAP =VAL &anchor6 'key6 =VAL :scalar6 -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/26DV/in.yaml0000644000175000017500000000030114556031650021554 0ustar tinatina"top1" : "key1" : &alias1 scalar1 'top2' : 'key2' : &alias2 scalar2 top3: &node3 *alias1 : scalar3 top4: *alias2 : scalar4 top5 : scalar5 top6: &anchor6 'key6' : scalar6 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/26DV/out.yaml0000644000175000017500000000025614556031650021766 0ustar tinatina"top1": "key1": &alias1 scalar1 'top2': 'key2': &alias2 scalar2 top3: &node3 *alias1 : scalar3 top4: *alias2 : scalar4 top5: scalar5 top6: &anchor6 'key6': scalar6 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JY7Z/0000755000175000017500000000000014556031650020352 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JY7Z/===0000644000175000017500000000005314556031650020641 0ustar tinatinaTrailing content that looks like a mapping YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JY7Z/test.event0000644000175000017500000000010114556031650022364 0ustar tinatina+STR +DOC +MAP =VAL :key1 =VAL "quoted1 =VAL :key2 =VAL "quoted2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JY7Z/error0000644000175000017500000000000014556031650021414 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JY7Z/in.yaml0000644000175000017500000000010214556031650021635 0ustar tinatinakey1: "quoted1" key2: "quoted2" no key: nor value key3: "quoted3" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D83L/0000755000175000017500000000000014556031650020261 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D83L/in.json0000644000175000017500000000010114556031650021552 0ustar tinatina[ "explicit indent and chomp", "chomp and explicit indent" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D83L/===0000644000175000017500000000003514556031650020550 0ustar tinatinaBlock scalar indicator order YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D83L/test.event0000644000175000017500000000013614556031650022303 0ustar tinatina+STR +DOC +SEQ =VAL |explicit indent and chomp =VAL |chomp and explicit indent -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D83L/in.yaml0000644000175000017500000000010414556031650021546 0ustar tinatina- |2- explicit indent and chomp - |-2 chomp and explicit indent YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/D83L/out.yaml0000644000175000017500000000010214556031650021745 0ustar tinatina- |- explicit indent and chomp - |- chomp and explicit indent YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JQ4R/0000755000175000017500000000000014556031650020327 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JQ4R/in.json0000644000175000017500000000011214556031650021622 0ustar tinatina{ "block sequence": [ "one", { "two": "three" } ] } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JQ4R/===0000644000175000017500000000004214556031650020614 0ustar tinatinaSpec Example 8.14. Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JQ4R/test.event0000644000175000017500000000014714556031650022353 0ustar tinatina+STR +DOC +MAP =VAL :block sequence +SEQ =VAL :one +MAP =VAL :two =VAL :three -MAP -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JQ4R/in.yaml0000644000175000017500000000005014556031650021614 0ustar tinatinablock sequence: - one - two : three YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/JQ4R/out.yaml0000644000175000017500000000004314556031650022017 0ustar tinatinablock sequence: - one - two: three YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9FMG/0000755000175000017500000000000014556031650020311 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9FMG/in.json0000644000175000017500000000013614556031650021612 0ustar tinatina{ "a": { "b": { "c": "d" }, "e": { "f": "g" } }, "h": "i" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9FMG/===0000644000175000017500000000003314556031650020576 0ustar tinatinaMulti-level Mapping Indent YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9FMG/test.event0000644000175000017500000000020414556031650022327 0ustar tinatina+STR +DOC +MAP =VAL :a +MAP =VAL :b +MAP =VAL :c =VAL :d -MAP =VAL :e +MAP =VAL :f =VAL :g -MAP -MAP =VAL :h =VAL :i -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9FMG/in.yaml0000644000175000017500000000004414556031650021601 0ustar tinatinaa: b: c: d e: f: g h: i YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TD5N/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TD5N/===0000644000175000017500000000003614556031650020611 0ustar tinatinaInvalid scalar after sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TD5N/test.event0000644000175000017500000000004714556031650022344 0ustar tinatina+STR +DOC +SEQ =VAL :item1 =VAL :item2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TD5N/error0000644000175000017500000000000014556031650021363 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/TD5N/in.yaml0000644000175000017500000000003014556031650021604 0ustar tinatina- item1 - item2 invalid YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V55R/0000755000175000017500000000000014556031650020310 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V55R/in.json0000644000175000017500000000003714556031650021611 0ustar tinatina[ "a", "b", "a", "b" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V55R/===0000644000175000017500000000003214556031650020574 0ustar tinatinaAliases in Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V55R/test.event0000644000175000017500000000010414556031650022325 0ustar tinatina+STR +DOC +SEQ =VAL &a :a =VAL &b :b =ALI *a =ALI *b -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/V55R/in.yaml0000644000175000017500000000003014556031650021573 0ustar tinatina- &a a - &b b - *a - *b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9HCY/0000755000175000017500000000000014556031650020323 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9HCY/===0000644000175000017500000000004714556031650020615 0ustar tinatinaNeed document footer before directives YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9HCY/test.event0000644000175000017500000000003314556031650022341 0ustar tinatina+STR +DOC =VAL "bar YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9HCY/error0000644000175000017500000000000014556031650021365 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9HCY/in.yaml0000644000175000017500000000007314556031650021615 0ustar tinatina!foo "bar" %TAG ! tag:example.com,2000:app/ --- !foo "bar" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9YRD/0000755000175000017500000000000014556031650020336 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9YRD/in.json0000644000175000017500000000001514556031650021633 0ustar tinatina"a b c d\ne" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9YRD/===0000644000175000017500000000003614556031650020626 0ustar tinatinaMultiline Scalar at Top Level YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9YRD/test.event0000644000175000017500000000004514556031650022357 0ustar tinatina+STR +DOC =VAL :a b c d\ne -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9YRD/in.yaml0000644000175000017500000000001714556031650021626 0ustar tinatinaa b c d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9YRD/out.yaml0000644000175000017500000000001314556031650022023 0ustar tinatinaa b c d e YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/0000755000175000017500000000000014556031650020331 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/in.json0000644000175000017500000000007514556031650021634 0ustar tinatina{ "foo": 1, "bar": 2, "text": "a\n \nb\n\nc\n\nd\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/===0000644000175000017500000000001414556031650020615 0ustar tinatinaBlank lines YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/test.event0000644000175000017500000000015014556031650022347 0ustar tinatina+STR +DOC +MAP =VAL :foo =VAL :1 =VAL :bar =VAL :2 =VAL :text =VAL |a\n \nb\n\nc\n\nd\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/emit.yaml0000644000175000017500000000005514556031650022153 0ustar tinatinafoo: 1 bar: 2 text: | a b c d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/in.yaml0000644000175000017500000000006414556031650021623 0ustar tinatinafoo: 1 bar: 2 text: | a b c d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/H2RW/out.yaml0000644000175000017500000000005314556031650022022 0ustar tinatinafoo: 1 bar: 2 text: "a\n \nb\n\nc\n\nd\n" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/0000755000175000017500000000000014556031650020341 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/00/0000755000175000017500000000000014556031650020560 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/00/===0000644000175000017500000000002314556031650021044 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/00/test.event0000644000175000017500000000000514556031650022575 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/00/error0000644000175000017500000000000014556031650021622 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/00/in.yaml0000644000175000017500000000002214556031650022044 0ustar tinatina%YAML 1.1#... --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/02/0000755000175000017500000000000014556031650020562 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/02/in.json0000644000175000017500000000000514556031650022056 0ustar tinatinanull YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/02/===0000644000175000017500000000002314556031650021046 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/02/test.event0000644000175000017500000000003714556031650022604 0ustar tinatina+STR +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/02/in.yaml0000644000175000017500000000001714556031650022052 0ustar tinatina%YAML 1.1 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/02/out.yaml0000644000175000017500000000000414556031650022247 0ustar tinatina--- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/04/0000755000175000017500000000000014556031650020564 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/04/in.json0000644000175000017500000000000514556031650022060 0ustar tinatinanull YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/04/===0000644000175000017500000000002314556031650021050 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/04/test.event0000644000175000017500000000003714556031650022606 0ustar tinatina+STR +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/04/in.yaml0000644000175000017500000000003114556031650022050 0ustar tinatina%YAML 1.1 # comment --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/04/out.yaml0000644000175000017500000000000414556031650022251 0ustar tinatina--- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/05/0000755000175000017500000000000014556031650020565 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/05/in.json0000644000175000017500000000000514556031650022061 0ustar tinatinanull YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/05/===0000644000175000017500000000002314556031650021051 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/05/test.event0000644000175000017500000000003714556031650022607 0ustar tinatina+STR +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/05/in.yaml0000644000175000017500000000001514556031650022053 0ustar tinatina%YAM 1.1 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/05/out.yaml0000644000175000017500000000000414556031650022252 0ustar tinatina--- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/01/0000755000175000017500000000000014556031650020561 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/01/===0000644000175000017500000000002314556031650021045 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/01/test.event0000644000175000017500000000000514556031650022576 0ustar tinatina+STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/01/error0000644000175000017500000000000014556031650021623 0ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/01/in.yaml0000644000175000017500000000003414556031650022050 0ustar tinatina%YAML 1.2 --- %YAML 1.2 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/06/0000755000175000017500000000000014556031650020566 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/06/in.json0000644000175000017500000000000514556031650022062 0ustar tinatinanull YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/06/===0000644000175000017500000000002314556031650021052 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/06/test.event0000644000175000017500000000003714556031650022610 0ustar tinatina+STR +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/06/in.yaml0000644000175000017500000000001714556031650022056 0ustar tinatina%YAMLL 1.1 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/06/out.yaml0000644000175000017500000000000414556031650022253 0ustar tinatina--- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/03/0000755000175000017500000000000014556031650020563 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/03/in.json0000644000175000017500000000000514556031650022057 0ustar tinatinanull YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/03/===0000644000175000017500000000002314556031650021047 0ustar tinatinaDirective variants YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/03/test.event0000644000175000017500000000003714556031650022605 0ustar tinatina+STR +DOC --- =VAL : -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/03/in.yaml0000644000175000017500000000002014556031650022045 0ustar tinatina%YAML 1.1 --- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MUS6/03/out.yaml0000644000175000017500000000000414556031650022250 0ustar tinatina--- YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9J7A/0000755000175000017500000000000014556031650020261 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9J7A/in.json0000644000175000017500000000004414556031650021560 0ustar tinatina{ "foo": { "bar": "baz" } } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9J7A/===0000644000175000017500000000002614556031650020550 0ustar tinatinaSimple Mapping Indent YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9J7A/test.event0000644000175000017500000000010614556031650022300 0ustar tinatina+STR +DOC +MAP =VAL :foo +MAP =VAL :bar =VAL :baz -MAP -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9J7A/in.yaml0000644000175000017500000000002014556031650021543 0ustar tinatinafoo: bar: baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3XV/0000755000175000017500000000000014556031650020354 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3XV/in.json0000644000175000017500000000033214556031650021653 0ustar tinatina{ "top1": { "key1": "one" }, "top2": { "key2": "two" }, "top3": { "key3": "three" }, "top4": { "key4": "four" }, "top5": { "key5": "five" }, "top6": "six", "top7": "seven" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3XV/===0000644000175000017500000000003514556031650020643 0ustar tinatinaNode and Mapping Key Anchors YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3XV/test.event0000644000175000017500000000053014556031650022374 0ustar tinatina+STR +DOC --- +MAP =VAL :top1 +MAP &node1 =VAL &k1 :key1 =VAL :one -MAP =VAL :top2 +MAP &node2 =VAL :key2 =VAL :two -MAP =VAL :top3 +MAP =VAL &k3 :key3 =VAL :three -MAP =VAL :top4 +MAP &node4 =VAL &k4 :key4 =VAL :four -MAP =VAL :top5 +MAP &node5 =VAL :key5 =VAL :five -MAP =VAL :top6 =VAL &val6 :six =VAL :top7 =VAL &val7 :seven -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3XV/in.yaml0000644000175000017500000000027614556031650021653 0ustar tinatina--- top1: &node1 &k1 key1: one top2: &node2 # comment key2: two top3: &k3 key3: three top4: &node4 &k4 key4: four top5: &node5 key5: five top6: &val6 six top7: &val7 seven YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/U3XV/out.yaml0000644000175000017500000000025414556031650022050 0ustar tinatina--- top1: &node1 &k1 key1: one top2: &node2 key2: two top3: &k3 key3: three top4: &node4 &k4 key4: four top5: &node5 key5: five top6: &val6 six top7: &val7 seven YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MYW6/0000755000175000017500000000000014556031650020351 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MYW6/in.json0000644000175000017500000000000514556031650021645 0ustar tinatina"ab" YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MYW6/===0000644000175000017500000000002314556031650020635 0ustar tinatinaBlock Scalar Strip YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MYW6/test.event0000644000175000017500000000004114556031650022366 0ustar tinatina+STR +DOC =VAL |ab -DOC ... -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MYW6/in.yaml0000644000175000017500000000001714556031650021641 0ustar tinatina|- ab ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/MYW6/out.yaml0000644000175000017500000000001414556031650022037 0ustar tinatina|- ab ... YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CK3/0000755000175000017500000000000014556031650020255 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CK3/in.json0000644000175000017500000000003614556031650021555 0ustar tinatina[ "foo", "bar", "baz" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CK3/===0000644000175000017500000000004214556031647020550 0ustar tinatinaSpec Example 6.26. Tag Shorthands YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CK3/test.event0000644000175000017500000000020114556031650022270 0ustar tinatina+STR +DOC --- +SEQ =VAL :foo =VAL :bar =VAL :baz -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/6CK3/in.yaml0000644000175000017500000000012014556031650021540 0ustar tinatina%TAG !e! tag:example.com,2000:app/ --- - !local foo - !!str bar - !e!tag%21 baz YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DC7X/0000755000175000017500000000000014556031650020314 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DC7X/in.json0000644000175000017500000000006314556031650021614 0ustar tinatina{ "a": "b", "seq": [ "a" ], "c": "d" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DC7X/===0000644000175000017500000000002614556031650020603 0ustar tinatinaVarious trailing tabs YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DC7X/test.event0000644000175000017500000000013214556031650022332 0ustar tinatina+STR +DOC +MAP =VAL :a =VAL :b =VAL :seq +SEQ =VAL :a -SEQ =VAL :c =VAL :d -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DC7X/in.yaml0000644000175000017500000000003214556031650021601 0ustar tinatinaa: b seq: - a c: d #X YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/DC7X/out.yaml0000644000175000017500000000002314556031650022002 0ustar tinatinaa: b seq: - a c: d YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9BXH/0000755000175000017500000000000014556031650020321 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9BXH/in.json0000644000175000017500000000014014556031650021615 0ustar tinatina[ { "single line": null, "a": "b" }, { "multi line": null, "a": "b" } ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9BXH/===0000644000175000017500000000006614556031647020622 0ustar tinatinaMultiline doublequoted flow mapping key without value YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9BXH/test.event0000644000175000017500000000021514556031650022341 0ustar tinatina+STR +DOC --- +SEQ +MAP {} =VAL "single line =VAL : =VAL :a =VAL :b -MAP +MAP {} =VAL "multi line =VAL : =VAL :a =VAL :b -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9BXH/in.yaml0000644000175000017500000000006714556031650021616 0ustar tinatina--- - { "single line", a: b} - { "multi line", a: b} YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/9BXH/out.yaml0000644000175000017500000000006314556031650022013 0ustar tinatina--- - "single line": a: b - "multi line": a: b YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3ALJ/0000755000175000017500000000000014556031650020300 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3ALJ/in.json0000644000175000017500000000005514556031650021601 0ustar tinatina[ [ "s1_i1", "s1_i2" ], "s2" ] YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3ALJ/===0000644000175000017500000000004114556031650020564 0ustar tinatinaBlock Sequence in Block Sequence YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3ALJ/test.event0000644000175000017500000000011114556031650022313 0ustar tinatina+STR +DOC +SEQ +SEQ =VAL :s1_i1 =VAL :s1_i2 -SEQ =VAL :s2 -SEQ -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/3ALJ/in.yaml0000644000175000017500000000003114556031650021564 0ustar tinatina- - s1_i1 - s1_i2 - s2 YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMK4/0000755000175000017500000000000014556031650020312 5ustar tinatinaYAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMK4/in.json0000644000175000017500000000023314556031650021611 0ustar tinatina{ "name": "Mark McGwire", "accomplishment": "Mark set a major league home run record in 1998.\n", "stats": "65 Home Runs\n0.278 Batting Average\n" } YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMK4/===0000644000175000017500000000006014556031650020577 0ustar tinatinaSpec Example 2.16. Indentation determines scope YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMK4/test.event0000644000175000017500000000030214556031650022327 0ustar tinatina+STR +DOC +MAP =VAL :name =VAL :Mark McGwire =VAL :accomplishment =VAL >Mark set a major league home run record in 1998.\n =VAL :stats =VAL |65 Home Runs\n0.278 Batting Average\n -MAP -DOC -STR YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMK4/in.yaml0000644000175000017500000000021214556031650021577 0ustar tinatinaname: Mark McGwire accomplishment: > Mark set a major league home run record in 1998. stats: | 65 Home Runs 0.278 Batting Average YAML-PP-v0.38.0/test-suite/yaml-test-suite-data/HMK4/out.yaml0000644000175000017500000000021014556031650021776 0ustar tinatinaname: Mark McGwire accomplishment: > Mark set a major league home run record in 1998. stats: | 65 Home Runs 0.278 Batting Average YAML-PP-v0.38.0/ext/0000755000175000017500000000000014556031647012332 5ustar tinatinaYAML-PP-v0.38.0/ext/yaml-test-schema/0000755000175000017500000000000014556031650015501 5ustar tinatinaYAML-PP-v0.38.0/ext/yaml-test-schema/README.md0000644000175000017500000000017614556031647016772 0ustar tinatina## YAML Test Data for Schemas (YAML 1.1, YAML 1.2 Core, JSON, Failsafe) [HTML](https://perlpunk.github.io/yaml-test-schema/) YAML-PP-v0.38.0/ext/yaml-test-schema/etc/0000755000175000017500000000000014556031650016254 5ustar tinatinaYAML-PP-v0.38.0/ext/yaml-test-schema/etc/generate-schema-html.pl0000644000175000017500000001011014556031650022574 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use 5.010; use Data::Dumper; use FindBin '$Bin'; use lib "$Bin/../lib"; use YAML::PP; use URI::Escape qw/ uri_escape /; my $file = "$Bin/../yaml-schema.yaml"; my $htmlfile = "$Bin/../gh-pages/data.html"; my $data = YAML::PP::LoadFile($file); my %examples; for my $input (sort keys %$data) { my $schemas = $data->{ $input }; my @keys = keys %$schemas; for my $key (@keys) { my $def = $schemas->{ $key }; my @schemas = split m/ *, */, $key; for my $schema (@schemas) { $examples{ $input }->{ $schema } = $def; } } } my @keys = qw/ failsafe json core yaml11 /; for my $input (sort keys %examples) { my $schemas = $examples{ $input }; my $str = 0; for my $schema (@keys) { my $example = $schemas->{ $schema }; unless ($example) { $example = $schemas->{ $schema } = [ 'todo', '', '', '' ]; } if ($example->[0] eq 'str' or $example->[0] eq 'todo') { $str++; } } } my %type_index = ( null => 0, bool => 1, float => 2, inf => 3, nan => 4, int => 5, str => 6, todo => 7, ); my $table = schema_table(\%examples); my $html = generate_html($table); open my $fh, '>', $htmlfile or die $!; print $fh $html; close $fh; sub sort_rows { my ($x, $y, $a, $b) = @_; $type_index{ $x->{yaml11}->[0] } <=> $type_index{ $y->{yaml11}->[0] } || $type_index{ $x->{core}->[0] } <=> $type_index{ $y->{core}->[0] } || $type_index{ $x->{json}->[0] } <=> $type_index{ $y->{json}->[0] } || lc $a cmp lc $b || $a cmp $b } sub schema_table { my ($examples) = @_; my $html = ''; my @sorted = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { not m/^!!\w/ } keys %$examples; my @sorted_explicit = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { m/^!!\w/ } keys %$examples; my @all = (@sorted, @sorted_explicit); $html .= qq{\n}; my $header; $header .= qq{}; $header .= join '', map { my $m = $_ eq 'YAML' ? 'YAML.pm' : $_; qq{\n}; } (qw/ Failsafe JSON Core /, 'YAML 1.1'); $header .= qq{\n}; $html .= $header; $html .= qq{} . (qq{} x 4) . qq{\n}; for my $i (0 .. $#all) { my $input = $all[ $i ]; if ($i and $i % 30 == 0) { $html .= $header; } my $schemas = $examples->{ $input }; my $input_escaped = uri_escape($input); $input =~ s/ / /g; $html .= qq{}; } else { $html .= qq{}; } } $html .= qq{\n}; } $html .= "
YAML 1.2YAML 1.1
Input YAML$m
TypeOutput
$input}; for my $schema (@keys) { my $example = $schemas->{ $schema }; my $class = 'type-str'; my ($type, $perl, $out) = @$example; $class = "type-$type"; for ($out) { s/ / /g; } if (0 and $type eq 'str') { $html .= qq{$type$type
$out
"; return $html; } sub generate_html { my ($content) = @_; my $html = <<'EOM'; YAML Schema Data YAML Test Schema | Schemas | Test Data

For each of the four schemas, the first column shows to which type the input YAML should resolve. The second column shows how the output YAML should look like.

EOM $html .= $content; $html .= <<'EOM'; EOM return $html; } YAML-PP-v0.38.0/ext/yaml-test-schema/Makefile0000644000175000017500000000013114556031647017142 0ustar tinatinagh-pages: git worktree add gh-pages gh-pages update: perl etc/generate-schema-html.pl YAML-PP-v0.38.0/ext/yaml-test-schema/yaml-schema.yaml0000644000175000017500000005440714556031647020605 0ustar tinatina--- # Documentation: # # 'input YAML': # schema1, schema2: ['type', 'loaded value', 'dumped YAML'] # # If you use this, you need to split the keys by ', ' to be able # to iterate over the schemas. # # In case the 'loaded value' is a function (e.g. 'true()'), it stands for the # native type # true(): boolean true # false(): boolean false # null(): undefined, Null, None, ... # inf(): infinity # inf-neg(): negative infinity # nan(): Not A Number # # The 'dumped YAML' is how the value should be dumped, without the starting --- ############################################### # True ############################################### 'true': json, core, yaml11: ['bool', 'true()', 'true'] failsafe: ['str', 'true', 'true'] 'True': core, yaml11: ['bool', 'true()', 'true'] failsafe, json: ['str', 'True', 'True'] 'TRUE': core, yaml11: ['bool', 'true()', 'true'] failsafe, json: ['str', 'TRUE', 'TRUE'] 'y': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'y', "y"] 'Y': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'Y', "Y"] 'yes': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'yes', "yes"] 'Yes': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'Yes', "Yes"] 'YES': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'YES', "YES"] 'on': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'on', "on"] 'On': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'On', "On"] 'ON': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'ON', "ON"] '!!bool true': json, core, yaml11: ['bool', 'true()', 'true'] '!!bool True': core, yaml11: ['bool', 'true()', 'true'] '!!bool TRUE': core, yaml11: ['bool', 'true()', 'true'] '!!bool y': yaml11: ['bool', 'true()', "true"] '!!bool Y': yaml11: ['bool', 'true()', "true"] '!!bool yes': yaml11: ['bool', 'true()', "true"] '!!bool Yes': yaml11: ['bool', 'true()', "true"] '!!bool YES': yaml11: ['bool', 'true()', "true"] '!!bool on': yaml11: ['bool', 'true()', "true"] '!!bool On': yaml11: ['bool', 'true()', "true"] '!!bool ON': yaml11: ['bool', 'true()', "true"] '!!str true': failsafe: ['str', 'true', 'true'] json, core, yaml11: ['str', 'true', "'true'"] '!!str True': failsafe, json: ['str', 'True', 'True'] core, yaml11: ['str', 'True', "'True'"] '!!str TRUE': failsafe, json: ['str', 'TRUE', 'TRUE'] core, yaml11: ['str', 'TRUE', "'TRUE'"] '!!str yes': failsafe, json, core: ['str', 'yes', "yes" ] yaml11: ['str', 'yes', "'yes'" ] '!!str Yes': failsafe, json, core: ['str', 'Yes', "Yes" ] yaml11: ['str', 'Yes', "'Yes'" ] '!!str YES': failsafe, json, core: ['str', 'YES', "YES" ] yaml11: ['str', 'YES', "'YES'" ] '!!str y': failsafe, json, core: ['str', 'y', "y" ] yaml11: ['str', 'y', "'y'" ] '!!str Y': failsafe, json, core: ['str', 'Y', "Y" ] yaml11: ['str', 'Y', "'Y'" ] '!!str on': failsafe, json, core: ['str', 'on', "on" ] yaml11: ['str', 'on', "'on'" ] '!!str On': failsafe, json, core: ['str', 'On', "On" ] yaml11: ['str', 'On', "'On'" ] '!!str ON': failsafe, json, core: ['str', 'ON', "ON" ] yaml11: ['str', 'ON', "'ON'" ] ############################################### # False ############################################### 'false': failsafe: ['str', 'false', 'false'] json, core, yaml11: ['bool', 'false()', 'false'] 'False': failsafe, json: ['str', 'False', 'False'] core, yaml11: ['bool', 'false()', 'false'] 'FALSE': failsafe, json: ['str', 'FALSE', 'FALSE'] core, yaml11: ['bool', 'false()', 'false'] 'n': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'n', "n"] 'N': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'N', "N"] 'no': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'no', "no"] 'NO': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'NO', "NO"] 'off': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'off', "off"] 'Off': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'Off', "Off"] 'OFF': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'OFF', "OFF"] '!!bool false': json, core, yaml11: ['bool', 'false()', 'false'] '!!bool False': core, yaml11: ['bool', 'false()', 'false'] '!!bool FALSE': core, yaml11: ['bool', 'false()', 'false'] '!!bool n': yaml11: ['bool', 'false()', "false"] '!!bool N': yaml11: ['bool', 'false()', "false"] '!!bool no': yaml11: ['bool', 'false()', "false"] '!!bool No': yaml11: ['bool', 'false()', "false"] '!!bool NO': yaml11: ['bool', 'false()', "false"] '!!bool off': yaml11: ['bool', 'false()', "false"] '!!bool Off': yaml11: ['bool', 'false()', "false"] '!!bool OFF': yaml11: ['bool', 'false()', "false"] '!!str false': json, core, yaml11: ['str', 'false', "'false'"] failsafe: ['str', 'false', 'false'] '!!str False': failsafe, json: ['str', 'False', "False"] core, yaml11: ['str', 'False', "'False'"] '!!str FALSE': failsafe, json: ['str', 'FALSE', "FALSE"] core, yaml11: ['str', 'FALSE', "'FALSE'"] '!!str n': failsafe, json, core: ['str', 'n', "n" ] yaml11: ['str', 'n', "'n'" ] '!!str N': failsafe, json, core: ['str', 'N', "N" ] yaml11: ['str', 'N', "'N'" ] '!!str no': failsafe, json, core: ['str', 'no', "no" ] yaml11: ['str', 'no', "'no'" ] '!!str NO': failsafe, json, core: ['str', 'NO', "NO" ] yaml11: ['str', 'NO', "'NO'" ] '!!str off': failsafe, json, core: ['str', 'off', "off" ] yaml11: ['str', 'off', "'off'" ] '!!str Off': failsafe, json, core: ['str', 'Off', "Off" ] yaml11: ['str', 'Off', "'Off'" ] '!!str OFF': failsafe, json, core: ['str', 'OFF', "OFF" ] yaml11: ['str', 'OFF', "'OFF'" ] ############################################### # Null ############################################### 'null': failsafe: ['str', 'null', 'null'] json, core, yaml11: ['null', 'null()', "null"] 'Null': failsafe, json: ['str', 'Null', 'Null'] core, yaml11: ['null', 'null()', "null"] 'NULL': failsafe, json: ['str', 'NULL', 'NULL'] core, yaml11: ['null', 'null()', "null"] '~': failsafe, json: ['str', '~', '~'] core, yaml11: ['null', 'null()', "null"] '!!null null': json, core, yaml11: ['null', 'null()', 'null'] '!!null Null': core, yaml11: ['null', 'null()', "null"] '!!null NULL': core, yaml11: ['null', 'null()', "null"] '!!null ~': core, yaml11: ['null', 'null()', 'null'] '!!str null': failsafe: ['str', 'null', 'null'] json, core, yaml11: ['str', 'null', "'null'"] '!!str Null': failsafe, json: ['str', 'Null', "Null"] core, yaml11: ['str', 'Null', "'Null'"] '!!str NULL': failsafe, json: ['str', 'NULL', "NULL"] core, yaml11: ['str', 'NULL', "'NULL'"] '!!str ~': core, yaml11: ['str', '~', "'~'"] failsafe, json: ['str', '~', '~'] '#empty': core, yaml11: ['null', 'null()', "null"] failsafe, json: ['str', '', "''"] '!!null #empty': core, yaml11: ['null', 'null()', "null"] '!!str #empty': failsafe, json, core, yaml11: ['str', '', "''"] ############################################### # Inf ############################################### '.inf': failsafe, json: ['str', '.inf', '.inf'] core, yaml11: ['inf', 'inf()', '.inf'] '.Inf': failsafe, json: ['str', '.Inf', '.Inf'] core, yaml11: ['inf', 'inf()', '.inf'] '.INF': failsafe, json: ['str', '.INF', '.INF'] core, yaml11: ['inf', 'inf()', '.inf'] '!!float .inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float .Inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float .INF': core, yaml11: ['inf', 'inf()', '.inf'] '!!str .inf': failsafe, json: ['str', '.inf', ".inf"] core, yaml11: ['str', '.inf', "'.inf'"] '!!str .Inf': failsafe, json: ['str', '.Inf', ".Inf"] core, yaml11: ['str', '.Inf', "'.Inf'"] '!!str .INF': failsafe, json: ['str', '.INF', ".INF"] core, yaml11: ['str', '.INF', "'.INF'"] '+.inf': core, yaml11: ['inf', 'inf()', '.inf'] failsafe, json: ['str', '+.inf', '+.inf'] '+.Inf': core, yaml11: ['inf', 'inf()', '.inf'] failsafe, json: ['str', '+.Inf', '+.Inf'] '+.INF': core, yaml11: ['inf', 'inf()', '.inf'] failsafe, json: ['str', '+.INF', '+.INF'] '!!float +.inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float +.Inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float +.INF': core, yaml11: ['inf', 'inf()', '.inf'] '!!str +.inf': failsafe, json: ['str', '+.inf', "+.inf"] core, yaml11: ['str', '+.inf', "'+.inf'"] '!!str +.Inf': failsafe, json: ['str', '+.Inf', "+.Inf"] core, yaml11: ['str', '+.Inf', "'+.Inf'"] '!!str +.INF': failsafe, json: ['str', '+.INF', "+.INF"] core, yaml11: ['str', '+.INF', "'+.INF'"] '-.inf': failsafe, json: ['str', '-.inf', '-.inf'] core, yaml11: ['inf', 'inf-neg()', '-.inf'] '-.Inf': failsafe, json: ['str', '-.Inf', '-.Inf'] core, yaml11: ['inf', 'inf-neg()', '-.inf'] '-.INF': failsafe, json: ['str', '-.INF', '-.INF'] core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!float -.inf': core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!float -.Inf': core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!float -.INF': core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!str -.inf': failsafe, json: ['str', '-.inf', "-.inf"] core, yaml11: ['str', '-.inf', "'-.inf'"] '!!str -.Inf': failsafe, json: ['str', '-.Inf', "-.Inf"] core, yaml11: ['str', '-.Inf', "'-.Inf'"] '!!str -.INF': failsafe, json: ['str', '-.INF', "-.INF"] core, yaml11: ['str', '-.INF', "'-.INF'"] ############################################### # NaN ############################################### '.nan': failsafe, json: ['str', '.nan', '.nan'] core, yaml11: ['nan', 'nan()', '.nan'] '.NaN': core, yaml11: ['nan', 'nan()', '.nan'] failsafe, json: ['str', '.NaN', '.NaN'] '.NAN': failsafe, json: ['str', '.NAN', '.NAN'] core, yaml11: ['nan', 'nan()', '.nan'] '!!float .nan': core, yaml11: ['nan', 'nan()', '.nan'] '!!float .NaN': core, yaml11: ['nan', 'nan()', '.nan'] '!!float .NAN': core, yaml11: ['nan', 'nan()', '.nan'] '!!str .nan': failsafe, json: ['str', '.nan', ".nan"] core, yaml11: ['str', '.nan', "'.nan'"] '!!str .NaN': failsafe, json: ['str', '.NaN', ".NaN"] core, yaml11: ['str', '.NaN', "'.NaN'"] '!!str .NAN': failsafe, json: ['str', '.NAN', ".NAN"] core, yaml11: ['str', '.NAN', "'.NAN'"] ############################################### # Int ############################################### '0': failsafe: ['str', '0', '0'] json, core, yaml11: ['int', '0', '0'] '00': failsafe, json: ['str', '00', '00'] core: ['int', '0', '0'] yaml11: ['int', '0', '0'] '0011': core: ['int', '11', '11'] failsafe, json: ['str', '0011', '0011'] yaml11: ['int', '9', '9'] '010': failsafe, json: ['str', '010', '010'] core: ['int', '10', '10'] yaml11: ['int', '8', '8'] '07': failsafe, json: ['str', '07', '07'] yaml11: ['int', '7', '7'] core: ['int', '7', '7'] '08': failsafe, json: ['str', '08', '08'] yaml11: ['str', '08', '08'] core: ['int', '8', '8'] '02_0': failsafe, json, core: ['str', '02_0', '02_0'] yaml11: ['int', '16', '16'] '23': failsafe: ['str', '23', '23'] json, core, yaml11: ['int', '23', '23'] '100_000': yaml11: ['int', '100000', '100000'] failsafe, json, core: ['str', '100_000', '100_000'] '!!int 0': json, core, yaml11: ['int', '0', '0'] '!!int 00': yaml11: ['int', '0', '0'] '!!int 0011': yaml11: ['int', '9', '9'] core: ['int', '11', '11'] '!!int 010': yaml11: ['int', '8', '8'] '!!int 07': core: ['int', '7', '7'] yaml11: ['int', '7', '7'] '!!int 02_0': yaml11: ['int', '16', '16'] '!!int 23': json, core, yaml11: ['int', '23', '23'] '!!int 100_000': yaml11: ['int', '100000', '100000'] '-0': json, core, yaml11: ['int', '0', '0'] failsafe: ['str', '-0', '-0'] '-23': json, core, yaml11: ['int', '-23', '-23'] failsafe: ['str', '-23', '-23'] '-0100_200': failsafe, json, core: ['str', '-0100_200', '-0100_200'] yaml11: ['int', '-32896', '-32896'] '!!int -0': json, core, yaml11: ['int', '0', '0'] '!!int -23': json, core, yaml11: ['int', '-23', '-23'] '!!int -0100_200': yaml11: ['int', '-32896', '-32896'] '+0': core, yaml11: ['int', '0', '0'] failsafe, json: ['str', '+0', '+0'] '+23': core, yaml11: ['int', '23', '23'] failsafe, json: ['str', '+23', '+23'] '+0100_200': yaml11: ['int', '32896', '32896'] failsafe, json, core: ['str', '+0100_200', '+0100_200'] '!!int +0': core, yaml11: ['int', '0', '0'] '!!int +23': core, yaml11: ['int', '23', '23'] '!!int +0100_200': yaml11: ['int', '32896', '32896'] '!!str 0': failsafe: ['str', '0', "0"] json, core, yaml11: ['str', '0', "'0'"] '!!str 00': failsafe, json: ['str', '00', "00"] core, yaml11: ['str', '00', "'00'"] '!!str 010': failsafe, json: ['str', '010', "010"] core, yaml11: ['str', '010', "'010'"] '!!str 0011': failsafe, json: ['str', '0011', "0011"] core, yaml11: ['str', '0011', "'0011'"] '!!str 07': failsafe, json: ['str', '07', "07"] core, yaml11: ['str', '07', "'07'"] '!!str 23': failsafe: ['str', '23', '23'] json, core, yaml11: ['str', '23', "'23'"] '!!str 100_000': failsafe, json, core: ['str', '100_000', "100_000"] yaml11: ['str', '100_000', "'100_000'"] '!!str 02_0': failsafe, json, core: ['str', '02_0', "02_0"] yaml11: ['str', '02_0', "'02_0'"] '!!str -0': failsafe: ['str', '-0', "-0"] json, core, yaml11: ['str', '-0', "'-0'"] '!!str -23': failsafe: ['str', '-23', "-23"] json, core, yaml11: ['str', '-23', "'-23'"] '!!str +0': failsafe, json: ['str', '+0', "+0"] core, yaml11: ['str', '+0', "'+0'"] '!!str +23': failsafe, json: ['str', '+23', "+23"] core, yaml11: ['str', '+23', "'+23'"] '!!str +0100_200': failsafe, json, core: ['str', '+0100_200', "+0100_200"] yaml11: ['str', '+0100_200', "'+0100_200'"] '!!str -0100_200': failsafe, json, core: ['str', '-0100_200', "-0100_200"] yaml11: ['str', '-0100_200', "'-0100_200'"] ############################################### # Oct ############################################### '0o0': core: ['int', '0', '0'] failsafe, json, yaml11: ['str', '0o0', '0o0'] '0o7': core: ['int', '7', '7'] failsafe, json, yaml11: ['str', '0o7', '0o7'] '0o10': core: ['int', '8', '8'] failsafe, json, yaml11: ['str', '0o10', '0o10'] '!!int 0o0': core: ['int', '0', '0'] '!!int 0o7': core: ['int', '7', '7'] '!!int 0o10': core: ['int', '8', '8'] '!!str 0o0': failsafe, json, yaml11: ['str', '0o0', "0o0"] core: ['str', '0o0', "'0o0'"] '!!str 0o7': failsafe, json, yaml11: ['str', '0o7', "0o7"] core: ['str', '0o7', "'0o7'"] '!!str 0o10': failsafe, json, yaml11: ['str', '0o10', "0o10"] core: ['str', '0o10', "'0o10'"] ############################################### # Hex ############################################### '0x0': failsafe, json: ['str', '0x0', '0x0'] core, yaml11: ['int', '0', '0'] '0x10': failsafe, json: ['str', '0x10', '0x10'] core, yaml11: ['int', '16', '16'] '0x42': failsafe, json: ['str', '0x42', '0x42'] core, yaml11: ['int', '66', '66'] '0xa': failsafe, json: ['str', '0xa', '0xa'] core, yaml11: ['int', '10', '10'] '-0x30': failsafe, json, core: ['str', '-0x30', '-0x30'] yaml11: ['int', '-48', '-48'] '0x2_0': failsafe, json, core: ['str', '0x2_0', '0x2_0'] yaml11: ['int', '32', '32'] '!!int 0x10': core, yaml11: ['int', '16', '16'] '!!int 0x0': core, yaml11: ['int', '0', '0'] '!!int 0x42': core, yaml11: ['int', '66', '66'] '!!int 0xa': core, yaml11: ['int', '10', '10'] '!!int 0x2_0': yaml11: ['int', '32', '32'] '!!int -0x30': yaml11: ['int', '-48', '-48'] '!!str 0x0': failsafe, json: ['str', '0x0', "0x0"] core, yaml11: ['str', '0x0', "'0x0'"] '!!str 0x2_0': failsafe, json, core: ['str', '0x2_0', "0x2_0"] yaml11: ['str', '0x2_0', "'0x2_0'"] '!!str -0x30': failsafe, json, core: ['str', '-0x30', "-0x30"] yaml11: ['str', '-0x30', "'-0x30'"] '!!str 0xa': failsafe, json: ['str', '0xa', "0xa"] core, yaml11: ['str', '0xa', "'0xa'"] ############################################### # Binary ############################################### '0b0': failsafe, json, core: ['str', '0b0', '0b0'] yaml11: ['int', '0', '0'] '+0b100': failsafe, json, core: ['str', '+0b100', '+0b100'] yaml11: ['int', '4', '4'] '-0b101': failsafe, json, core: ['str', '-0b101', '-0b101'] yaml11: ['int', '-5', '-5'] '0b100_101': failsafe, json, core: ['str', '0b100_101', '0b100_101'] yaml11: ['int', '37', '37'] '!!int 0b0': yaml11: ['int', '0', '0'] '!!int 0b100_101': yaml11: ['int', '37', '37'] '!!int +0b100': yaml11: ['int', '4', '4'] '!!int -0b101': yaml11: ['int', '-5', '-5'] '!!str 0b0': failsafe, json, core: ['str', '0b0', "0b0"] yaml11: ['str', '0b0', "'0b0'"] '!!str -0b101': failsafe, json, core: ['str', '-0b101', "-0b101"] yaml11: ['str', '-0b101', "'-0b101'"] '!!str 0b100_101': failsafe, json, core: ['str', '0b100_101', "0b100_101"] yaml11: ['str', '0b100_101', "'0b100_101'"] '!!str +0b100': failsafe, json, core: ['str', '+0b100', "+0b100"] yaml11: ['str', '+0b100', "'+0b100'"] ############################################### # Sexagesimal ############################################### '190:20:30': failsafe, json, core: ['str', '190:20:30', '190:20:30'] yaml11: ['int', '685230', '685230'] '-190:20:30': failsafe, json, core: ['str', '-190:20:30', '-190:20:30'] yaml11: ['int', '-685230', '-685230'] '+190:20:30': failsafe, json, core: ['str', '+190:20:30', '+190:20:30'] yaml11: ['int', '685230', '685230'] '!!int 190:20:30': yaml11: ['int', '685230', '685230'] '!!int -190:20:30': yaml11: ['int', '-685230', '-685230'] '!!int +190:20:30': yaml11: ['int', '685230', '685230'] '!!str 190:20:30': failsafe, json, core: ['str', '190:20:30', "190:20:30"] yaml11: ['str', '190:20:30', "'190:20:30'"] '!!str -190:20:30': failsafe, json, core: ['str', '-190:20:30', "-190:20:30"] yaml11: ['str', '-190:20:30', "'-190:20:30'"] '!!str +190:20:30': failsafe, json, core: ['str', '+190:20:30', "+190:20:30"] yaml11: ['str', '+190:20:30', "'+190:20:30'"] ############################################### # Float ############################################### '.0': failsafe, json: ['str', '.0', '.0'] core, yaml11: ['float', '0.0', '0.0'] '.14': failsafe, json: ['str', '.14', '.14'] core, yaml11: ['float', '0.14', '0.14'] '0.0': failsafe: ['str', '0.0', '0.0'] json, core, yaml11: ['float', '0.0', '0.0'] '3.14': failsafe: ['str', '3.14', '3.14'] json, core, yaml11: ['float', '3.14', '3.14'] '001.23': failsafe, json: ['str', '001.23', '001.23'] core, yaml11: ['float', '1.23', '1.23'] '85_230.15': failsafe, json, core: ['str', '85_230.15', '85_230.15'] yaml11: ['float', '85230.15', '85230.15'] '-3.14': failsafe: ['str', '-3.14', '-3.14'] json, core, yaml11: ['float', '-3.14', '-3.14'] '+3.14': failsafe, json: ['str', '+3.14', '+3.14'] core, yaml11: ['float', '3.14', '3.14'] '!!float .0': core, yaml11: ['float', '0.0', '0.0'] '!!float 0.0': json, core, yaml11: ['float', '0.0', '0.0'] '!!float 3.14': json, core, yaml11: ['float', '3.14', '3.14'] '!!float -3.14': json, core, yaml11: ['float', '-3.14', '-3.14'] '!!float 001.23': core, yaml11: ['float', '1.23', '1.23'] '!!float 85_230.15': yaml11: ['float', '85230.15', '85230.15'] '!!str .0': failsafe, json: ['str', '.0', ".0"] core, yaml11: ['str', '.0', "'.0'"] '!!str 0.0': failsafe: ['str', '0.0', "0.0"] json, core, yaml11: ['str', '0.0', "'0.0'"] '!!str 3.14': failsafe: ['str', '3.14', "3.14"] json, core, yaml11: ['str', '3.14', "'3.14'"] '!!str -3.14': failsafe: ['str', '-3.14', "-3.14"] json, core, yaml11: ['str', '-3.14', "'-3.14'"] '!!str 001.23': failsafe, json: ['str', '001.23', "001.23"] core, yaml11: ['str', '001.23', "'001.23'"] '!!str 85_230.15': failsafe, json, core: ['str', '85_230.15', "85_230.15"] yaml11: ['str', '85_230.15', "'85_230.15'"] ############################################### # Exp ############################################### '.3e3': failsafe, json, yaml11: ['str', '.3e3', '.3e3'] core: ['float', '300.0', '300.0'] '.3e+3': failsafe, json: ['str', '.3e+3', '.3e+3'] core, yaml11: ['float', '300.0', '300.0'] '.3E-1': failsafe, json: ['str', '.3E-1', '.3E-1'] core, yaml11: ['float', '0.03', '0.03'] '0.3e3': json, core: ['float', '300.0', '300.0'] failsafe, yaml11: ['str', '0.3e3', '0.3e3'] '3.3e+3': failsafe: ['str', '3.3e+3', '3.3e+3'] json, core, yaml11: ['float', '3300', '3300.0'] '3e3': json, core: ['float', '3000', '3000.0'] failsafe, yaml11: ['str', '3e3', '3e3'] '85.230_15e+03': failsafe, json, core: ['str', '85.230_15e+03', '85.230_15e+03'] yaml11: ['float', '85230.15', '85230.15'] '+0.3e+3': failsafe, json: ['str', '+0.3e+3', '+0.3e+3'] core, yaml11: ['float', '300.0', '300.0'] '+0.3e3': failsafe, json: ['str', '+0.3e3', '+0.3e3'] core: ['float', '300.0', '300.0'] yaml11: ['str', '+0.3e3', '+0.3e3'] '!!float .3e3': core: ['float', '300.0', '300.0'] '!!float 0.3e3': json, core: ['float', '300.0', '300.0'] '!!float +0.3e3': core: ['float', '300.0', '300.0'] '!!float .3E-1': core, yaml11: ['float', '0.03', '0.03'] '!!float 3.3e+3': core, yaml11: ['float', '3300.0', '3300.0'] '!!float +0.3e+3': core, yaml11: ['float', '300.0', '300.0'] '!!float .3e+3': core, yaml11: ['float', '300.0', '300.0'] '!!float 85.230_15e+03': yaml11: ['float', '85230.15', '85230.15'] '!!str .3e+3': failsafe, json: ['str', '.3e+3', ".3e+3"] core, yaml11: ['str', '.3e+3', "'.3e+3'"] '!!str .3E-1': failsafe, json: ['str', '.3E-1', ".3E-1"] core, yaml11: ['str', '.3E-1', "'.3E-1'"] '!!str .3e3': failsafe, json, yaml11: ['str', '.3e3', ".3e3"] core: ['str', '.3e3', "'.3e3'"] '!!str 0.3e3': failsafe, yaml11: ['str', '0.3e3', "0.3e3"] json, core: ['str', '0.3e3', "'0.3e3'"] '!!str +0.3e3': failsafe, json, yaml11: ['str', '+0.3e3', "+0.3e3"] core: ['str', '+0.3e3', "'+0.3e3'"] '!!str 3.3e+3': failsafe: ['str', '3.3e+3', "3.3e+3"] json, core, yaml11: ['str', '3.3e+3', "'3.3e+3'"] '!!str +0.3e+3': failsafe, json: ['str', '+0.3e+3', "+0.3e+3"] core, yaml11: ['str', '+0.3e+3', "'+0.3e+3'"] '!!str 85.230_15e+03': failsafe, json, core: ['str', '85.230_15e+03', "85.230_15e+03"] yaml11: ['str', '85.230_15e+03', "'85.230_15e+03'"] ############################################### # Sexagesimal ############################################### '190:20:30.15': failsafe, json, core: ['str', '190:20:30.15', '190:20:30.15'] yaml11: ['float', '685230.15', '685230.15'] '!!float 190:20:30.15': yaml11: ['float', '685230.15', '685230.15'] '!!str 190:20:30.15': failsafe, json, core: ['str', '190:20:30.15', "190:20:30.15"] yaml11: ['str', '190:20:30.15', "'190:20:30.15'"] YAML-PP-v0.38.0/dist.ini0000644000175000017500000000221514556031647013176 0ustar tinatinaname = YAML-PP author = Tina Müller license = Perl_5 copyright_holder = Tina Müller copyright_year = 2024 version = v0.38.0 [@Filter] -bundle = @Basic -remove = GatherDir -remove = Readme option = for_basic [Prereqs] perl = 5.8.0 Scalar::Util = 1.07 ; openhandle() [AutoPrereqs] skip = Term::ANSIColor skip = boolean skip = JSON::PP skip = JSON::XS skip = Cpanel::JSON::XS skip = HTML::Entities skip = Tie::IxHash skip = Tie::StdHash skip = Tie::StdArray skip = YAML skip = YAML::PP::LibYAML skip = YAML::Syck skip = YAML::Tiny skip = YAML::XS [Prereqs / TestRequires] Test::More = 0.98 [Prereqs / TestRecommends] Test::Deep = 0 [OverridePkgVersion] [MetaProvides::Package] [Test::Compile] filename = t/00.compile.t [CopyFilesFromBuild] copy = Makefile.PL ; requires CopyFilesFromBuild >= 0.163040 copy = t/00.compile.t [GatherDir] exclude_filename = Makefile.PL exclude_filename = t/00.compile.t [MetaJSON] [MetaResources] bugtracker.web = https://github.com/perlpunk/YAML-PP-p5/issues repository.url = https://github.com/perlpunk/YAML-PP-p5 repository.web = https://github.com/perlpunk/YAML-PP-p5 repository.type = git YAML-PP-v0.38.0/bin/0000755000175000017500000000000014556031647012302 5ustar tinatinaYAML-PP-v0.38.0/bin/yamlpp-highlight0000755000175000017500000000175714556031647015511 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use YAML::PP::Highlight; use Encode; use Getopt::Long; GetOptions( 'help|h' => \my $help, 'expand-tabs|et!' => \my $expand_tabs, ) or usage(1); $expand_tabs = 1 unless defined $expand_tabs; usage(0) if $help; my ($file) = @ARGV; my $yaml; unless ($file) { $yaml = do { local $/; }; $yaml = decode_utf8($yaml); } my $error; my $tokens; if (defined $file) { ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens( file => $file ); } else { ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens( string => $yaml ); } my $highlighted = YAML::PP::Highlight->ansicolored($tokens, expand_tabs => $expand_tabs); print encode_utf8 $highlighted; if ($error) { die $error; } sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --expand-tabs --et Expand tabs to 8 spaces (default true) --no-expand-tabs --no-et Don't expand tabs EOM exit $rc; } YAML-PP-v0.38.0/bin/yamlpp-events0000755000175000017500000000237414556031647015042 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use Encode; use YAML::PP::Parser; use YAML::PP::Common; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'module|M=s' => \my $module, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; if ($module eq 'YAML::PP') { $module = 'YAML::PP::Parser'; } elsif ($module eq 'YAML::PP::LibYAML') { require YAML::PP::LibYAML::Parser; $module = 'YAML::PP::LibYAML::Parser'; } elsif ($module eq 'YAML::PP::Ref') { require YAML::PP::Ref; $module = 'YAML::PP::Ref::Parser'; } my ($file) = @ARGV; my $parser = $module->new( receiver => sub { my ($self, undef, $event) = @_; print encode_utf8(YAML::PP::Common::event_to_test_suite($event, { flow => 1 })), "\n"; }, $file ? (reader => YAML::PP::Reader::File->new) : (), ); if ($file) { $parser->parse_file($file); } else { my $yaml; $yaml = do { local $/; }; $yaml = decode_utf8($yaml); $parser->parse_string($yaml); } sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --module -M Module to use for parsing. YAML::PP (default), YAML::PP::LibYAML or YAML::PP::Ref EOM exit $rc; } YAML-PP-v0.38.0/bin/yamlpp-load0000755000175000017500000000642714556031647014460 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ORDER /; use Encode; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'boolean=s' => \my $boolean, 'cyclic' => \my $cyclic, 'merge' => \my $merge, 'perl' => \my $perl, 'module|M=s' => \my $module, 'yaml-version=s' => \my $yaml_version, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; $boolean ||= 'JSON::PP'; $yaml_version ||= 1.2; my @yaml_versions = split m/,/, $yaml_version; my @schema = ('+'); if ($merge) { push @schema, 'Merge'; } if ($perl) { push @schema, 'Perl'; } my ($file) = @ARGV; my $yaml; my $decode = 1; if ($module eq 'YAML::XS') { $decode = 0; } if ($file) { open my $fh, '<', $file or die "Can not open '$file'"; $yaml = do { local $/; <$fh> }; close $fh; } else { $yaml = do { local $/; }; } $yaml = decode_utf8($yaml) if $decode; my %codes = ( 'YAML::PP' => \&yamlpp, 'YAML::PP::LibYAML' => \&yamlpplibyaml, 'YAML::PP::Ref' => \&yamlppref, 'YAML::XS' => \&yamlxs, 'YAML::Tiny' => \&yamltiny, 'YAML::Syck' => \&yamlsyck, 'YAML' => \&yaml, ); my $code = $codes{ $module } or die "Module '$module' not supported"; my @docs = $code->($yaml); sub _yamlpp { my ($class, $yaml) = @_; my $ypp = $class->new( schema => \@schema, boolean => $boolean, cyclic_refs => $cyclic ? 'allow' : 'fatal', preserve => PRESERVE_ORDER, yaml_version => \@yaml_versions, ); my @docs = $ypp->load_string($yaml); return @docs; } sub yamlpp { _yamlpp('YAML::PP' => $_[0]); } sub yamlpplibyaml { eval { require YAML::PP::LibYAML }; _yamlpp('YAML::PP::LibYAML' => $_[0]); } sub yamlppref { eval { require YAML::PP::Ref }; _yamlpp('YAML::PP::Ref' => $_[0]); } sub yamlxs { eval { require YAML::XS }; my ($yaml) = @_; no warnings 'once'; local $YAML::XS::LoadBlessed = $perl; return YAML::XS::Load($yaml); } sub yamlsyck { eval { require YAML::Syck }; my ($yaml) = @_; no warnings 'once'; local $YAML::Syck::LoadBlessed = $perl; local $YAML::Syck::ImplicitTyping = 1; local $YAML::Syck::ImplicitUnicode = 1; return YAML::Syck::Load($yaml); } sub yaml { eval { require YAML }; my ($yaml) = @_; no warnings 'once'; local $YAML::LoadBlessed = $perl; return YAML::Load($yaml); } sub yamltiny { eval { require YAML::Tiny }; my ($yaml) = @_; return YAML::Tiny::Load($yaml); } local $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys = 1; print Data::Dumper->Dump([$docs[ $_ ]], ["doc$_"]) for 0 ..$#docs; sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --boolean= 'perl', 'JSON::PP', 'boolean' --cyclic Allow cyclic references --merge Enable loading merge keys '<<' --perl Enable loading perl types and objects (use only on trusted input!) --module -M YAML::PP (default), YAML, YAML::PP::LibYAML, YAML::Syck, YAML::Tiny, YAML::XS, YAML::PP::Ref --yaml-version= '1.2' (default), '1.1', '1.2,1.1', '1.1,1.2' EOM exit $rc; } YAML-PP-v0.38.0/bin/yamlpp-load-dump0000755000175000017500000002040614556031647015414 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use YAML::PP; use YAML::PP::Dumper; use YAML::PP::Common qw/ :PRESERVE /; use Encode; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'boolean=s' => \my $boolean, 'cyclic' => \my $cyclic, 'indent=i' => \my $indent, 'width=i' => \my $width, 'header!' => \my $header, 'footer!' => \my $footer, 'merge' => \my $merge, 'perl' => \my $perl, 'preserve|P=s' => \my $preserve, 'module|M=s' => \my $module, 'dump-module|D=s' => \my $dump_module, 'include' => \my $include, 'include-absolute' => \my $include_absolute, 'yaml-version=s' => \my $yaml_version, 'version-directive' => \my $version_directive, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; $boolean ||= 'JSON::PP'; $footer ||= 0; $indent ||= 2; $yaml_version ||= 1.2; $dump_module ||= $module; if ($dump_module eq 'YAML::PP::Ref') { $dump_module = 'YAML::PP'; } my @yaml_versions = split m/,/, $yaml_version; my @schema = ('+'); if ($merge) { push @schema, 'Merge'; } if ($perl) { push @schema, 'Perl'; } my $preserve_order = 1; if (defined $preserve) { $preserve_order = 0; my @split = split m/,/, $preserve; $preserve = 0; for my $split (@split) { $preserve |= PRESERVE_ORDER if $split eq 'order'; $preserve_order = 1 if $split eq 'order'; $preserve |= PRESERVE_SCALAR_STYLE if $split eq 'scalar'; $preserve |= PRESERVE_FLOW_STYLE if $split eq 'flow'; $preserve |= PRESERVE_ALIAS if $split eq 'alias'; } } elsif ($dump_module =~ m/JSON/) { $preserve = PRESERVE_ORDER; } else { $preserve = 1; } $header = 1 unless defined $header; my ($file) = @ARGV; my $yaml; my $decode = 1; if ($module eq 'YAML::XS') { $decode = 0; } if ($file) { open my $fh, '<', $file or die "Can not open '$file'"; $yaml = do { local $/; <$fh> }; close $fh; } else { $yaml = do { local $/; }; } $yaml = decode_utf8($yaml) if $decode; my %load_modules = ( 'YAML::PP' => \&yamlpp, 'YAML::PP::LibYAML' => \&yamlpplibyaml, 'YAML::PP::Ref' => \&yamlppref, 'YAML::XS' => \&yamlxs, 'YAML::Tiny' => \&yamltiny, 'YAML::Syck' => \&yamlsyck, 'YAML' => \&yaml, ); my %dump_modules = ( 'YAML::PP' => \&yamlpp_dump, 'YAML::PP::LibYAML' => \&yamlpplibyaml_dump, 'YAML::XS' => \&yamlxs_dump, 'YAML::Tiny' => \&yamltiny_dump, 'YAML::Syck' => \&yamlsyck_dump, 'YAML' => \&yaml_dump, 'Data::Dumper' => \&data_dumper, 'JSON::PP' => \&json_pp_dump, 'JSON::XS' => \&json_xs_dump, 'Cpanel::JSON::XS' => \&cpanel_json_xs_dump, ); my $code = $load_modules{ $module } or die "Module '$module' not supported for loading"; my $dump_code = $dump_modules{ $dump_module } or die "Module '$dump_module' not supported for dumping"; my $docs = $code->($yaml, $file); my $out_yaml = $dump_code->($docs); sub _yamlpp { my ($class, $yaml, $file) = @_; my %args; my $inc; if ($include) { require YAML::PP::Schema::Include; $inc = YAML::PP::Schema::Include->new( $include_absolute ? (allow_absolute => 1) : (), ); push @schema, $inc; } my $ypp = $class->new( schema => \@schema, boolean => $boolean, cyclic_refs => $cyclic ? 'allow' : 'fatal', preserve => $preserve, indent => $indent, width => $width, header => $header ? 1 : 0, footer => $footer ? 1 : 0, yaml_version => \@yaml_versions, version_directive => $version_directive || 0, ); if ($inc) { $inc->yp($ypp); } my @docs = $file ? $ypp->load_file($file) : $ypp->load_string($yaml); return \@docs; } sub yamlpp { _yamlpp('YAML::PP' => @_); } sub yamlpp_dump { _yamlpp_dump('YAML::PP' => @_); } sub yamlpplibyaml { eval { require YAML::PP::LibYAML }; _yamlpp('YAML::PP::LibYAML' => @_); } sub yamlppref { eval { require YAML::PP::Ref }; _yamlpp('YAML::PP::Ref' => @_); } sub yamlpplibyaml_dump { eval { require YAML::PP::LibYAML }; _yamlpp_dump('YAML::PP::LibYAML' => @_); } sub _yamlpp_dump { my ($class, $docs) = @_; my $ypp = $class->new( schema => \@schema, boolean => $boolean, preserve => $preserve, indent => $indent, width => $width, header => $header ? 1 : 0, footer => $footer ? 1 : 0, yaml_version => \@yaml_versions, version_directive => $version_directive || 0, ); return $ypp->dump_string(@$docs); } sub yamlxs { eval { require YAML::XS }; my ($yaml) = @_; no warnings 'once'; local $YAML::XS::LoadBlessed = $perl; my @docs = YAML::XS::Load($yaml); return \@docs; } sub yamlxs_dump { my ($docs) = @_; eval { require YAML::XS }; no warnings 'once'; local $YAML::XS::Indent = $indent; return YAML::XS::Dump(@$docs); } sub yamlsyck { eval { require YAML::Syck }; my ($yaml) = @_; no warnings 'once'; local $YAML::Syck::LoadBlessed = $perl; local $YAML::Syck::ImplicitTyping = 1; local $YAML::Syck::ImplicitUnicode = 1; my @docs = YAML::Syck::Load($yaml); return \@docs; } sub yamlsyck_dump { eval { require YAML::Syck }; my ($docs) = @_; no warnings 'once'; local $YAML::Syck::Headless = 1 unless $header; local $YAML::Syck::ImplicitTyping = 1; local $YAML::Syck::ImplicitUnicode = 1; return YAML::Syck::Dump(@$docs); } sub yaml { eval { require YAML }; no warnings 'once'; local $YAML::LoadBlessed = $perl; my ($yaml) = @_; my @docs = YAML::Load($yaml); return \@docs; } sub yaml_dump { my ($docs) = @_; eval { require YAML }; no warnings 'once'; local $YAML::UseHeader = $header ? 1 : 0; local $YAML::Indent = $indent; return YAML::Dump(@$docs); } sub yamltiny { eval { require YAML::Tiny }; my ($yaml) = @_; my @docs = YAML::Tiny::Load($yaml); return \@docs; } sub yamltiny_dump { eval { require YAML::Tiny }; my ($docs) = @_; return YAML::Tiny::Dump(@$docs); } sub data_dumper { my ($docs) = @_; local $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys = 1 unless $preserve_order; my $out = ''; $out .= Data::Dumper->Dump([$docs->[ $_ ]], ["doc$_"]) for 0 ..$#$docs; return $out; } sub json_pp_dump { require JSON::PP; _json_dump('JSON::PP', @_) } sub json_xs_dump { require JSON::XS; _json_dump('JSON::XS', @_) } sub cpanel_json_xs_dump { require Cpanel::JSON::XS; _json_dump('Cpanel::JSON::XS', @_) } sub _json_dump { my ($class, $docs) = @_; my $coder = $class->new->ascii->pretty->allow_nonref->space_before(0); $coder = $coder->indent_length($indent) if $coder->can('indent_length'); $coder = $coder->canonical unless $preserve_order; my $out = ''; $out .= $coder->encode($docs->[ $_ ]) for 0 ..$#$docs; return $out; } if ($decode) { print encode_utf8 $out_yaml; } else { print $out_yaml; } sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --boolean= 'perl', 'JSON::PP', 'boolean' --cyclic Allow cyclic references --indent= Number of spaces for indentation --width= Maximum column width (only used in flow style for now) --[no-]header Print '---' (default) --[no-]footer Print '...' --merge Enable loading merge keys '<<' --perl Enable loading perl types and objects (use only on trusted input!) --preserve, -P Comma separated: 'order', 'scalar', 'flow', 'alias'. Set to 0 to preserve nothing. By default all things are preserved --module -M YAML::PP (default), YAML, YAML::PP::LibYAML, YAML::Syck, YAML::Tiny, YAML::XS, YAML::PP::Ref --dump-module -D All of the above plus Data::Dumper, JSON::PP, JSON::XS, Cpanel::JSON::XS --yaml-version= '1.2' (default), '1.1', '1.2,1.1', '1.1,1.2' --version-directive Print '%YAML ' --include Enable Include Schema --include-absolute Allow absolute paths and ../../../ in includes (use only on trusted input!) EOM exit $rc; } YAML-PP-v0.38.0/bin/yamlpp-parse-emit0000755000175000017500000000626214556031647015604 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use YAML::PP; use YAML::PP::Common qw/ YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE /; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use Data::Dumper; use Encode; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'indent=i' => \my $indent, 'module|M=s' => \my $module, 'dump|D=s' => \my $emit, 'verbose' => \my $verbose, 'flow=s' => \my $flow, 'width=i' => \my $width, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; $emit ||= $module; $flow ||= 'no'; my ($file) = @ARGV; my $yaml; if ($file) { open my $fh, '<', $file or die $!; $yaml = do { local $/; <$fh> }; close $fh; } else { $yaml = do { local $/; }; } $yaml = decode_utf8($yaml); if ($emit eq 'YAML::PP::Ref') { $emit = 'YAML::PP'; } my $parserclass = 'YAML::PP::Parser'; my $emitterclass = 'YAML::PP::Emitter'; if ($module eq 'YAML::PP::LibYAML') { eval { require YAML::PP::LibYAML } or die "Module $module not supported: $@"; $parserclass = 'YAML::PP::LibYAML::Parser'; $emitterclass = 'YAML::PP::LibYAML::Emitter'; } elsif ($module eq 'YAML::PP::Ref') { eval { require YAML::PP::Ref } or die "Module $module not supported: $@"; $parserclass = 'YAML::PP::Ref::Parser'; } if ($emit eq 'YAML::PP::LibYAML') { eval { require YAML::PP::LibYAML } or die "Module $emit not supported: $@"; $emitterclass = 'YAML::PP::LibYAML::Emitter'; } my @events; my $parser = $parserclass->new( receiver => sub { my ($self, undef, $event) = @_; push @events, $event; }, ); eval { $parser->parse_string($yaml); }; if ($@) { for (@events) { print YAML::PP::Common::event_to_test_suite($_) ."\n"; } warn "Error parsing: $@"; exit 1; } my $writer = YAML::PP::Writer->new; my $emitter = $emitterclass->new( indent => $indent, width => $width ); $emitter->set_writer($writer); for my $event (@events) { my $type = $event->{name}; my $str = YAML::PP::Common::event_to_test_suite($event); print "$str\n" if $verbose; if ($type eq 'sequence_start_event' or $type eq 'mapping_start_event') { if ($flow eq 'no') { delete $event->{style}; } elsif ($flow eq 'yes') { if ($type eq 'sequence_start_event') { $event->{style} = YAML_FLOW_SEQUENCE_STYLE; } else { $event->{style} = YAML_FLOW_MAPPING_STYLE; } } } $emitter->$type($event); } my $out_yaml = $emitter->writer->output; print encode_utf8 $out_yaml; sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --indent= Number of spaces for indentation --width= Maximum column width (only used in flow style for now) --module, -M YAML::PP, YAML::PP::LibYAML or YAML::PP::Ref --dump, -D YAML::PP, YAML::PP::LibYAML --flow 'no' (default, always output block style), 'yes' (always output flow style), 'keep' (output flow style like in the original input) EOM exit $rc; } YAML-PP-v0.38.0/META.yml0000644000175000017500000000711114556031647013003 0ustar tinatina--- abstract: 'YAML 1.2 Processor' author: - 'Tina Müller ' build_requires: File::Spec: '0' FindBin: '0' IO::File: '0' IO::Handle: '0' IPC::Open3: '0' Test::More: '0.98' Test::Warn: '0' lib: '0' perl: v5.8.0 configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: YAML-PP provides: YAML::PP: file: lib/YAML/PP.pm version: v0.38.0 YAML::PP::Common: file: lib/YAML/PP/Common.pm version: v0.38.0 YAML::PP::Constructor: file: lib/YAML/PP/Constructor.pm version: v0.38.0 YAML::PP::Dumper: file: lib/YAML/PP/Dumper.pm version: v0.38.0 YAML::PP::Emitter: file: lib/YAML/PP/Emitter.pm version: v0.38.0 YAML::PP::Exception: file: lib/YAML/PP/Exception.pm version: v0.38.0 YAML::PP::Grammar: file: lib/YAML/PP/Grammar.pm version: v0.38.0 YAML::PP::Highlight: file: lib/YAML/PP/Highlight.pm version: v0.38.0 YAML::PP::Lexer: file: lib/YAML/PP/Lexer.pm version: v0.38.0 YAML::PP::Loader: file: lib/YAML/PP/Loader.pm version: v0.38.0 YAML::PP::Parser: file: lib/YAML/PP/Parser.pm version: v0.38.0 YAML::PP::Perl: file: lib/YAML/PP/Perl.pm version: v0.38.0 YAML::PP::Preserve::Array: file: lib/YAML/PP.pm version: v0.38.0 YAML::PP::Preserve::Hash: file: lib/YAML/PP.pm version: v0.38.0 YAML::PP::Preserve::Scalar: file: lib/YAML/PP.pm version: v0.38.0 YAML::PP::Reader: file: lib/YAML/PP/Reader.pm version: v0.38.0 YAML::PP::Reader::File: file: lib/YAML/PP/Reader.pm version: v0.38.0 YAML::PP::Render: file: lib/YAML/PP/Render.pm version: v0.38.0 YAML::PP::Representer: file: lib/YAML/PP/Representer.pm version: v0.38.0 YAML::PP::Schema: file: lib/YAML/PP/Schema.pm version: v0.38.0 YAML::PP::Schema::Binary: file: lib/YAML/PP/Schema/Binary.pm version: v0.38.0 YAML::PP::Schema::Core: file: lib/YAML/PP/Schema/Core.pm version: v0.38.0 YAML::PP::Schema::Failsafe: file: lib/YAML/PP/Schema/Failsafe.pm version: v0.38.0 YAML::PP::Schema::Include: file: lib/YAML/PP/Schema/Include.pm version: v0.38.0 YAML::PP::Schema::JSON: file: lib/YAML/PP/Schema/JSON.pm version: v0.38.0 YAML::PP::Schema::Merge: file: lib/YAML/PP/Schema/Merge.pm version: v0.38.0 YAML::PP::Schema::Perl: file: lib/YAML/PP/Schema/Perl.pm version: v0.38.0 YAML::PP::Schema::Tie::IxHash: file: lib/YAML/PP/Schema/Tie/IxHash.pm version: v0.38.0 YAML::PP::Schema::YAML1_1: file: lib/YAML/PP/Schema/YAML1_1.pm version: v0.38.0 YAML::PP::Type::MergeKey: file: lib/YAML/PP/Type/MergeKey.pm version: v0.38.0 YAML::PP::Writer: file: lib/YAML/PP/Writer.pm version: v0.38.0 YAML::PP::Writer::File: file: lib/YAML/PP/Writer/File.pm version: v0.38.0 requires: B: '0' B::Deparse: '0' Carp: '0' Data::Dumper: '0' Encode: '0' Exporter: '0' File::Basename: '0' Getopt::Long: '0' MIME::Base64: '0' Module::Load: '0' Scalar::Util: '1.07' Tie::Array: '0' Tie::Hash: '0' base: '0' constant: '0' overload: '0' perl: v5.8.0 strict: '0' warnings: '0' resources: bugtracker: https://github.com/perlpunk/YAML-PP-p5/issues repository: https://github.com/perlpunk/YAML-PP-p5 version: v0.38.0 x_generated_by_perl: v5.30.3 x_serialization_backend: 'YAML::Tiny version 1.73' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' YAML-PP-v0.38.0/MANIFEST.SKIP0000644000175000017500000000015714556031647013433 0ustar tinatina^dev ^test-suite/.git ^cover_db ^local ^dev.sh ^nytprof ^nytprof.out ^pod2htmd.tmp ^new_tests ^gh-pages ^bench YAML-PP-v0.38.0/t/0000755000175000017500000000000014556031647011775 5ustar tinatinaYAML-PP-v0.38.0/t/45.binary.t0000644000175000017500000000776414556031647013713 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More tests => 3; use YAML::PP; use Encode; use Data::Dumper; my $yp_binary = YAML::PP->new( schema => [qw/ JSON Binary /] ); my $yp = YAML::PP->new( schema => [qw/ JSON /] ); my $gif = "GIF89a\f\0\f\0\204\0\0\377\377\367\365\365\356\351\351\345fff" . "\0\0\0\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237" . "\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377" . "\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371" . "\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376" . "\371\377\376\371\377\376\371!\376\16Made with GIMP\0,\0\0\0\0\f\0\f" . "\0\0\5, \216\2010\236\343\@\24\350i\20\304\321\212\b\34\317\200" . "M\$z\357\3770\205p\270\2601f\r\e\316\1\303\1\36\20' \202\n\1\0;"; subtest load_binary => sub { my $yaml = <<'EOM'; canonical: !!binary "\ R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" EOM my $data = $yp_binary->load_string($yaml); cmp_ok($data->{canonical}, 'eq', $gif, "Loaded binary equals gif"); my $base64 = "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5" . "OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+" . "+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC" . "AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs="; my $load = $yp->load_string($yaml); cmp_ok($load->{canonical}, 'eq', $base64, "Load back literally"); }; my $latin1_a_umlaut = encode(latin1 => (decode_utf8 "ä")); my @tests = ( [utf8 => "a"], [binary => $latin1_a_umlaut], [binary => "\304\244",], [utf8 => decode_utf8("\304\244"),], [binary => "a umlaut ä",], [utf8 => decode_utf8("a umlaut ä"),], [binary => "euro €",], [utf8 => decode_utf8("euro €"),], [binary => "\303\274 \374",], [binary => "\xC0\x80"], [binary => "\xC0\xAF"], [binary => "\xE0\x80\x80"], [binary => "\xF0\x80\x80\x80"], [binary => "\xE0\x83\xBF"], [binary => "\xF0\x80\x83\xBF"], [binary => "\xF0\x80\xA3\x80"], [binary => [$gif, decode_utf8("ä")],], [binary => [$gif, 'foo'],], ); subtest roundtrip => sub { for my $item (@tests) { select undef, undef, undef, 0.1; my ($type, $data) = @$item; local $Data::Dumper::Useqq = 1; my $label = Data::Dumper->Dump([$data], ['data']); chomp $label; note("\n\n\n=============== $type: $label"); my $dump = $yp->dump_string($data); #note("========= YAML:\n$dump"); my $reload = $yp->load_string($dump); if (ref $reload eq 'ARRAY') { cmp_ok($reload->[0], 'eq', $data->[0], "Reload binary->[0] ok ($label)"); cmp_ok($reload->[1], 'eq', $data->[1], "Reload binary->[1] ok ($label)"); } else { cmp_ok($reload, 'eq', $data, "Reload binary ok ($label)"); } } }; subtest roundtrip_binary => sub { for my $item (@tests) { my ($type, $data) = @$item; local $Data::Dumper::Useqq = 1; my $label = Data::Dumper->Dump([$data], ['data']); note("=============== $type: $label"); my $dump = $yp_binary->dump_string($data); if ($type eq 'binary') { like($dump, qr{!!binary}, "Output YAML contains !!binary"); } else { unlike($dump, qr{!!binary}, "Output YAML does not contain !!binary"); } my $reload = $yp_binary->load_string($dump); if (ref $reload eq 'ARRAY') { cmp_ok($reload->[0], 'eq', $data->[0], "Reload binary->[0] ok ($label)"); cmp_ok($reload->[1], 'eq', $data->[1], "Reload binary->[1] ok ($label)"); } else { cmp_ok($reload, 'eq', $data, "Reload binary ok ($label)"); } } }; done_testing; YAML-PP-v0.38.0/t/13.load-anchor.t0000644000175000017500000000134414556031647014575 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; my $yaml = <<'EOM'; foo: &sequence - a - b - c bar: *sequence copies: - &alias A - *alias EOM my $yp = YAML::PP->new; my $data = $yp->load_string($yaml); cmp_ok($data->{copies}->[0],'eq', 'A', "Scalar anchor"); cmp_ok($data->{copies}->[0],'eq', $data->{copies}->[1], "Scalar alias equals anchor"); $data->{foo}->[-1] = "changed"; cmp_ok($data->{bar}->[-1],'eq', 'changed', "Alias changes when anchor changes"); $yaml = <<'EOM'; this should: *be_fatal EOM $data = eval { $yp->load_string($yaml) }; my $err = $@; like $err, qr{No anchor defined for alias}, 'Error when loading undefined alias'; done_testing; YAML-PP-v0.38.0/t/53.customtag-alias.t0000644000175000017500000000324614556031647015512 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use YAML::PP; subtest 'join-tag' => sub { my $yp = YAML::PP->new; $yp->schema->add_sequence_resolver( tag => '!join', on_create => sub { return '' }, on_data => sub { my ($constructor, $data, $list) = @_; my $join = shift @$list; $$data .= join $join, @$list; }, ); my $yaml = <<'EOM'; --- name: &name YAML string: &what !join [ ' ', *name, Ain't, Markup, Language ] alias: *what EOM my $string = "YAML Ain't Markup Language"; my $expected = { name => 'YAML', string => $string, alias => $string, }; my ($data) = $yp->load_string($yaml); is_deeply($data, $expected, 'Loaded data as expected'); }; subtest 'inherit-tag' => sub { my $yp = YAML::PP->new; $yp->schema->add_mapping_resolver( tag => '!inherit', # on_create => sub { return '' }, on_data => sub { my ($constructor, $data, $list) = @_; for my $item (@$list) { %$$data = (%$$data, %$item); } }, ); my $yaml = <<'EOM'; --- parent: &parent a: A b: B child: &child !inherit *parent : a: new A c: C twin: *child EOM my $string = "YAML Ain't Markup Language"; my $child = { a => 'new A', b => 'B', c => 'C', }; my $expected = { parent => { a => 'A', b => 'B', }, child => $child, twin => $child, }; my ($data) = $yp->load_string($yaml); is_deeply($data, $expected, 'Loaded data as expected'); }; done_testing; YAML-PP-v0.38.0/t/39.emitter-alias.t0000644000175000017500000000224214556031647015154 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More tests => 1; use YAML::PP; use YAML::PP::Common; use YAML::PP::Emitter; use YAML::PP::Writer; my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new(); $emitter->set_writer($writer); my @events = ( '+STR', '+DOC ---', '+SEQ', '+MAP &map ', '=VAL :foo', '=VAL :bar', '-MAP', '+SEQ', '=ALI *map', '=ALI *map', '-SEQ', '+MAP', '=ALI *map', '=VAL :foo', '=ALI *map', '=VAL :foo', '-MAP', '+MAP', '+SEQ ', '-SEQ', '=ALI *map', '-MAP', '+MAP', '+MAP ', '-MAP', '=ALI *map', '-MAP', '-SEQ', '-DOC', '-STR', ); for my $str (@events) { my $event = YAML::PP::Common::test_suite_to_event($str); my $name = $event->{name}; $emitter->$name($event); } my $yaml = $emitter->writer->output; my $exp = <<'EOM'; --- - &map !!map !!str foo: bar - - *map - *map - *map : foo *map : foo - ? !!seq [] : *map - ? !!map {} : *map EOM cmp_ok($yaml, 'eq', $exp, "alias_event correct"); YAML-PP-v0.38.0/t/32.cyclic-refs.t0000644000175000017500000000306714556031647014616 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use Test::Warn; use Data::Dumper; use YAML::PP; my $yaml = <<'EOM'; - &NODEA name: A link: &NODEB name: B link: *NODEA EOM my $yaml2 = <<'EOM'; - &NODEA name: A foo: &NODEA # overwrite anchor bar: boo link: &NODEB name: B link: *NODEA EOM my $fatal = YAML::PP->new( cyclic_refs => 'fatal' ); my $warn = YAML::PP->new( cyclic_refs => 'warn' ); my $ignore = YAML::PP->new( cyclic_refs => 'ignore' ); my $allow = YAML::PP->new( cyclic_refs => 'allow' ); my $fatal2 = YAML::PP->new( ); my $data = eval { $fatal->load_string($yaml); }; my $error = $@; cmp_ok($error, '=~', qr{found cyclic ref}i, "cyclic_refs=fatal"); warning_like { $warn->load_string($yaml); } qr{found cyclic ref}i, "cyclic_refs=warn"; is($data->[0]->{link}->{link}, undef, "cyclic_refs=warn"); $data = $ignore->load_string($yaml); is($data->[0]->{link}->{link}, undef, "cyclic_refs=ignore"); $data = $allow->load_string($yaml); cmp_ok($data->[0]->{link}->{link}->{name}, 'eq', 'A', "cyclic_refs=allow"); $data = eval { $fatal2->load_string($yaml) }; $error = $@; cmp_ok($error, '=~', qr{found cyclic ref}i, "cyclic_refs=default (fatal)"); $data = eval { my $nonsense = YAML::PP->new( cyclic_refs => 'nonsense'); $nonsense->load_string($yaml); }; $error = $@; cmp_ok($error, '=~', qr{invalid}i, "cyclic_refs=nonsense (invalid parameter)"); $data = $fatal->load_string($yaml2); cmp_ok($data->[0]->{link}->{link}->{bar}, 'eq', 'boo', "cyclic_refs=fatal, no cyclic ref found"); done_testing; YAML-PP-v0.38.0/t/30.legacy.t0000644000175000017500000000361014556031647013647 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; use YAML::PP::Perl; my $file = "$Bin/data/simple.yaml"; my $copy = "$Bin/data/simple.yaml.copy"; my $yaml = do { open my $fh, '<', $file or die $!; local $/; <$fh> }; my $data = { a => 1 }; my $all_data = [ { a => 1 }, { b => 2 } ]; subtest default => sub { my $data_from_string = YAML::PP::Load($yaml); my $data_from_file = YAML::PP::LoadFile($file); is_deeply($data_from_string, $data, "scalar Load data ok"); is_deeply($data_from_file, $data, "scalar LoadFile data ok"); my @all_data_from_string = YAML::PP::Load($yaml); my @all_data_from_file = YAML::PP::LoadFile($file); is_deeply(\@all_data_from_string, $all_data, "Load data ok"); is_deeply(\@all_data_from_file, $all_data, "LoadFile data ok"); my $dump = YAML::PP::Dump(@$all_data); cmp_ok($dump, 'eq', $yaml, 'Dump() ok'); YAML::PP::DumpFile($copy, @$all_data); $yaml = do { open my $fh, '<', $copy or die $!; local $/; <$fh> }; cmp_ok($dump, 'eq', $yaml, 'DumpFile() ok'); }; subtest perl => sub { my $data_from_string = YAML::PP::Perl::Load($yaml); my $data_from_file = YAML::PP::Perl::LoadFile($file); is_deeply($data_from_string, $data, "Load data ok"); is_deeply($data_from_file, $data, "LoadFile data ok"); my @all_data_from_string = YAML::PP::Perl::Load($yaml); my @all_data_from_file = YAML::PP::Perl::LoadFile($file); is_deeply(\@all_data_from_string, $all_data, "Load data ok"); is_deeply(\@all_data_from_file, $all_data, "LoadFile data ok"); my $dump = YAML::PP::Perl::Dump(@$all_data); cmp_ok($dump, 'eq', $yaml, 'Dump() ok'); YAML::PP::Perl::DumpFile($copy, @$all_data); $yaml = do { open my $fh, '<', $copy or die $!; local $/; <$fh> }; cmp_ok($dump, 'eq', $yaml, 'DumpFile() ok'); }; done_testing; END { unlink $copy; } YAML-PP-v0.38.0/t/23-dump-anchor.t0000644000175000017500000000147114556031647014624 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use YAML::PP::Dumper; my $hash = { a => "b" }; my $seq = [ "a", "b" ]; my $data1 = { hash => $hash, hashcopy => $hash, seq => $seq, seqcopy => $seq, }; my $exp_yaml1 = <<"EOM"; --- hash: &1 a: b hashcopy: *1 seq: &2 - a - b seqcopy: *2 EOM my $refa = { name => "a" }; my $refb = { name => "b", link => $refa }; $refa->{link} = $refb; my $data2 = { a => $refa, b => $refb, }; # cyclic my $exp_yaml2 = <<"EOM"; --- a: &1 link: &2 link: *1 name: b name: a b: *2 EOM my $yppd = YAML::PP::Dumper->new; my $yaml = $yppd->dump_string($data1); cmp_ok($yaml, 'eq', $exp_yaml1, "dump anchors"); $yaml = $yppd->dump_string($data2); cmp_ok($yaml, 'eq', $exp_yaml2, "dump cyclic data structure"); done_testing; YAML-PP-v0.38.0/t/19.file.t0000644000175000017500000000315314556031647013333 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; my $file = "$Bin/data/simple.yaml"; my $file_out = "$Bin/data/simple-out.yaml"; my $invalid_file = "/non/existant/path/for/yaml/pp"; my $yaml = do { open my $fh, '<', $file or die $!; local $/; <$fh> }; my $data = { a => 1 }; my $all_data = [ { a => 1 }, { b => 2 } ]; my $data_from_string = YAML::PP->new->load_string($yaml); my $data_from_file = YAML::PP->new->load_file($file); open my $fh, '<', $file or die $!; my $data_from_filehandle = YAML::PP->new->load_file($fh); close $fh; is_deeply($data_from_string, $data, "load_string data ok"); is_deeply($data_from_file, $data, "load_file data ok"); is_deeply($data_from_filehandle, $data, "load_file(filehandle) data ok"); $data_from_file = YAML::PP::LoadFile($file); is_deeply($data_from_file, $data, "LoadFile data ok"); YAML::PP->new->dump_file($file_out, @$all_data); my $yaml2 = do { open my $fh, '<', $file_out or die $!; local $/; <$fh> }; cmp_ok($yaml2, 'eq', $yaml, "dump_file data correct"); YAML::PP::DumpFile($file_out, @$all_data); $yaml2 = do { open my $fh, '<', $file_out or die $!; local $/; <$fh> }; cmp_ok($yaml2, 'eq', $yaml, "DumpFile data correct"); open my $fh_out, '>', $file_out or die $!; YAML::PP::DumpFile($fh_out, @$all_data); close $fh_out; $yaml2 = do { open my $fh, '<', $file_out or die $!; local $/; <$fh> }; cmp_ok($yaml2, 'eq', $yaml, "DumpFile(filehandle) data correct"); eval { YAML::PP::DumpFile($invalid_file, $data); }; my $error = $@; cmp_ok($error, '=~', qr{Could not open}); done_testing; END { unlink $file_out; } YAML-PP-v0.38.0/t/18.control.t0000644000175000017500000000271514556031647014076 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP::Parser; use YAML::PP; my %chars = ( "\x00" => '\0', "\x01" => '\x01', "\x02" => '\x02', "\x03" => '\x03', "\x04" => '\x04', "\x05" => '\x05', "\x06" => '\x06', "\x07" => '\a', "\x08" => '\b', "\x0b" => '\v', "\x0c" => '\f', "\x0e" => '\x0e', "\x0f" => '\x0f', "\x10" => '\x10', "\x11" => '\x11', "\x12" => '\x12', "\x13" => '\x13', "\x14" => '\x14', "\x15" => '\x15', "\x16" => '\x16', "\x17" => '\x17', "\x18" => '\x18', "\x19" => '\x19', "\x1a" => '\x1a', "\x1b" => '\e', "\x1c" => '\x1c', "\x1d" => '\x1d', "\x1e" => '\x1e', "\x1f" => '\x1f', ); my $ypp = YAML::PP::Parser->new( receiver => sub {} ); for my $char (sort keys %chars) { my $yaml = "control: $char"; local $Data::Dumper::Useqq = 1; my $display = Data::Dumper->Dump([\$yaml], ['yaml']); chomp $display; my $title = "Invalid literal control char: >>$display<<"; eval { $ypp->parse_string($yaml); }; if ($@) { #diag "Error: $@"; ok(1, "Parse: $title"); } else { ok(0, "Parse: $title"); } my $dump = YAML::PP->new->dump_string({ control => $char }); my $escaped = $chars{ $char }; my $expected = qq{---\ncontrol: "$escaped"\n}; cmp_ok($dump, 'eq', $expected, "Dump: $title"); } done_testing; YAML-PP-v0.38.0/t/14.load-bool.t0000644000175000017500000000361514556031647014262 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; my $boolean = eval "use boolean; 1"; my $json_pp = eval "use JSON::PP; 1"; my $yaml = <<'EOM'; "TRUE": true "FALSE": false EOM my $ypp = YAML::PP->new(boolean => 'perl'); my $data_p = $ypp->load_string($yaml); cmp_ok(ref $data_p->{TRUE}, 'eq', '', "pure perl true"); cmp_ok($data_p->{TRUE}, '==', 1, "pure perl true"); cmp_ok($data_p->{FALSE}, '==', 0, "pure perl false"); SKIP: { skip "boolean not installed", 3 unless $boolean; my $ypp = YAML::PP->new(boolean => 'boolean'); my $data_b = $ypp->load_string($yaml); isa_ok($data_b->{TRUE}, 'boolean'); is($data_b->{TRUE}, 1, 'boolean.pm true'); is(! $data_b->{FALSE}, 1, 'boolean.pm false'); } SKIP: { skip "JSON::PP not installed", 3 unless $json_pp; my $ypp = YAML::PP->new(boolean => 'JSON::PP'); my $data_jp = $ypp->load_string($yaml); isa_ok($data_jp->{TRUE}, 'JSON::PP::Boolean'); is($data_jp->{TRUE}, 1, 'JSON::PP::Boolean true'); is(! $data_jp->{FALSE}, 1, 'JSON::PP::Boolean false'); } SKIP: { skip "JSON::PP and boolean not installed", 3 unless ($json_pp and $boolean); my $ypp = YAML::PP->new(boolean => 'JSON::PP,boolean'); my $data_jp = $ypp->load_string($yaml); isa_ok($data_jp->{TRUE}, 'JSON::PP::Boolean'); is($data_jp->{TRUE}, 1, 'JSON::PP::Boolean true'); is(! $data_jp->{FALSE}, 1, 'JSON::PP::Boolean false'); } SKIP: { skip "perl 5.36 required for this test", 3 unless $] >= 5.036000; my $is_bool = eval 'use experimental qw/ builtin /; sub { builtin::is_bool($_[0]) }'; my $ypp = YAML::PP->new(boolean => 'perl_experimental'); my $data_jp = $ypp->load_string($yaml); ok $is_bool->($data_jp->{TRUE}) && $data_jp->{TRUE}, 'builtin::is_bool truw'; ok $is_bool->($data_jp->{FALSE}) && ! $data_jp->{FALSE}, 'builtin::is_bool false'; } done_testing; YAML-PP-v0.38.0/t/49.include.t0000644000175000017500000000474014556031647014045 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; use YAML::PP::Schema::Include; use File::Spec; use Scalar::Util qw/ refaddr /; my $test_deep; BEGIN { eval "use Test::Deep qw/ cmp_deeply /"; unless ($@) { $test_deep = 1; } } unless ($test_deep) { plan skip_all => "No Test::Deep available"; exit; } my $include_path = "$Bin/data/include"; my $valid_yaml = <<'EOM'; --- - !include include1.yaml - !include include2.yaml - item3 EOM my $invalid_yaml = <<'EOM'; --- - !include ../../../../../../../../../../../etc/passwd EOM my $invalid_yaml2 = <<'EOM'; --- - !include /etc/passwd EOM my $expected = [ 'include1', [ 'include2', 'include3', ], 'item3', ]; my %objects; sub YAML::PP::DESTROY { my ($self) = @_; my $addr = refaddr($self); $objects{ $addr }--; } my $addr; subtest schema_include => sub { my $include = YAML::PP::Schema::Include->new( paths => $include_path ); my $yp = YAML::PP->new( schema => ['JSON', $include] ); $include->yp($yp); $addr = refaddr($yp); $objects{ $addr }++; my ($data) = $yp->load_string($valid_yaml); is_deeply($data, $expected, "!include"); }; cmp_ok($objects{ $addr }, 'eq', 0, "YAML::PP object was destroyed correctly"); subtest invalid_schema_include => sub { my $include = YAML::PP::Schema::Include->new( paths => $include_path, ); my $yp = YAML::PP->new( schema => ['JSON', $include] ); $include->yp($yp); my ($data) = eval { $yp->load_string($invalid_yaml) }; my $error = $@; cmp_ok($error, '=~', "not found", "Filter out .."); ($data) = eval { $yp->load_string($invalid_yaml2) }; $error = $@; cmp_ok($error, '=~', "Absolute filenames not allowed", "No absolute filenames"); }; subtest schema_include_filename => sub { my $include = YAML::PP::Schema::Include->new; my $yp = YAML::PP->new( schema => ['JSON', $include] ); $include->yp($yp); my ($data) = $yp->load_file("$include_path/include.yaml"); is_deeply($data, $expected, "!include"); }; subtest schema_include_circular => sub { my $include = YAML::PP::Schema::Include->new; my $yp = YAML::PP->new( schema => ['JSON', $include] ); $include->yp($yp); my ($data) = eval { $yp->load_file("$include_path/circular1.yaml"); }; my $error = $@; cmp_ok($@, '=~', "Circular include", "Circular include detected"); }; done_testing; YAML-PP-v0.38.0/t/56.force-flow.t0000644000175000017500000000233514556031647014461 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use Data::Dumper; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use Encode; $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 4ABK 87E4 8UDB 9MMW CN3R CT4Q FRK4 L9U5 LQZ7 LX3P QF4Y Q9WF 6BFJ CFD4 M2N8:01 UKK6:01 /; push @skip, qw/ 6VJK MJS9 7T8X JHB9 LE5A v014 v020 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase, { flow => 'yes' }); $testsuite->compare_emit_yaml($testcase, $result); } done_testing; exit; YAML-PP-v0.38.0/t/10.parse-valid.t0000644000175000017500000000300314556031647014604 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use Data::Dumper; use YAML::PP::Parser; use Encode; $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; my @skip = qw/ 4FJ6 9MMW LX3P Q9WF 6BFJ CT4Q M2N8:01 UKK6:01 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, events => 1, in_yaml => 1, linecount => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); my %errors; $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ OK DIFF ERROR TODO SKIP /], ids => [qw/ DIFF ERROR /], ); for my $type (sort keys %errors) { diag "ERRORS($type): (@{ $errors{ $type } })"; } sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->parse_events($testcase); my $err = $result->{err}; if ($err) { diag "ERROR($id): $err"; my $error_type = 'unknown'; if ($err =~ m/^(Expected) *:/m) { $error_type = "$1"; } elsif ($err =~ m/(Not Implemented: .*?) at/) { $error_type = "$1"; } elsif ($err =~ m/(Unexpected .*?) at/) { $error_type = "$1"; } push @{ $errors{ $error_type } }, $id; } $testsuite->compare_parse_events($testcase, $result); return $result; } done_testing; YAML-PP-v0.38.0/t/15.parse-eol.t0000644000175000017500000000156014556031647014277 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP::Parser; my @yaml = ( 'foo: bar', 'foo: bar #end', 'foo', '- a', '-', "|\nfoo", ">\nfoo", "|", '"foo"', '"foo" ', 'foo:', 'foo: ', '&foo', '&foo ', '!foo', "foo\n ", '---', '--- ', '...', '... ', ); my $ypp = YAML::PP::Parser->new( receiver => sub {} ); if (my $num = $ENV{TEST_NUM}) { @yaml = $yaml[$num-1]; } for my $yaml (@yaml) { my $display = $yaml; $display =~ s/\n/\\n/g; $display =~ s/\r/\\r/g; $display =~ s/\t/\\t/g; my $title = "Without final EOL: >>$display<<"; eval { $ypp->parse_string($yaml); }; if ($@) { diag "Error: $@"; ok(0, $title); } else { ok(1, $title); } } done_testing; YAML-PP-v0.38.0/t/54.glob.t0000644000175000017500000001225614556031647013342 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use IO::File; use YAML::PP; use YAML::PP::Schema::Perl; use Scalar::Util qw/ blessed reftype /; my $test_deep; BEGIN { eval "use Test::Deep qw/ cmp_deeply /"; unless ($@) { $test_deep = 1; } } unless ($test_deep) { plan skip_all => "No Test::Deep available"; exit; } our $var = "Hola"; our @var = (3, 14, 15); our %var = (pi => '3.1415'); my $stdin = \*DATA, my $fileno = fileno DATA; my $perl_objects = YAML::PP::Schema::Perl->new( ); my $perl_no_objects = YAML::PP::Schema::Perl->new( classes => [], ); my $yp = YAML::PP->new( schema => ['+', $perl_objects], ); my $yp_no_objects = YAML::PP->new( schema => ['+', $perl_no_objects], ); my %tests = ( simple => { in => <<'EOM', --- !perl/glob ARRAY: - 3 - 14 - 15 HASH: pi: '3.1415' NAME: var PACKAGE: main SCALAR: Hola EOM name => '*main::var', value => 'Hola', types => { SCALAR => 'Hola', ARRAY => [ 3, 14, 15 ], HASH => { pi => '3.1415' }, }, }, blessed => { in => <<'EOM', --- !perl/glob:Foo ARRAY: - 3 - 14 - 15 HASH: pi: '3.1415' NAME: var PACKAGE: main SCALAR: Hola EOM name => '*main::var', class => 'Foo', value => 'Hola', types => { SCALAR => 'Hola', ARRAY => [ 3, 14, 15 ], HASH => { pi => '3.1415' }, }, }, io => { in => <<"EOM", --- !perl/glob IO: fileno: $fileno stat: {} NAME: DATA PACKAGE: main EOM name => '*main::DATA', types => { IO => $fileno, }, }, blessed_io => { in => <<"EOM", --- !perl/glob:Foo IO: fileno: $fileno stat: {} NAME: DATA PACKAGE: main EOM name => '*main::DATA', class => 'Foo', types => { IO => $fileno, }, }, ); subtest valid => sub { my @tests = ( [objects => $yp], [no_objects => $yp_no_objects], ); for my $type (@tests) { my ($test_type, $yp) = @$type; for my $key (sort keys %tests) { my $test = $tests{ $key }; my $name = $test->{name}; my $label = "$test_type - $key - $name"; my $class = $test->{class} || ''; note "============ $key $name"; my $input = $test->{in}; my $data = $yp->load_string($input); my $glob = *{$data}; if ($class) { my $ref = ref $data; if ($test_type eq 'no_objects') { my $reftype = reftype(\$data); is($reftype, 'GLOB', "$label - ($class) reftype is glob"); isnt(ref $data, $class, "$label - Class not equals '$class'"); } else { my $reftype = reftype($data); is($reftype, 'GLOB', "$label - ($class) reftype is glob"); is(ref $data, $class, "$label - Class equals '$class'"); } } else { my $reftype = reftype(\$data); is($reftype, 'GLOB', "$label - reftype is glob"); } is("$glob", $name, "$label - Glob name"); my $types = $test->{types}; for my $type (sort keys %$types) { my $exp = $types->{ $type }; my $value; my $glob = *{$data}{ $type }; if ($type eq 'SCALAR') { $value = $$glob; } elsif ($type eq 'ARRAY') { $value = [ @$glob ]; } elsif ($type eq 'HASH') { $value = { %$glob }; } elsif ($type eq 'IO') { $value = fileno $glob; } cmp_deeply($value, $exp, "$label - $type - Data equal"); } my $dump = $yp->dump_string($data); if ($key =~ m/io/) { $dump =~ s/^ [a-z]+: \S+\n//mg; $dump =~ s/^ tell: \S+\n//m; $dump =~ s/stat:$/stat: \{\}/m; } if ($class and $test_type eq 'no_objects') { isnt($dump, $input, "$label - Dump not equals input"); } else { is($dump, $input, "$label - Dump equals input"); } } } }; subtest ioscalar => sub { my $fh = IO::File->new("< $Bin/54.glob.t"); my $dump = $yp->dump_string($fh); my $fn = $fh->fileno; like $dump, qr{--- !perl/glob:IO::File}, "IO::Scalar correctly dumped as blessed per/glob"; like $dump, qr{fileno: $fn\n}, "IO::Scalar fileno correct"; }; my @error = ( [ <<'EOM', qr{Unexpected keys in perl/glob}], --- !perl/glob NAME: var this: should not be here EOM [ <<'EOM', qr{Missing NAME in perl/glob}], --- !perl/glob name: invalid EOM ); subtest error => sub { for my $item (@error) { my ($input, $qr) = @$item; my $data = eval { $yp->load_string($input); }; my $err = $@; like $err, $qr, "Invalid glob - error matches $qr"; } }; done_testing; __DATA__ dummy YAML-PP-v0.38.0/t/lib/0000755000175000017500000000000014556031647012543 5ustar tinatinaYAML-PP-v0.38.0/t/lib/MySchema.pm0000644000175000017500000000143714556031647014614 0ustar tinatinapackage MySchema; use base 'YAML::PP::Schema'; use strict; use warnings; sub new { my ($class, %args) = @_; my $self = bless {}, $class; return $self; } sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_mapping_resolver( tag => '!Class1', on_create => sub { return bless { id => 23 }, 'Class1' }, on_data => sub { my ($constructor, $data, $list) = @_; %$$data = (%$$data, @$list); }, ); $schema->add_representer( class_equals => 'Class1', code => sub { my ($representer, $node) = @_; # $node->{value} contains the object $node->{tag} = '!Class1'; $node->{data} = $node->{value}; return 1; }, ); } 1; YAML-PP-v0.38.0/t/lib/YAML/0000755000175000017500000000000014556031647013305 5ustar tinatinaYAML-PP-v0.38.0/t/lib/YAML/PP/0000755000175000017500000000000014556031647013624 5ustar tinatinaYAML-PP-v0.38.0/t/lib/YAML/PP/Test.pm0000644000175000017500000005464114556031647015113 0ustar tinatinapackage YAML::PP::Test; use strict; use warnings; use File::Basename qw/ dirname basename /; use Encode; use Test::More; use YAML::PP::Common qw/ YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE YAML_PLAIN_SCALAR_STYLE /; sub new { my ($class, %args) = @_; my $self = bless { stats => {}, %args, }, $class; my $id2tags = $self->get_tags; $self->{id2tags} = $id2tags; return $self; } sub get_tags { my ($self, %args) = @_; my %id_tags; my $dir = $self->{test_suite_dir} . "/tags"; return unless -d $dir; opendir my $dh, $dir or die $!; my @tags = grep { not m/^\./ } readdir $dh; for my $tag (sort @tags) { opendir my $dh, "$dir/$tag" or die $!; my @ids = grep { -l "$dir/$tag/$_" } readdir $dh; $id_tags{ $_ }->{ $tag } = 1 for @ids; closedir $dh; } closedir $dh; return \%id_tags; } sub get_tests { my ($self) = @_; my $test_suite_dir = $self->{test_suite_dir}; my $dir = $self->{dir}; my $tag = $self->{tag}; my $id2tags = $self->{id2tags}; my $valid = $self->{valid}; my $json = $self->{in_json}; my @dirs; if (-d $test_suite_dir) { opendir my $dh, $test_suite_dir or die $!; my @ids = grep { m/^[A-Z0-9]{4}\z/ } readdir $dh; closedir $dh; my @allids; for my $id (@ids) { if (-f "$test_suite_dir/$id/===") { push @allids, $id; next; } opendir my $dh, "$test_suite_dir/$id" or die $!; my @subids = map { "$id/$_" } grep { m/^[0-9]+\z/ } readdir $dh; closedir $dh; push @allids, @subids; } @allids = grep { $valid ? not -f "$test_suite_dir/$_/error" : -f "$test_suite_dir/$_/error" } @allids; if ($json) { @allids = grep { -f "$test_suite_dir/$_/in.json" } @allids; } if ($tag) { @allids = grep { $id2tags->{ $_ }->{ $tag }; } @allids; } push @dirs, map { "$test_suite_dir/$_" } @allids; } else { Test::More::diag("\n############################"); Test::More::diag("No yaml-test-suite directory"); Test::More::diag("Using only local tests"); Test::More::diag("Checkout with: git worktree add test-suite test-suite"); Test::More::diag("############################"); } @dirs = sort @dirs; opendir my $dh, $dir or die $!; push @dirs, map { "$dir/$_" } grep { m/^[iv][A-Z0-9]{3}\z/ and (not $json or -f "$dir/$_/in.json") } readdir $dh; closedir $dh; return @dirs; } sub read_tests { my ($self, %args) = @_; my $test_suite_dir = $self->{test_suite_dir}; my $dir = $self->{dir}; my $skip = $args{skip}; my @dirs; my @todo; if ($ENV{TEST_ALL}) { @todo = @$skip; @$skip = (); } if (my $dir = $ENV{YAML_TEST_DIR}) { @dirs = ($dir); @todo = (); @$skip = (); } else { @dirs = $self->get_tests(); } my $skipped; @$skipped{ @$skip } = (1) x @$skip; my %todo; @todo{ @todo } = (); my @testcases; for my $dir (sort @dirs) { my $id = basename $dir; if ($id =~ m/^\d+$/) { $id = (basename dirname $dir) . ':' . $id; } open my $fh, '<', "$dir/===" or die $!; chomp(my $title = <$fh>); close $fh; my @test_events; if ($self->{events}) { open my $fh, '<', "$dir/test.event" or die $!; chomp(@test_events = <$fh>); close $fh; } my $in_yaml; if ($self->{in_yaml}) { open my $fh, "<:encoding(UTF-8)", "$dir/in.yaml" or die $!; $in_yaml = do { local $/; <$fh> }; close $fh; } my $linecount = 0; if ($self->{linecount} and length $in_yaml) { $linecount = () = $in_yaml =~ m/^/mg; } my $out_yaml; if ($self->{out_yaml}) { if (-f "$dir/out.yaml") { open my $fh, "<:encoding(UTF-8)", "$dir/out.yaml" or die $!; $out_yaml = do { local $/; <$fh> }; close $fh; } else { open my $fh, "<:encoding(UTF-8)", "$dir/in.yaml" or die $!; $out_yaml = do { local $/; <$fh> }; close $fh; } } my $emit_yaml; if ($self->{emit_yaml}) { my $file = "$dir/emit.yaml"; unless (-f $file) { $file = "$dir/out.yaml"; } unless (-f $file) { $file = "$dir/in.yaml"; } open my $fh, "<:encoding(UTF-8)", $file or die $!; $emit_yaml = do { local $/; <$fh> }; close $fh; } my $in_json; if ($self->{in_json}) { open my $fh, "<:encoding(UTF-8)", "$dir/in.json" or die $!; $in_json = do { local $/; <$fh> }; close $fh; } my $todo = exists $todo{ $id }; my $skip = delete $skipped->{ $id }; my $test = { id => $id, dir => dirname($dir), title => $title, test_events => \@test_events, in_yaml => $in_yaml, out_yaml => $out_yaml, emit_yaml => $emit_yaml, in_json => $in_json, linecount => $linecount, todo => $todo, skip => $skip, }; push @testcases, $test; } if (keys %$skipped) { # are there any leftover skips? warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$skipped], ['skipped']); } $self->{testcases} = \@testcases; return (\@testcases); } sub run_testcases { my ($self, %args) = @_; my $testcases = $self->{testcases}; my $code = $args{code}; my $stats = $self->{stats}; unless (@$testcases) { ok(1); return; } for my $testcase (@$testcases) { my $id = $testcase->{id}; my $todo = $testcase->{todo}; # diag "------------------------------ $id"; my $result; if ($testcase->{skip}) { SKIP: { push @{ $stats->{SKIP} }, $id; skip "SKIP $id", 1; $result = $code->($self, $testcase); } } elsif ($todo) { TODO: { local $TODO = $todo; $result = $code->($self, $testcase); } } else { $result = $code->($self, $testcase); } } } sub print_stats { my ($self, %args) = @_; my $count_fields = $args{count}; my $list_fields = $args{ids}; my $stats = $self->{stats}; my $counts = ''; for my $field (@$count_fields) { my $count = scalar @{ $stats->{ $field } || [] }; $counts .= "$field: $count "; } $counts .= "\n"; diag $counts; for my $field (@$list_fields) { my $ids = $stats->{ $field } || []; diag "$field: (@$ids)" if @$ids; } } sub parse_events { my ($class, $testcase) = @_; my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, $event, $info) = @_; push @events, YAML::PP::Common::event_to_test_suite($info, { flow => 1 }); }, ); eval { $parser->parse_string($testcase->{in_yaml}); }; my $err = $@; my $line = $parser->lexer->line; return { events => \@events, err => $err, parser => $parser, line => $line, }; } sub compare_parse_events { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $test_events = $testcase->{test_events}; my $exp_lines = $testcase->{linecount}; my @events = @{ $result->{events} }; $_ = encode_utf8 $_ for @events; my $ok = 0; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title (ERROR)"); } else { $ok = is_deeply(\@events, $test_events, "$id - $title"); } if ($ok) { push @{ $stats->{OK} }, $id; if (defined $exp_lines) { my $lines = $result->{line}; cmp_ok($lines, '==', $exp_lines, "$id - Line count $lines == $exp_lines"); } } else { push @{ $stats->{DIFF} }, $id unless $err; if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$yaml" unless $testcase->{todo}; diag "EVENTS:\n" . join '', map { "$_\n" } @$test_events; diag "GOT EVENTS:\n" . join '', map { "$_\n" } @events; } } } sub parse_tokens { my ($class, $testcase) = @_; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; }, ); eval { $parser->parse_string($testcase->{in_yaml}); }; my $err = $@; my $tokens = $parser->tokens; return { err => $err, tokens => $tokens, }; } sub compare_tokens { my ($self, $testcase, $result) = @_; my $id = $testcase->{id}; my $title = $testcase->{title}; my $yaml = $testcase->{in_yaml}; my $all_tokens = $result->{tokens}; my @yaml_lines = split /(?<=\n)/, $yaml; my $error; my $ok = 1; LINE: for my $i (0 .. $#yaml_lines) { my $line_number = $i + 1; # diag("============== Line $line_number"); my $line = $yaml_lines[ $i ]; my @tokens; TOKEN: while (@$all_tokens) { my $next = $all_tokens->[0]; if (my $sub = $next->{subtokens}) { shift @$all_tokens; unshift @$all_tokens, @$sub; next TOKEN; } if ($next->{line} < $line_number) { $error = { token => $next, msg => "Wrong line", }; $ok = 0; last LINE; } last if $next->{line} > $line_number; $next = shift @$all_tokens; push @tokens, $next; } my $column = 0; while (@tokens) { my $token = shift @tokens; my $token_column = $token->{column}; my $value = $token->{value}; if ($token->{orig}) { $value = $token->{orig}; } unless ($token->{column} == $column) { $ok = 0; $error = { token => $token, msg => "Wrong column", }; last LINE; } unless ($line =~ s/^\Q$value//) { $ok = 0; $error = { token => $token, msg => "Token does not match YAML", }; last LINE; } $column += length($value); } if (length $line) { $ok = 0; $error = { msg => "Line is longer than tokens", }; } } if (@$all_tokens) { $ok = 0; $error = { msg => "More tokens than YAML lines", }; } unless ($ok) { warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([$error], ['error']); diag($yaml); } ok($ok, "$id - Tokens match YAML"); } sub compare_invalid_parse_events { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $test_events = $testcase->{test_events}; my $ok = 0; if (not $err) { push @{ $stats->{OK} }, $id; ok(0, "$id - $title - should be invalid"); } else { push @{ $stats->{ERROR} }, $id; if (not $result->{events}) { $ok = ok(1, "$id - $title"); } else { $ok = is_deeply($result->{events}, $test_events, "$id - $title"); } } if ($ok) { } else { push @{ $stats->{DIFF} }, $id; if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$yaml" unless $testcase->{todo}; diag "EVENTS:\n" . join '', map { "$_\n" } @$test_events; diag "GOT EVENTS:\n" . join '', map { "$_\n" } @{ $result->{events} }; } } } sub load_json { my ($self, $testcase) = @_; my $ypp = YAML::PP->new(boolean => 'JSON::PP', schema => [qw/ Core /]); my @docs = eval { $ypp->load_string($testcase->{in_yaml}) }; my $err = $@; return { data => \@docs, err => $err, }; } sub compare_load_json { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $exp_json = $testcase->{in_json}; my $docs = $result->{data}; # input can contain multiple JSON my @exp_json = split m/^(?=true|false|null|[0-9"\{\[])/m, $exp_json; $exp_json = ''; my $coder = JSON::PP->new->ascii->pretty->allow_nonref->canonical; for my $exp (@exp_json) { my $data = $coder->decode($exp); $exp = $coder->encode($data); $exp_json .= $exp; } my $json = ''; for my $doc (@$docs) { my $j = $coder->encode($doc); $json .= $j; } my $ok = 0; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title - ERROR"); } else { $ok = cmp_ok($json, 'eq', $exp_json, "$id - load -> JSON equals expected JSON"); if ($ok) { push @{ $stats->{OK} }, $id; } else { push @{ $stats->{DIFF} }, $id; } } unless ($ok) { if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$yaml" unless $testcase->{todo}; diag "JSON:\n" . $exp_json; diag "GOT JSON:\n" . $json; } } } sub dump_yaml { my ($self, $testcase) = @_; my $id = $testcase->{id}; my $ypp = YAML::PP->new( boolean => 'JSON::PP', duplicate_keys => 1 ); my @docs = eval { $ypp->load_string($testcase->{in_yaml}) }; my $err = $@; my $result = {}; if ($err) { diag "ERROR loading $id"; $result->{err} = $err; return $result; } my $out_yaml; eval { $out_yaml = $ypp->dump_string(@docs); }; $err = $@; if ($err) { diag "ERROR dumping $id"; $result->{err} = $err; return $result; } $result->{dump_yaml} = $out_yaml; my @reload = eval { $ypp->load_string($out_yaml) }; $err = $@; if ($err) { diag "ERROR reloading $id"; $result->{err} = $err; return $result; } $result->{data} = \@docs; $result->{data_reload} = \@reload; my $exp_out_yaml = $testcase->{out_yaml}; my @events; my @reparse_events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, $event, $info) = @_; push @events, YAML::PP::Common::event_to_test_suite($info, { flow => 0 }); }, ); eval { $parser->parse_string($out_yaml); }; $err = $@; if ($err) { diag "ERROR parsing $id\n$err"; $result->{err} = $err; return $result; } @reparse_events = @events; @events = (); my @exp_events; eval { $parser->parse_string($testcase->{out_yaml}); }; $err = $@; @exp_events = @events; $result->{dump_events} = \@reparse_events; $result->{expected_events} = \@exp_events; return $result; } sub compare_dump_yaml { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $out_yaml = $testcase->{out_yaml}; my $docs = $result->{data}; my $reload_docs = $result->{data_reload}; my $dump_yaml = $result->{dump_yaml}; my $dump_events = $result->{dump_events}; my $exp_events = $result->{expected_events}; my $ok = 0; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title - ERROR"); } else { $ok = is_deeply($reload_docs, $docs, "$id - $title - Reload data equals original"); push @{ $stats->{DIFF} }, $id unless $ok; } if ($ok) { push @{ $stats->{OK} }, $id; } else { if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$docs], ['docs']); if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$out_yaml" unless $testcase->{todo}; diag "OUT YAML:\n$out_yaml" unless $testcase->{todo}; my $reload_dump = Data::Dumper->Dump([$reload_docs], ['reload_docs']); diag "RELOAD DATA:\n$reload_dump" unless $testcase->{todo}; } } # TODO # my $same_events = is_deeply($dump_events, $exp_events, "$id - $title - Events from re-parsing are the same"); } sub emit_yaml { my ($self, $testcase, $args) = @_; my $flow = $args->{flow} ||= 'no'; my $indent = $args->{indent} ||= 2; my $id = $testcase->{id}; my $exp_yaml = $testcase->{emit_yaml}; my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; push @events, [@args]; }, ); eval { $parser->parse_string($testcase->{in_yaml}); }; my $err = $@; my $result = {}; if ($err) { diag "ERROR parsing $id\n$err"; $result->{err} = $err; return $result; } my $emit_yaml = $self->_emit_events(\@events, $args); my @reparse_events; my @expected_reparse_events; my @ev; my @emit_events; $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; my ($type, $info) = @args; push @emit_events, $info; push @ev, YAML::PP::Common::event_to_test_suite($info, { flow => $flow eq 'keep' }); }, ); eval { $parser->parse_string($emit_yaml); }; $err = $@; if ($err) { diag "ERROR parsing $id\n$err"; diag $emit_yaml; $result->{err} = $err; return $result; } @reparse_events = @ev; if ($flow eq 'keep') { @expected_reparse_events = map { YAML::PP::Common::event_to_test_suite($_->[1], { flow => 1 }) } @events; } elsif ($flow eq 'no') { @ev = (); eval { $parser->parse_string($exp_yaml); }; @expected_reparse_events = @ev; } else { @expected_reparse_events = map { if ($_->[1]->{name} eq 'sequence_start_event') { $_->[1]->{style} = YAML_FLOW_SEQUENCE_STYLE; } elsif ($_->[1]->{name} eq 'mapping_start_event') { $_->[1]->{style} = YAML_FLOW_MAPPING_STYLE; } elsif ($_->[1]->{name} eq 'scalar_event') { $_->[1]->{style} = YAML_PLAIN_SCALAR_STYLE; } YAML::PP::Common::event_to_test_suite($_->[1], { flow => 1 }); } @events; @reparse_events = map { if ($_->{name} eq 'scalar_event') { $_->{style} = YAML_PLAIN_SCALAR_STYLE; } YAML::PP::Common::event_to_test_suite($_, { flow => 1 }); } @emit_events; } $result = { expected_events => \@expected_reparse_events, reparse_events => \@reparse_events, }; # note "========= EMIT:\n$emit_yaml"; $result->{emit_yaml} = $emit_yaml if $flow eq 'no'; return $result; } sub _emit_events { my ($testsuite, $events, $args) = @_; my $indent = $args->{indent} ||= 2; my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new( indent => $indent ); $emitter->set_writer($writer); $emitter->init; for my $event (@$events) { my ($type, $info) = @$event; delete $info->{version_directive}; if ($type eq 'sequence_start_event' or $type eq 'mapping_start_event') { if ($args->{flow} eq 'no') { delete $info->{style}; } elsif ($args->{flow} eq 'keep') { delete $info->{style} if $args->{flow} eq 'no'; } elsif ($args->{flow} eq 'yes') { if ($type eq 'sequence_start_event') { $info->{style} = YAML_FLOW_SEQUENCE_STYLE; } else { $info->{style} = YAML_FLOW_MAPPING_STYLE; } } } $emitter->$type($info); } my $yaml = $emitter->writer->output; return $yaml; } sub compare_emit_yaml { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $exp_emit_yaml = $testcase->{emit_yaml}; my $emit_yaml = $result->{emit_yaml}; my $exp_events = $result->{expected_events}; my $reparse_events = $result->{reparse_events}; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title - ERROR"); return; } $_ = encode_utf8 $_ for (@$reparse_events, @$exp_events); my $same_events = is_deeply($reparse_events, $exp_events, "$id - $title - Events from re-parsing are the same"); if ($same_events) { push @{ $stats->{SAME_EVENTS} }, $id; if (defined $emit_yaml) { $_ = encode_utf8 $_ for ($emit_yaml, $exp_emit_yaml); my $same_yaml = cmp_ok($emit_yaml, 'eq', $exp_emit_yaml, "$id - $title - Emit events"); if ($same_yaml) { push @{ $stats->{SAME_YAML} }, $id; } else { local $Data::Dumper::Useqq = 1; diag(' ' . Data::Dumper->Dump([$emit_yaml], ['emit_yaml'])); diag(Data::Dumper->Dump([$exp_emit_yaml], ['exp_emit_yaml'])); push @{ $stats->{DIFF_YAML} }, $id; } } } else { push @{ $stats->{DIFF_EVENTS} }, $id; } } 1; YAML-PP-v0.38.0/t/11.parse-invalid.t0000644000175000017500000000376414556031647015152 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use Data::Dumper; use YAML::PP::Parser; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; my @skip = qw/ CXX2 9KBC S98Z T833 5LLU /; # in case of error events might not be exactly matching my %skip_events = ( Q4CL => 1, JY7Z => 1, '3HFZ' => 1, X4QW => 1, SU5Z => 1, W9L4 => 1, ZL4Z => 1, '9KBC' => 1, SY6V => 1, C2SP => 1, 'NTY5' => 1, '4EJS' => 1, '2CMS' => 1, 'HU3P' => 1, 'EW3V' => 1, 'G9HC' => 1, '4H7K' => 1, BS4K => 1, EB22 => 1, i037 => 1, i038 => 1, 'MUS6:00' => 1, 'MUS6:01' => 1, 'Y79Y:004' => 1, 'Y79Y:005' => 1, 'Y79Y:006' => 1, 'Y79Y:007' => 1, 'Y79Y:008' => 1, 'Y79Y:009' => 1, ); my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/invalid", valid => 0, events => 1, in_yaml => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); my %errors; $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ OK DIFF ERROR TODO SKIP /], ids => [qw/ OK DIFF /], ); for my $type (sort keys %errors) { diag "ERRORS($type): (@{ $errors{ $type } })" if $ENV{TEST_VERBOSE}; } done_testing; exit; sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->parse_events($testcase); my $err = $result->{err}; if ($err) { diag "ERROR: $err" if $ENV{YAML_PP_TRACE}; my $error_type = 'unknown'; if ($@ =~ m/( Expected .*?)/) { $error_type = "$1"; } elsif ($@ =~ m/( Not Implemented: .*?)/) { $error_type = "$1"; } push @{ $errors{ $error_type } }, $id; } if ($skip_events{ $id }) { delete $result->{events}; } $testsuite->compare_invalid_parse_events($testcase, $result); return $result; } YAML-PP-v0.38.0/t/46.line-endings.t0000644000175000017500000000114614556031647014770 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More tests => 2; use YAML::PP; use Encode; use Data::Dumper; my $yp = YAML::PP->new; subtest mac => sub { my $yaml = qq{x: "a\r b"\ry: b\r}; my $data = $yp->load_string($yaml); my $expected = { x => 'a b', y => 'b', }; is_deeply($data, $expected, 'Mac \r line endings'); }; subtest win => sub { my $yaml = qq{x: "a\r\n b"\ry: b\r}; my $data = $yp->load_string($yaml); my $expected = { x => 'a b', y => 'b', }; is_deeply($data, $expected, 'Win \r\n line endings'); }; done_testing; YAML-PP-v0.38.0/t/24.double-escapes.t0000644000175000017500000000304214556031647015300 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; my @yaml = ( [ q{\\\\}, q{\\}, q{\\} ], [ q{\"}, q{"}, q{'"'} ], [ q{\a}, qq{\a}, q{"\a"} ], [ q{\b}, qq{\b}, q{"\b"} ], [ q{\e}, qq{\e}, q{"\e"} ], [ q{\f}, qq{\f}, q{"\f"} ], [ q{\n}, qq{\n}, q{"\n"} ], [ q{\r}, qq{\r}, q{"\r"} ], [ q{\t}, qq{\t}, q{"\t"} ], [ q{\v}, qq{\x0b}, q{"\v"} ], [ q{\0}, qq{\0}, q{"\0"} ], [ q{\ }, q{ }, q{' '} ], [ q{\_}, qq{\xa0}, q{"\_"} ], [ q{\N}, qq{\x85}, q{"\N"} ], [ q{\L}, qq{\x{2028}}, q{"\L"}], [ q{\P}, qq{\x{2029}}, q{"\P"}], [ q{\x41}, q{A}, q{A} ], [ q{\u0041}, q{A}, q{A} ], [ q{\U00000041}, q{A}, q{A} ], ); for my $test (@yaml) { my ($yaml, $output, $dump) = @$test; unless (defined $dump) { $dump = $yaml; } $dump = "--- $dump\n"; $yaml = qq{"$yaml"}; my $got = eval { YAML::PP->new->load_string($yaml) }; if ($@) { diag "YAML:" . Data::Dumper->Dump([\$yaml], ['yaml']); diag "YAML: >>$yaml<< "; diag "Error: $@"; ok(0, "Escape: $yaml"); } else { local $Data::Dumper::Useqq = 1; my $ok = cmp_ok($got, 'eq', $output, "Escape: $yaml"); unless ($ok) { warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$got], ['got']); next; } } my $got_dump = YAML::PP->new->dump_string($got); my $ok = cmp_ok($got_dump, 'eq', $dump, "Dump: $yaml"); } done_testing; YAML-PP-v0.38.0/t/52.preserve.t0000644000175000017500000002256614556031647014255 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS YAML_LITERAL_SCALAR_STYLE YAML_FLOW_MAPPING_STYLE YAML_FLOW_SEQUENCE_STYLE /; subtest 'preserve-scalar-style' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE ); my $yaml = <<'EOM'; --- p: plain 's': 'single' "d": "double" f: >- folded ? |- l : |- literal nl: |+ ... --- - 0 - null - 23 - "42" - !!int '99' EOM my $exp_styles = <<'EOM'; --- p: plain 's': 'single' "d": "double" f: >- folded ? |- l : |- literal nl: |+ ... EOM my $exp_data = <<'EOM'; --- - 0 - null - 23 - "42" - 99 EOM my @docs = $yp->load_string($yaml); my $styles = $docs[0]; my $data = $docs[1]; my $dump_styles = $yp->dump_string($styles); is($dump_styles, $exp_styles, 'preserve=1 dump styless ok'); my $newline = delete $styles->{nl}; my $string = join ' ', values %$styles; is($string, 'plain single double folded literal', 'Strings'); my $dump_data = $yp->dump_string($data); is($dump_data, $exp_data, 'preserve=1 dump data ok'); $styles->{s} .= ' APPEND'; is($styles->{s}, 'single APPEND', 'append works'); is($yp->dump_string($styles->{s}), "--- single APPEND\n", 'Style gets lost on append'); $newline->{value} = "\n\n"; is($yp->dump_string($newline),qq{--- |+\n\n\n...\n}, 'Style is preserved for direct assignment'); $newline->{value} = "\0"; is($yp->dump_string($newline),qq{--- "\\0"\n}, 'Style gets changed if necessary'); }; subtest 'preserve-order' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_ORDER ); my $yaml = <<'EOM'; --- z: 1 a: 2 y: 3 b: 4 x: 5 c: 6 EOM my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $yaml, 'preserve=1 Key order preserved'); my @keys = keys %$data; is("@keys", "z a y b x c", 'keys()'); is($data->{a}, 2, 'hash a'); my $first = each %$data; is($first, 'z', 'First key'); my $next = each %$data; is($next, 'a', 'Next key'); is(delete $data->{z}, 1, 'delete(z)'); @keys = keys %$data; is("@keys", "a y b x c", 'keys()'); $data->{z} = 99; @keys = keys %$data; is("@keys", "a y b x c z", 'keys()'); my $scalar = scalar %$data; if ($] >= 5.026) { is(scalar %$data, 6, 'scalar'); } my @values = values %$data; is("@values", "2 3 4 5 6 99", 'values()'); is(exists $data->{a}, 1, 'exists(a)'); is(exists $data->{A}, '', 'exists(A)'); %$data = (); is(scalar keys %$data, 0, 'clear'); is(scalar %$data, 0, 'clear'); }; subtest 'object-order' => sub { my $yp = YAML::PP->new( schema => [qw/ + Perl /], preserve => PRESERVE_ORDER, ); my $yaml = <<'EOM'; --- - !perl/hash:Foo z: 1 a: 2 y: 3 b: 4 x: 5 c: 6 EOM my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $yaml, 'load-dump object with preserved hash key order'); }; subtest 'preserve-flow' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE, ); my $yaml = <<'EOM'; --- map: {z: 1, a: 2, y: 3, b: 4} seq: [c, b, {y: z}] EOM my $exp_sorted = <<'EOM'; --- map: {a: 2, b: 4, y: 3, z: 1} seq: [c, b, {y: z}] EOM my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $exp_sorted, 'load-dump with preserve flow'); is(exists($data->{seq}->[0]), 1, 'load sequence'); is(exists($data->{seq}->[3]), !1, 'load sequence'); $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE | PRESERVE_ORDER ); $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); is($dump, $yaml, 'load-dump with preserve flow && order'); $yp = YAML::PP->new( schema => [qw/ + Perl /], preserve => PRESERVE_FLOW_STYLE | PRESERVE_ORDER, ); $yaml = <<'EOM'; --- !perl/hash:Foo map: {z: 1, a: 2, y: 3, b: 4} seq: [c, b, {y: z}] EOM $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); is($dump, $yaml, 'load-dump object with preserved flow && order'); }; subtest 'create-preserve' => sub { my $yp = YAML::PP->new( preserve => 1, ); my $scalar = $yp->preserved_scalar("\n", style => YAML_LITERAL_SCALAR_STYLE ); my $data = { literal => $scalar }; my $dump = $yp->dump_string($data); my $yaml = <<'EOM'; --- literal: |+ ... EOM is($dump, $yaml, 'dump with preserved scalar'); my $hash = $yp->preserved_mapping({}, style => YAML_FLOW_MAPPING_STYLE); %$hash = (z => 1, a => 2, y => 3, b => 4); my $array = $yp->preserved_sequence([23, 24], style => YAML_FLOW_SEQUENCE_STYLE); $data = $yp->preserved_mapping({}); %$data = ( map => $hash, seq => $array ); $dump = $yp->dump_string($data); $yaml = <<'EOM'; --- map: {z: 1, a: 2, y: 3, b: 4} seq: [23, 24] EOM is($dump, $yaml, 'dump with preserved flow && order'); my $alias1 = $yp->preserved_mapping({ a => 1 }, alias => 'MAP', style => YAML_FLOW_MAPPING_STYLE); my $alias2 = $yp->preserved_sequence([qw/ x y z /], alias => 'SEQ', style => YAML_FLOW_SEQUENCE_STYLE); my $alias3 = $yp->preserved_scalar('string', alias => 'SCALAR'); $data = $yp->preserved_sequence([$alias1, $alias2, $alias3, $alias3, $alias2, $alias1]); $dump = $yp->dump_string($data); my $expected = <<'EOM'; --- - &MAP {a: 1} - &SEQ [x, y, z] - &SCALAR string - *SCALAR - *SEQ - *MAP EOM is $dump, $expected, 'dump with preserved map/seq/scalar and aliases'; }; subtest 'tie-array' => sub { my $x = YAML::PP->preserved_sequence([23, 24], style => YAML_FLOW_SEQUENCE_STYLE); @$x = (25, 26); is("@$x", '25 26', 'STORE'); unshift @$x, 24; is("@$x", '24 25 26', 'UNSHIFT'); shift @$x; is("@$x", '25 26', 'SHIFT'); splice @$x, 1, 1, 99, 100; is("@$x", '25 99 100', 'SPLICE'); delete $x->[1]; { no warnings 'uninitialized'; is("@$x", '25 100', 'DELETE'); } $x->[1] = 99; $#$x = 1; is("@$x", '25 99', 'STORESIZE'); }; subtest 'tie-scalar' => sub { my $scalar = YAML::PP->preserved_scalar("abc", style => YAML_LITERAL_SCALAR_STYLE ); like $scalar, qr{abc}, 'Regex'; ok($scalar eq 'abc', 'eq'); ok('abc' eq $scalar, 'eq'); ok($scalar gt 'abb', 'gt'); $scalar = YAML::PP->preserved_scalar(23, style => YAML_LITERAL_SCALAR_STYLE ); ok($scalar > 22, '>'); ok($scalar <= 23, '<='); }; subtest 'aliases' => sub { my $yaml = <<'EOM'; --- mapping: &mapping a: 1 b: 2 alias: *mapping seq: &seq - a - b same: *seq str: &scalar xyz copy: *scalar EOM my $sorted = <<'EOM'; --- alias: &mapping a: 1 b: 2 copy: &scalar xyz mapping: *mapping same: &seq - a - b seq: *seq str: *scalar EOM my $yp = YAML::PP->new( preserve => PRESERVE_ALIAS ); my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $sorted, "Preserving alias names, but not order"); $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_ALIAS ); $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); is($dump, $yaml, "Preserving alias names and order"); $yp = YAML::PP->new( preserve => PRESERVE_ALIAS | PRESERVE_FLOW_STYLE ); $yaml = <<'EOM'; --- a: &seq [a] b: *seq c: &seq [c] d: *seq e: &map {e: 1} f: *map g: &map {g: 1} h: *map i: &scalar X j: *scalar k: &scalar Y l: *scalar EOM $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); my $swap = $data->{a}; $data->{a} = $data->{d}; $data->{d} = $swap; $swap = $data->{e}; $data->{e} = $data->{h}; $data->{h} = $swap; $swap = $data->{i}; $data->{i} = $data->{l}; $data->{l} = $swap; $dump = $yp->dump_string($data); my $expected = <<'EOM'; --- a: &1 [c] b: &seq [a] c: *1 d: *seq e: &2 {g: 1} f: &map {e: 1} g: *2 h: *map i: &3 Y j: &scalar X k: *3 l: *scalar EOM is $dump, $expected, 'dump - Repeated anchors are removed'; my $reload = $yp->load_string($dump); is_deeply($reload, $data, 'Reloading after shuffling wiht repeated anchors'); }; subtest 'create-tied-automatically' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_ORDER ); my $outer = $yp->preserved_mapping({}); %$outer = (z => 1, a => 2, y => 3, b => 4); my $array = $outer->{new} = []; my $inner = $outer->{new}->[0] = {}; $inner->{Z} = 1; $inner->{A} = 2; $inner->{Y} = 3; $inner->{B} = 4; push @$array, {}; my $inner2 = $outer->{new}->[1]; $inner2->{Z} = 11; $inner2->{A} = 22; $inner2->{Y} = 33; $inner2->{B} = 44; splice @$array, 0, 0, {}; my $inner3 = $outer->{new}->[0]; $inner3->{Z} = 111; $inner3->{A} = 222; $inner3->{Y} = 333; $inner3->{B} = 444; unshift @$array, {}; my $inner4 = $outer->{new}->[0]; $inner4->{Z} = 1111; $inner4->{A} = 2222; $inner4->{Y} = 3333; $inner4->{B} = 4444; $outer->{new}->[4] = { key => 4 }; $outer->{new}->[5] = [55]; $outer->{newer} = { key => 6 }; $outer->{newest} = [66]; my $dump = $yp->dump_string($outer); my $expected = <<'EOM'; --- z: 1 a: 2 y: 3 b: 4 new: - Z: 1111 A: 2222 Y: 3333 B: 4444 - Z: 111 A: 222 Y: 333 B: 444 - Z: 1 A: 2 Y: 3 B: 4 - Z: 11 A: 22 Y: 33 B: 44 - key: 4 - - 55 newer: key: 6 newest: - 66 EOM is $dump, $expected, 'dump - Newly created hashes keep order automatically'; }; done_testing; YAML-PP-v0.38.0/t/valid/0000755000175000017500000000000014556031647013074 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v030/0000755000175000017500000000000014556031647013564 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v030/===0000644000175000017500000000002314556031647014050 0ustar tinatinaDirective variants YAML-PP-v0.38.0/t/valid/v030/test.event0000644000175000017500000000004014556031647015600 0ustar tinatina+STR +DOC --- =VAL :a -DOC -STR YAML-PP-v0.38.0/t/valid/v030/in.yaml0000644000175000017500000000002114556031647015047 0ustar tinatina%YAMLL 1.1 --- a YAML-PP-v0.38.0/t/valid/v030/out.yaml0000644000175000017500000000000614556031647015253 0ustar tinatina--- a YAML-PP-v0.38.0/t/valid/v028/0000755000175000017500000000000014556031647013573 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v028/===0000644000175000017500000000003614556031647014063 0ustar tinatinaLeading tabs in double quotes YAML-PP-v0.38.0/t/valid/v028/test.event0000644000175000017500000000024214556031647015613 0ustar tinatina+STR +DOC +SEQ =VAL "1 leading \ttab =VAL "2 leading \ttab =VAL "3 leading tab =VAL "4 leading \t tab =VAL "5 leading \t tab =VAL "6 leading tab -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v028/in.yaml0000644000175000017500000000022414556031647015063 0ustar tinatina- "1 leading \ttab" - "2 leading \ tab" - "3 leading tab" - "4 leading \t tab" - "5 leading \ tab" - "6 leading tab" YAML-PP-v0.38.0/t/valid/v028/out.yaml0000644000175000017500000000017014556031647015264 0ustar tinatina- "1 leading \ttab" - "2 leading \ttab" - "3 leading tab" - "4 leading \t tab" - "5 leading \t tab" - "6 leading tab" YAML-PP-v0.38.0/t/valid/v034/0000755000175000017500000000000014556031647013570 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v034/in.json0000644000175000017500000000014214556031647015066 0ustar tinatina{ "key": "value", "value": [ "key" ] } { "key": "value", "value": [ "key" ] } YAML-PP-v0.38.0/t/valid/v034/===0000644000175000017500000000006114556031647014056 0ustar tinatinaAlias as mapping key and block sequence as value YAML-PP-v0.38.0/t/valid/v034/test.event0000644000175000017500000000026414556031647015614 0ustar tinatina+STR +DOC --- +MAP =VAL :key =VAL &alias :value =ALI *alias +SEQ =VAL :key -SEQ -MAP -DOC +DOC --- +MAP =VAL :key =VAL &alias :value =ALI *alias +SEQ =VAL :key -SEQ -MAP -DOC -STR YAML-PP-v0.38.0/t/valid/v034/in.yaml0000644000175000017500000000011414556031647015056 0ustar tinatina--- key: &alias value *alias : - key --- key: &alias value *alias : - key YAML-PP-v0.38.0/t/valid/v034/out.yaml0000644000175000017500000000011214556031647015255 0ustar tinatina--- key: &alias value *alias : - key --- key: &alias value *alias : - key YAML-PP-v0.38.0/t/valid/v009/0000755000175000017500000000000014556031647013572 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v009/===0000644000175000017500000000005214556031647014060 0ustar tinatinaEmpty value at end of unindented sequence YAML-PP-v0.38.0/t/valid/v009/test.event0000644000175000017500000000012714556031647015614 0ustar tinatina+STR +DOC +MAP =VAL :a +SEQ =VAL :1 =VAL :2 =VAL : -SEQ =VAL :b =VAL :3 -MAP -DOC -STR YAML-PP-v0.38.0/t/valid/v009/in.yaml0000644000175000017500000000003214556031647015057 0ustar tinatinaa: - 1 - 2 - # empty b: 3 YAML-PP-v0.38.0/t/valid/v009/out.yaml0000644000175000017500000000002214556031647015257 0ustar tinatinaa: - 1 - 2 - b: 3 YAML-PP-v0.38.0/t/valid/v024/0000755000175000017500000000000014556031647013567 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v024/in.json0000644000175000017500000000103714556031647015071 0ustar tinatina[ { "" : null, "second key" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null, "second key" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null } ] YAML-PP-v0.38.0/t/valid/v024/===0000644000175000017500000000003714556031647014060 0ustar tinatinaEmpty flow mapping keys values YAML-PP-v0.38.0/t/valid/v024/test.event0000644000175000017500000000174514556031647015620 0ustar tinatina+STR +DOC +SEQ +MAP {} =VAL : =VAL : =VAL :second key =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL &anchor1 : =VAL : =VAL :second key =VAL : -MAP +MAP {} =VAL &anchor2 : =VAL : -MAP +MAP {} =VAL &anchor3 : =VAL : -MAP +MAP {} =VAL &anchor4 : =VAL : -MAP +MAP {} =VAL &anchor5 : =VAL : -MAP +MAP {} =VAL &anchor6 : =VAL : -MAP +MAP {} =VAL &anchor7 : =VAL : -MAP +MAP {} =VAL &anchor8 : =VAL : -MAP +MAP {} =VAL &anchor9 : =VAL : -MAP +MAP {} =VAL &anchor10 : =VAL : -MAP +MAP {} =VAL &anchor11 : =VAL : -MAP +MAP {} =VAL &anchor12 : =VAL : -MAP +MAP {} =VAL &anchor13 : =VAL : -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v024/in.yaml0000644000175000017500000000046514556031647015066 0ustar tinatina- {!!str,second key} - {!!str,} - {!!str ,} - {!!str} - {!!str } - {&anchor1,second key} - {&anchor2,} - {&anchor3 ,} - {&anchor4} - {&anchor5 } - {!!str &anchor6,} - {!!str &anchor7 ,} - {!!str &anchor8} - {!!str &anchor9 } - {&anchor10 !!str,} - {&anchor11 !!str ,} - {&anchor12 !!str} - {&anchor13 !!str } YAML-PP-v0.38.0/t/valid/v024/out.yaml0000644000175000017500000000045314556031647015264 0ustar tinatina- !!str : second key: - !!str : - !!str : - !!str : - !!str : - &anchor1 : second key: - &anchor2 : - &anchor3 : - &anchor4 : - &anchor5 : - &anchor6 !!str : - &anchor7 !!str : - &anchor8 !!str : - &anchor9 !!str : - &anchor10 !!str : - &anchor11 !!str : - &anchor12 !!str : - &anchor13 !!str : YAML-PP-v0.38.0/t/valid/v029/0000755000175000017500000000000014556031647013574 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v029/===0000644000175000017500000000002314556031647014060 0ustar tinatinaDirective variants YAML-PP-v0.38.0/t/valid/v029/test.event0000644000175000017500000000004014556031647015610 0ustar tinatina+STR +DOC --- =VAL :a -DOC -STR YAML-PP-v0.38.0/t/valid/v029/in.yaml0000644000175000017500000000002514556031647015063 0ustar tinatina%YAML 1.1 #... --- a YAML-PP-v0.38.0/t/valid/v029/out.yaml0000644000175000017500000000000614556031647015263 0ustar tinatina--- a YAML-PP-v0.38.0/t/valid/v023/0000755000175000017500000000000014556031647013566 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v023/in.json0000644000175000017500000000004614556031647015067 0ustar tinatina[ [], [], [], [], [] ] YAML-PP-v0.38.0/t/valid/v023/===0000644000175000017500000000003014556031647014050 0ustar tinatinaComment lines with tabs YAML-PP-v0.38.0/t/valid/v023/test.event0000644000175000017500000000013714556031647015611 0ustar tinatina+STR +DOC +SEQ +SEQ [] -SEQ +SEQ [] -SEQ +SEQ [] -SEQ +SEQ [] -SEQ +SEQ [] -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v023/in.yaml0000644000175000017500000000012014556031647015051 0ustar tinatina- [ ] - [ ] - [ # comment ] - [ # comment ] - [ # comment ] YAML-PP-v0.38.0/t/valid/v023/out.yaml0000644000175000017500000000003114556031647015253 0ustar tinatina- [] - [] - [] - [] - [] YAML-PP-v0.38.0/t/valid/v021/0000755000175000017500000000000014556031647013564 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v021/===0000644000175000017500000000004214556031647014051 0ustar tinatinaBlock indicators in deeper levels YAML-PP-v0.38.0/t/valid/v021/test.event0000644000175000017500000000013014556031647015600 0ustar tinatina+STR +DOC +SEQ +MAP =VAL :one =VAL | two\n =VAL :three =VAL |four\n -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v021/in.yaml0000644000175000017500000000004714556031647015057 0ustar tinatina- one: |2 two three: | four YAML-PP-v0.38.0/t/valid/v021/out.yaml0000644000175000017500000000004714556031647015260 0ustar tinatina- one: |2 two three: | four YAML-PP-v0.38.0/t/valid/v019/0000755000175000017500000000000014556031647013573 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v019/===0000644000175000017500000000005114556031647014060 0ustar tinatinaImplicit Key Block Sequence on same line YAML-PP-v0.38.0/t/valid/v019/test.event0000644000175000017500000000020114556031647015606 0ustar tinatina+STR +DOC --- +MAP =VAL :mapping +MAP =VAL >key\n =VAL : =VAL : =VAL :value +SEQ =VAL :a =VAL :b -SEQ =VAL : -MAP -MAP -DOC -STR YAML-PP-v0.38.0/t/valid/v019/in.yaml0000644000175000017500000000007114556031647015063 0ustar tinatina--- mapping: ? > key : : value ? - a - b YAML-PP-v0.38.0/t/valid/v019/out.yaml0000644000175000017500000000007514556031647015270 0ustar tinatina--- mapping: ? > key : : value ? - a - b : YAML-PP-v0.38.0/t/valid/v026/0000755000175000017500000000000014556031647013571 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v026/===0000644000175000017500000000002614556031647014060 0ustar tinatinaTabs in double quotes YAML-PP-v0.38.0/t/valid/v026/test.event0000644000175000017500000000013214556031647015607 0ustar tinatina+STR +DOC +SEQ =VAL "1 inline\ttab =VAL "2 inline\ttab =VAL "3 inline\ttab -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v026/in.yaml0000644000175000017500000000006514556031647015064 0ustar tinatina- "1 inline\ttab" - "2 inline\ tab" - "3 inline tab" YAML-PP-v0.38.0/t/valid/v026/out.yaml0000644000175000017500000000006614556031647015266 0ustar tinatina- "1 inline\ttab" - "2 inline\ttab" - "3 inline\ttab" YAML-PP-v0.38.0/t/valid/v025/0000755000175000017500000000000014556031647013570 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v025/===0000644000175000017500000000006014556031647014055 0ustar tinatinaExplicit empty key/value pairs in flow mappings YAML-PP-v0.38.0/t/valid/v025/test.event0000644000175000017500000000044214556031647015612 0ustar tinatina+STR +DOC +SEQ +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : =VAL :key =VAL :value -MAP +MAP {} =VAL : =VAL : =VAL :key =VAL :value -MAP -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v025/in.yaml0000644000175000017500000000013714556031647015063 0ustar tinatina- {? } - { ? } - { ? } - { ? } - { ? ,} - { ? , } - { ? ,key: value} - { ? , key: value} YAML-PP-v0.38.0/t/valid/v025/out.yaml0000644000175000017500000000007214556031647015262 0ustar tinatina- : - : - : - : - : - : - : key: value - : key: value YAML-PP-v0.38.0/t/valid/v031/0000755000175000017500000000000014556031647013565 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v031/===0000644000175000017500000000002314556031647014051 0ustar tinatinaDirective variants YAML-PP-v0.38.0/t/valid/v031/test.event0000644000175000017500000000012414556031647015604 0ustar tinatina+STR +DOC --- =VAL :a -DOC ... +DOC --- =VAL :b -DOC ... +DOC --- =VAL :c -DOC -STR YAML-PP-v0.38.0/t/valid/v031/in.yaml0000644000175000017500000000007214556031647015056 0ustar tinatina%YAML 1.1 --- a ... %YAML 1.1 --- b ... %YAML 1.1 --- c YAML-PP-v0.38.0/t/valid/v031/out.yaml0000644000175000017500000000003214556031647015253 0ustar tinatina--- a ... --- b ... --- c YAML-PP-v0.38.0/t/valid/v020/0000755000175000017500000000000014556031647013563 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v020/===0000644000175000017500000000002414556031647014050 0ustar tinatinaComplex mapping key YAML-PP-v0.38.0/t/valid/v020/test.event0000644000175000017500000000035114556031647015604 0ustar tinatina+STR +DOC --- +MAP +MAP =VAL :x =VAL :y -MAP =VAL :z =VAL :a =VAL :b -MAP -DOC +DOC --- +MAP =VAL :top1 +MAP +MAP =VAL :a =VAL :1 -MAP +MAP =VAL :b +SEQ [] =VAL :c -SEQ -MAP =VAL :x =VAL :y -MAP =VAL :top2 =VAL :value -MAP -DOC -STR YAML-PP-v0.38.0/t/valid/v020/in.yaml0000644000175000017500000000011214556031647015047 0ustar tinatina--- ? x: y : z a: b --- top1: ? a: 1 : b: [c] ? x : y top2: value YAML-PP-v0.38.0/t/valid/v020/out.yaml0000644000175000017500000000011114556031647015247 0ustar tinatina--- ? x: y : z a: b --- top1: ? a: 1 : b: - c x: y top2: value YAML-PP-v0.38.0/t/valid/v033/0000755000175000017500000000000014556031647013567 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v033/in.json0000644000175000017500000000007414556031647015071 0ustar tinatina[ "", "\n", "\n\n", "a\n", "a\n\n", "a\n\n\n" ] YAML-PP-v0.38.0/t/valid/v033/===0000644000175000017500000000006014556031647014054 0ustar tinatinaFolded scalars with keeping trailing linebreaks YAML-PP-v0.38.0/t/valid/v033/test.event0000644000175000017500000000014514556031647015611 0ustar tinatina+STR +DOC --- +SEQ =VAL > =VAL >\n =VAL >\n\n =VAL >a\n =VAL >a\n\n =VAL >a\n\n\n -SEQ -DOC ... -STR YAML-PP-v0.38.0/t/valid/v033/in.yaml0000644000175000017500000000006514556031647015062 0ustar tinatina--- - >+ - >+ - >+ - >+ a - >+ a - >+ a ... YAML-PP-v0.38.0/t/valid/v032/0000755000175000017500000000000014556031647013566 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v032/===0000644000175000017500000000003114556031647014051 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/t/valid/v032/test.event0000644000175000017500000000004714556031647015611 0ustar tinatina+STR +DOC +SEQ =VAL :-1 -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v032/in.yaml0000644000175000017500000000000514556031647015053 0ustar tinatina- -1 YAML-PP-v0.38.0/t/valid/v032/out.yaml0000644000175000017500000000000514556031647015254 0ustar tinatina- -1 YAML-PP-v0.38.0/t/valid/v027/0000755000175000017500000000000014556031647013572 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v027/===0000644000175000017500000000003714556031647014063 0ustar tinatinaTrailing tabs in double quotes YAML-PP-v0.38.0/t/valid/v027/test.event0000644000175000017500000000024414556031647015614 0ustar tinatina+STR +DOC +SEQ =VAL "1 trailing\t tab =VAL "2 trailing\t tab =VAL "3 trailing\t tab =VAL "4 trailing\t tab =VAL "5 trailing tab =VAL "6 trailing tab -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v027/in.yaml0000644000175000017500000000023214556031647015061 0ustar tinatina- "1 trailing\t tab" - "2 trailing\t tab" - "3 trailing\ tab" - "4 trailing\ tab" - "5 trailing tab" - "6 trailing tab" YAML-PP-v0.38.0/t/valid/v027/out.yaml0000644000175000017500000000017214556031647015265 0ustar tinatina- "1 trailing\t tab" - "2 trailing\t tab" - "3 trailing\t tab" - "4 trailing\t tab" - "5 trailing tab" - "6 trailing tab" YAML-PP-v0.38.0/t/valid/v022/0000755000175000017500000000000014556031647013565 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v022/in.json0000644000175000017500000000064114556031647015067 0ustar tinatina[ [ "", "second value" ], [ "" ], [ "" ], [ "" ], [ "" ], [ null, "second value" ], [ null ], [ null ], [ null ], [ null ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ] ] YAML-PP-v0.38.0/t/valid/v022/===0000644000175000017500000000003314556031647014052 0ustar tinatinaEmpty flow sequence values YAML-PP-v0.38.0/t/valid/v022/test.event0000644000175000017500000000153514556031647015613 0ustar tinatina+STR +DOC +SEQ +SEQ [] =VAL : =VAL :second value -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL &anchor1 : =VAL :second value -SEQ +SEQ [] =VAL &anchor2 : -SEQ +SEQ [] =VAL &anchor3 : -SEQ +SEQ [] =VAL &anchor4 : -SEQ +SEQ [] =VAL &anchor5 : -SEQ +SEQ [] =VAL &anchor6 : -SEQ +SEQ [] =VAL &anchor7 : -SEQ +SEQ [] =VAL &anchor8 : -SEQ +SEQ [] =VAL &anchor9 : -SEQ +SEQ [] =VAL &anchor10 : -SEQ +SEQ [] =VAL &anchor11 : -SEQ +SEQ [] =VAL &anchor12 : -SEQ +SEQ [] =VAL &anchor13 : -SEQ -SEQ -DOC -STR YAML-PP-v0.38.0/t/valid/v022/in.yaml0000644000175000017500000000047114556031647015061 0ustar tinatina- [!!str,second value] - [!!str,] - [!!str ,] - [!!str] - [!!str ] - [&anchor1,second value] - [&anchor2,] - [&anchor3 ,] - [&anchor4] - [&anchor5 ] - [!!str &anchor6,] - [!!str &anchor7 ,] - [!!str &anchor8] - [!!str &anchor9 ] - [&anchor10 !!str,] - [&anchor11 !!str ,] - [&anchor12 !!str] - [&anchor13 !!str ] YAML-PP-v0.38.0/t/valid/v022/out.yaml0000644000175000017500000000046114556031647015261 0ustar tinatina- - !!str - second value - - !!str - - !!str - - !!str - - !!str - - &anchor1 - second value - - &anchor2 - - &anchor3 - - &anchor4 - - &anchor5 - - &anchor6 !!str - - &anchor7 !!str - - &anchor8 !!str - - &anchor9 !!str - - &anchor10 !!str - - &anchor11 !!str - - &anchor12 !!str - - &anchor13 !!str YAML-PP-v0.38.0/t/valid/v014/0000755000175000017500000000000014556031647013566 5ustar tinatinaYAML-PP-v0.38.0/t/valid/v014/===0000644000175000017500000000003314556031647014053 0ustar tinatinaAllowed Characters in Tags YAML-PP-v0.38.0/t/valid/v014/test.event0000644000175000017500000000024714556031647015613 0ustar tinatina+STR +DOC --- =VAL :scalar -DOC ... +DOC --- =VAL :scalar -DOC +DOC --- =VAL :scalar -DOC -STR YAML-PP-v0.38.0/t/valid/v014/in.yaml0000644000175000017500000000022114556031647015053 0ustar tinatina%TAG !123ab-! tag:example.com,2000:app/ --- !123ab-!foo scalar ... %TAG !pre! !prefix-%2F[]*@ --- !pre!name scalar --- !foo%2f()*@a=b&c=d scalar YAML-PP-v0.38.0/t/57.dup-keys.t0000644000175000017500000000125714556031647014162 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use Data::Dumper; use YAML::PP; my $allow = YAML::PP->new( duplicate_keys => 1, ); my $forbid = YAML::PP->new( duplicate_keys => 0, ); my $default = YAML::PP->new; my $yaml = <<'EOM'; a: 1 b: 2 a: 3 EOM my $data = $allow->load_string($yaml); my $expected = { a => 3, b => 2, }; is_deeply($data, $expected, "Allowed duplicate keys"); $data = eval { $forbid->load_string($yaml) }; my $err = $@; like $err, qr{Duplicate key 'a'}, "Forbidden duplicate keys"; $data = eval { $default->load_string($yaml) }; $err = $@; like $err, qr{Duplicate key 'a'}, "Forbidden duplicate keys by default"; done_testing; YAML-PP-v0.38.0/t/21.emit.t0000644000175000017500000000351114556031647013341 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use Data::Dumper; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use Encode; $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 4ABK 87E4 8UDB 9MMW CN3R CT4Q FRK4 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ F6MC NB6Z CFD4 M2N8:01 UKK6:01 /; # emitter push @skip, qw/ /; # quoting push @skip, qw/ 36F6 6CA3 9YRD HS5T EX5H NAT4 L24T:00 L24T:01 DK95:00 DK95:02 DK95:03 DK95:04 DK95:05 DK95:07 DK95:08 /; # tags push @skip, qw/ v014 /; # block scalar push @skip, qw/ 4QFQ R4YG v033 /; # test push @skip, qw/ XLQ9 K54U PUW8 MJS9 /; # TODO fix testsuite # 4QFQ # unicode push @skip, qw/ H3Z8 /; push @skip, qw/ /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, ); my %skip_yaml_equal = ( 'X38W' => 1, 'G4RS' => 1, '6CK3' => 1, '5TYM' => 1, '565N' => 1, # fix testsuite 'K858' => 1, '4MUZ' => 1, '8KB6' => 1, '9BXH' => 1, '6ZKB' => 1, '6SLA' => 1, '9DXL' => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase); if ($skip_yaml_equal{ $id }) { delete $result->{emit_yaml}; } $testsuite->compare_emit_yaml($testcase, $result); } done_testing; exit; YAML-PP-v0.38.0/t/31.schema.t0000644000175000017500000001276514556031647013657 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use B (); use Data::Dumper; use Scalar::Util qw/ blessed /; use YAML::PP; my $jsonpp = eval { require JSON::PP }; my $schema_file = "$Bin/../ext/yaml-test-schema/yaml-schema.yaml"; my $strings_file = "$Bin/../examples/strings.yaml"; my $schema_data = do { YAML::PP->new->load_file($schema_file) }; my $strings_data = do { YAML::PP->new->load_file($strings_file) }; $schema_data->{'#empty'}->{json_empty_null} = ['null', 'null()', "null"]; $schema_data->{'!!str #empty'}->{json_empty_null} = ['str', '', "''"]; %$schema_data = ( %$schema_data, %$strings_data, ); my $boolean = $jsonpp ? 'JSON::PP' : 'perl'; my %args = ( boolean => $boolean, header => 0, ); my $failsafe = YAML::PP->new( %args, schema => [qw/ Failsafe /] ); my $json = YAML::PP->new( %args, schema => [qw/ JSON /] ); my $json_empty_null = YAML::PP->new( %args, schema => [qw/ JSON empty=null /] ); my $core = YAML::PP->new( %args, schema => [qw/ Core /] ); my $yaml11 = YAML::PP->new( %args, schema => [qw/ YAML1_1 /] ); subtest 'invalid-option' => sub { eval { YAML::PP->new( boolean => $boolean, schema => [qw/ JSON empty=lala /] ); }; my $err = $@; like($err, qr{Invalid option}, 'Invalid option is fatal'); }; my %loaders = ( failsafe => $failsafe, json => $json, core => $core, yaml11 => $yaml11, json_empty_null => $json_empty_null, ); my $inf = 0 + 'inf'; my $inf_negative = 0 - 'inf'; my $nan = 0 + 'nan'; diag("inf: $inf -inf: $inf_negative nan: $nan"); my $inf_broken = $inf eq '0'; $inf_broken and diag("inf/nan seem broken, skipping those tests"); my %check = ( null => sub { not defined $_[0] }, inf => sub { my ($float) = @_; return $float eq $inf; }, 'inf-neg' => sub { my ($float) = @_; return $float eq $inf_negative; }, nan => sub { my ($float) = @_; return $float eq $nan; }, ); if ($jsonpp) { %check = ( %check, true => sub { blessed($_[0]) eq 'JSON::PP::Boolean' and $_[0] }, false => sub { blessed($_[0]) eq 'JSON::PP::Boolean' and not $_[0] }, ); } my $i = 0; for my $input (sort keys %$schema_data) { my $test_data = $schema_data->{ $input }; # note("Input: $input"); for my $schema_names (sort keys %$test_data) { note("[$input] Schemas: " . $schema_names); my @names = split m/ *, */, $schema_names; my $test = $test_data->{ $schema_names }; for my $name (@names) { my $yp = $loaders{ $name }; my %def; @def{ qw/ type data dump /} = @$test; next if ($def{type} eq 'bool' and not $jsonpp); my $func; my $data = $yp->load_string('--- ' . $input); my $data_orig = $data; # avoid stringifying original data my $flags = B::svref_2object(\$data)->FLAGS; my $is_str = $flags & B::SVp_POK; my $is_int = $flags & B::SVp_IOK; my $is_float = $flags & B::SVp_NOK; my $type = $def{type}; my $label = sprintf "(%s) type %s: load(%s)", $name, $def{type}, $input; if ($def{data} =~ m/^([\w-]+)\(\)$/) { my $func_name = $1; $func = $check{ $func_name }; my $ok = $func->($data); ok($ok, "$label - check $func_name() ok"); } if ($type eq 'str') { ok($is_str, "$label is str"); ok(! $is_int, "$label is not int"); ok(! $is_float, "$label is not float"); unless ($func) { cmp_ok($def{data}, 'eq', $data, "$label eq '$def{data}'"); } } elsif ($type eq 'int') { ok($is_int, "$label is int"); ok(!$is_str, "$label is not str"); unless ($func) { cmp_ok($data, '==', $def{data}, "$label == '$def{data}'"); } } elsif ($type eq 'float' or $type eq 'inf' or $type eq 'nan') { unless ($inf_broken) { ok($is_float, "$label is float"); ok(!$is_str, "$label is not str"); } unless ($func) { cmp_ok(sprintf("%.2f", $data), '==', $def{data}, "$label == '$def{data}'"); } } elsif ($type eq 'bool' or $type eq 'null') { } else { ok(0, "unknown type $type"); } unless ($inf_broken) { my $yaml_dump = $yp->dump_string($data_orig); $yaml_dump =~ s/\n\z//; cmp_ok($yaml_dump, 'eq', $def{dump}, "$label-dump as expected"); } } } # last if ++$i > 10; } subtest int_string => sub { my $x = "25.1"; my $y = $x + 0; for my $name (qw/ json core yaml11 /) { my $yp = $loaders{ $name }; my $yaml = $yp->dump_string($x); chomp $yaml; cmp_ok($yaml, 'eq', '25.1', "$name: IV and PV"); } }; subtest float_string => sub { my $x = 19; { no warnings 'numeric'; $x .= "x"; my $y = $x + 0; }; for my $name (qw/ json core yaml11 /) { my $yp = $loaders{ $name }; my $yaml = $yp->dump_string($x); chomp $yaml; cmp_ok($yaml, 'eq', '19x', "$name: NV and PV"); } }; done_testing; YAML-PP-v0.38.0/t/42.tokens.t0000644000175000017500000000153514556031647013715 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use YAML::PP; use YAML::PP::Parser; use Data::Dumper; $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; my @skip = qw/ 4FJ6 87E4 8UDB 9MMW CN3R CT4Q L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ CFD4 M2N8:01 UKK6:01 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); sub test { my ($testsuite, $testcase) = @_; my $result = $testsuite->parse_tokens($testcase); $testsuite->compare_tokens($testcase, $result); return $result; } done_testing; YAML-PP-v0.38.0/t/20.dump.t0000644000175000017500000000221514556031647013347 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use Data::Dumper; use YAML::PP; use Encode; use File::Basename qw/ dirname basename /; my $json_pp = eval "use JSON::PP; 1"; unless ($json_pp) { plan skip_all => "Need JSON::PP for testing booleans"; exit; } $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 87E4 8UDB 9MMW CN3R CT4Q L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ CFD4 M2N8:01 UKK6:01 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, out_yaml => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); sub test { my ($testsuite, $testcase) = @_; my $result = $testsuite->dump_yaml($testcase); $testsuite->compare_dump_yaml($testcase, $result); } done_testing; $testsuite->print_stats( count => [qw/ OK DIFF ERROR TODO SKIP /], ids => [qw/ ERROR DIFF /], ); YAML-PP-v0.38.0/t/41.custom.schema.t0000644000175000017500000000104214556031647015153 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use YAML::PP; use YAML::PP::Common qw/ :PRESERVE /; use FindBin '$Bin'; use lib "$Bin/lib"; my $yp = YAML::PP->new( schema => [qw/ :MySchema /], preserve => PRESERVE_ORDER, ); my $yaml = <<'EOM'; --- o1: !Class1 z: 1 a: 2 y: 3 b: 4 EOM my $data = $yp->load_string($yaml); $yaml = $yp->dump_string($data); cmp_ok($yaml, 'eq', <new( schema => [qw/ JSON Merge /], ); subtest merge => sub { my $yaml = <<'EOM'; --- - &CENTER { x: 1, y: 2 } - &LEFT { x: 0, y: 2 } - &BIG { r: 10 } - &SMALL { r: 1 } # All the following maps are equal: - # Explicit keys x: 1 y: 2 r: 10 label: center/big - # Merge one map << : *CENTER r: 10 label: center/big - # Merge multiple maps << : [ *CENTER, *BIG ] label: center/big - # Override << : [ *BIG, *LEFT, *SMALL ] x: 1 label: center/big EOM my $data = $yp->load_string($yaml); my $expected = { label => 'center/big', x => 1, y => 2, r => 10, }; is_deeply($data->[4], $expected, "Merge: Explicit keys"); is_deeply($data->[5], $expected, "Merge: Merge one map"); is_deeply($data->[6], $expected, "Merge: Merge multiple maps"); is_deeply($data->[7], $expected, "Merge: Override"); }; subtest errors => sub { my $error1 = <<'EOM'; --- scalar: &scalar test merge: <<: *scalar EOM my $error2 = <<'EOM'; --- scalar: &scalar test merge: <<: [*scalar] EOM my $error3 = <<'EOM'; --- list: &list [23] merge: <<: [*list] EOM eval { my $data = $yp->load_string($error1); }; my $error = $@; cmp_ok($error, '=~', qr{Expected hash}, "Merge: invalid scalar"); eval { my $data = $yp->load_string($error2); }; $error = $@; cmp_ok($error, '=~', qr{Expected hash}, "Merge: invalid scalar"); eval { my $data = $yp->load_string($error3); }; $error = $@; cmp_ok($error, '=~', qr{Expected hash}, "Merge: invalid list"); }; done_testing; YAML-PP-v0.38.0/t/40.representers.t0000644000175000017500000000547414556031647015137 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use YAML::PP; { my $parser = YAML::PP->new; $parser->schema->add_representer( class_equals => 'Class1', code => sub { my ($representer, $node) = @_; $node->{ tag } = '!Class1', $node->{ data } = \%{ $node->{ value } }; return 1; } ); my $data = { o1 => (bless {}, 'Class1'), o2 => (bless {}, 'Class2'), }; my $yaml = $parser->dump_string($data); like($yaml, qr/o1: !Class1/, 'o1s\' class has a representer that converts it to a tag'); like($yaml, qr/o2: \{\}/, 'o2s\' class doesn\'t have a representer. It gets converted to an empty hash'); } { my $parser = YAML::PP->new; $parser->schema->add_representer( class_matches => 1, code => sub { my ($representer, $node) = @_; if ($node->{ value }->isa('Class1')) { $node->{ tag } = '!Class1'; $node->{ data } = \%{ $node->{ value } }; return 1; } return 0; } ); $parser->schema->add_representer( class_matches => 1, code => sub { my ($representer, $node) = @_; $node->{ tag } = '!Class2'; $node->{ data } = \%{ $node->{ value } }; return 1; } ); my $data = { o1 => (bless {}, 'Class1'), o2 => (bless {}, 'Class2'), }; my $yaml = $parser->dump_string($data); # o1 serializes to Class1 because the first catchall says it's done like($yaml, qr/o1: !Class1/, 'o1s\' gets caught only by the first class_matches, since it sets work as done'); like($yaml, qr/o2: !Class2/, 'o2s\' gets caught by the second class_matches'); } # declare some packages inline for the next test package BaseClass; package Class4; our @ISA = ('BaseClass'); # return to the tests package package main; { my $parser = YAML::PP->new; $parser->schema->add_representer( class_isa => 'Class3', code => sub { my ($representer, $node) = @_; $node->{ tag } = '!Class3'; $node->{ data } = \%{ $node->{ value } }; return 1; } ); $parser->schema->add_representer( class_isa => 'BaseClass', code => sub { my ($representer, $node) = @_; $node->{ tag } = '!BaseClass'; $node->{ data } = \%{ $node->{ value } }; return 1; } ); my $data = { o3 => (bless {}, 'Class3'), o4 => (bless {}, 'Class4'), }; my $yaml = $parser->dump_string($data); like($yaml, qr/o3: !Class3/, 'Class3 gets caught by its class name'); like($yaml, qr/o4: !BaseClass/, 'Class4 gets caught because its inherited from BaseClass'); } done_testing; YAML-PP-v0.38.0/t/invalid/0000755000175000017500000000000014556031647013423 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i032/0000755000175000017500000000000014556031647014100 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i032/===0000644000175000017500000000004314556031647014366 0ustar tinatinaInvalid characters in Verbatim Tag YAML-PP-v0.38.0/t/invalid/i032/test.event0000644000175000017500000000001214556031647016113 0ustar tinatina+STR +DOC YAML-PP-v0.38.0/t/invalid/i032/in.yaml0000644000175000017500000000004214556031647015366 0ustar tinatina! > scalar YAML-PP-v0.38.0/t/invalid/i037/0000755000175000017500000000000014556031647014105 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i037/===0000644000175000017500000000003114556031647014370 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/t/invalid/i037/test.event0000644000175000017500000000001214556031647016120 0ustar tinatina+STR +DOC YAML-PP-v0.38.0/t/invalid/i037/in.yaml0000644000175000017500000000000414556031647015371 0ustar tinatina- - YAML-PP-v0.38.0/t/invalid/i038/0000755000175000017500000000000014556031647014106 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i038/===0000644000175000017500000000003114556031647014371 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/t/invalid/i038/test.event0000644000175000017500000000001214556031647016121 0ustar tinatina+STR +DOC YAML-PP-v0.38.0/t/invalid/i038/in.yaml0000644000175000017500000000000514556031647015373 0ustar tinatina- - YAML-PP-v0.38.0/t/invalid/i035/0000755000175000017500000000000014556031647014103 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i035/===0000644000175000017500000000004014556031647014366 0ustar tinatinaLiteral modifers greater than 9 YAML-PP-v0.38.0/t/invalid/i035/test.event0000644000175000017500000000001614556031647016122 0ustar tinatina+STR +DOC --- YAML-PP-v0.38.0/t/invalid/i035/in.yaml0000644000175000017500000000001014556031647015364 0ustar tinatina--- |10 YAML-PP-v0.38.0/t/invalid/i033/0000755000175000017500000000000014556031647014101 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i033/===0000644000175000017500000000005314556031647014370 0ustar tinatinaRepeated question mark in flow mapping key YAML-PP-v0.38.0/t/invalid/i033/test.event0000644000175000017500000000002614556031647016121 0ustar tinatina+STR +DOC --- +MAP {} YAML-PP-v0.38.0/t/invalid/i033/in.yaml0000644000175000017500000000003314556031647015367 0ustar tinatina--- { ? ? question: mark } YAML-PP-v0.38.0/t/invalid/i034/0000755000175000017500000000000014556031647014102 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i034/===0000644000175000017500000000010114556031647014363 0ustar tinatinaInvalid block mapping key on same line as previous flow sequence YAML-PP-v0.38.0/t/invalid/i034/test.event0000644000175000017500000000006014556031647016120 0ustar tinatina+STR +DOC --- +MAP =VAL :x +SEQ [] =VAL :y -SEQ YAML-PP-v0.38.0/t/invalid/i034/in.yaml0000644000175000017500000000002614556031647015372 0ustar tinatina--- x: [ y ]in: valid YAML-PP-v0.38.0/t/invalid/i036/0000755000175000017500000000000014556031647014104 5ustar tinatinaYAML-PP-v0.38.0/t/invalid/i036/===0000644000175000017500000000003114556031647014367 0ustar tinatinaTabs in various contexts YAML-PP-v0.38.0/t/invalid/i036/test.event0000644000175000017500000000003114556031647016120 0ustar tinatina+STR +DOC +MAP =VAL :foo YAML-PP-v0.38.0/t/invalid/i036/in.yaml0000644000175000017500000000002014556031647015366 0ustar tinatinafoo: | bar: 1 YAML-PP-v0.38.0/t/43.indent.t0000644000175000017500000000626514556031647013701 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use YAML::PP; use Data::Dumper; my $in = <<'EOM'; --- a: b: c: d list: - 1 - x: 2 y: 3 nested1: - - a - b nested2: - - a - b EOM my $out_expected1 = <<'EOM'; --- a: b: c: d list: - 1 - x: 2 y: 3 nested1: - - a - b nested2: - - a - b EOM my $out_expected4 = <<'EOM'; --- a: b: c: d list: - 1 - x: 2 y: 3 nested1: - - a - b nested2: - - a - b EOM my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($parser, $name, $info) = @_; push @events, $info; }, ); $parser->parse_string( $in ); my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new( indent => 1); $emitter->set_writer($writer); $emitter->init; for my $event (@events) { my $type = $event->{name}; $emitter->$type($event); } my $out1 = $emitter->writer->output; cmp_ok($out1, 'eq', $out_expected1, "Emitting with indent 1"); $emitter->set_indent(4); $emitter->init; for my $event (@events) { my $type = $event->{name}; $emitter->$type($event); } my $out4 = $emitter->writer->output; cmp_ok($out4, 'eq', $out_expected4, "Emitting with indent 4"); $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 4ABK 87E4 8UDB 9MMW CN3R CT4Q FRK4 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ F6MC NB6Z CFD4 M2N8:01 UKK6:01 /; # emitter push @skip, qw/ /; # quoting push @skip, qw/ 36F6 6CA3 9YRD HS5T EX5H NAT4 L24T:00 L24T:01 DK95:00 DK95:02 DK95:03 DK95:04 DK95:05 DK95:07 DK95:08 /; # tags push @skip, qw/ v014 /; # block scalar push @skip, qw/ 4QFQ 6VJK 7T8X R4YG v033 /; # test push @skip, qw/ XLQ9 K54U PUW8 3MYT MJS9 /; # TODO fix testsuite # 4QFQ # unicode push @skip, qw/ H3Z8 /; push @skip, qw/ X38W /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, ); my %skip_yaml_equal = ( 'X38W' => 1, 'G4RS' => 1, '6CK3' => 1, '5TYM' => 1, '565N' => 1, # fix testsuite 'K858' => 1, '4MUZ' => 1, '8KB6' => 1, '9BXH' => 1, '6ZKB' => 1, '6SLA' => 1, '9DXL' => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); my $indent = 1; subtest "indent-$indent" => sub { $testsuite->run_testcases( code => sub { test(@_, $indent) }, ); }; subtest "indent-$indent" => sub { $indent = 3; $testsuite->run_testcases( code => sub { test(@_, $indent) }, ); }; subtest "indent-$indent" => sub { $indent = 4; $testsuite->run_testcases( code => sub { test(@_, $indent) }, ); }; $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase, $indent) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase, { indent => $indent }); delete $result->{emit_yaml}; $testsuite->compare_emit_yaml($testcase, $result); } done_testing; YAML-PP-v0.38.0/t/55.flow.t0000644000175000017500000000227114556031647013363 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use YAML::PP::Test; use Data::Dumper; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use Encode; $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 4ABK 87E4 8UDB 9MMW CN3R CT4Q FRK4 L9U5 LQZ7 LX3P QF4Y 6BFJ CFD4 Q9WF v022 /; push @skip, qw/ v014 v033 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, tag => 'flow', ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase, { flow => 'keep' }); $testsuite->compare_emit_yaml($testcase, $result); } done_testing; exit; YAML-PP-v0.38.0/t/34.emit-scalar-styles.t0000644000175000017500000000355114556031647016135 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use Data::Dumper; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use YAML::PP; use YAML::PP::Common qw/ :STYLES /; my @input = ( "", " ", "\n", "\na", "a", "a\n", " a", "a ", " a ", "\na\n", "\n a", "\n a\n", "\na \n", "a \n", "\n a \n", "\n\n a \n\n", "\n \n a \n\n", "\n \n a \n \n", " \n a \n ", " \n\n a \n\n ", ); my $emitter = YAML::PP::Emitter->new(); $emitter->set_writer(YAML::PP::Writer->new); my $yp = YAML::PP->new( schema => ['Failsafe'] ); #my @styles = qw/ : " ' | > /; my @styles = ( YAML_PLAIN_SCALAR_STYLE, YAML_DOUBLE_QUOTED_SCALAR_STYLE, YAML_SINGLE_QUOTED_SCALAR_STYLE, YAML_LITERAL_SCALAR_STYLE, YAML_FOLDED_SCALAR_STYLE ); for my $style (@styles) { subtest "style $style" => sub { for my $input (@input) { $emitter->init; local $Data::Dumper::Useqq = 1; my $label = Data::Dumper->Dump([$input], ['input']); chomp $label; $emitter->stream_start_event; $emitter->document_start_event({ implicit => 1 }); $emitter->sequence_start_event; $emitter->scalar_event({ value => $input, style => $style }); $emitter->sequence_end_event; $emitter->document_end_event({ implicit => 0 }); $emitter->stream_end_event; my $yaml = $emitter->writer->output; $emitter->finish; my $data = $yp->load_string($yaml); cmp_ok($data->[0], 'eq', $input, "style $style - $label") or do { diag ">>$yaml<<\n"; explain $data; diag(Data::Dumper->Dump([$data], ['data'])); diag(Data::Dumper->Dump([$yaml], ['yaml'])); }; } }; } done_testing; YAML-PP-v0.38.0/t/38.schema-ixhash.t0000644000175000017500000000135114556031647015135 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; my $ixhash = eval { require Tie::IxHash }; unless ($ixhash) { plan skip_all => "Tie::IxHash not installed"; exit; } my $tests = require "$Bin/../examples/schema-ixhash.pm"; my $yp = YAML::PP->new( schema => [qw/ JSON Perl Tie::IxHash /], ); my @tests = sort keys %$tests; for my $name (@tests) { my $test = $tests->{ $name }; my ($code, $yaml) = @$test; my $data = eval $code; my $out = $yp->dump_string([$data, $data]); if (ref $yaml) { cmp_ok($out, '=~', $yaml, "$name: dump_string()"); } else { cmp_ok($out, 'eq', $yaml, "$name: dump_string()"); } } done_testing; YAML-PP-v0.38.0/t/44.writer.t0000644000175000017500000000155114556031647013726 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use YAML::PP; use Data::Dumper; my $in = <<'EOM'; --- a: b: c: d list: - 1 - 2 EOM my $out_expected = <<'EOM'; --- a: b: c: d list: - 1 - 2 EOM my $writer = MyWriter->new(\my $output); my $yp = YAML::PP->new( writer => $writer, ); my $data = $yp->load_string($in); $yp->dump($data); cmp_ok($output, 'eq', $out_expected, "Dumping with indent"); done_testing; package MyWriter; sub new { my ($class, $ref) = @_; die "No scalar reference given" unless $ref; $$ref = '' unless defined $$ref; bless { output => $ref }, $class; } sub write { my ($self, $line) = @_; ${ $self->{output} } .= $line; } sub init { ${ $_[0]->{output} } = ''; } sub finish { my ($self) = @_; } sub output { my ($self) = @_; return "dummy"; return ${ $self->{output} }; } YAML-PP-v0.38.0/t/51.directives.t0000644000175000017500000001363114556031647014553 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use YAML::PP; subtest 'emit-yaml-directive' => sub { my $yp = YAML::PP->new( version_directive => 1, header => 0, # this should be overruled by version_directive ); my $yp_footer = YAML::PP->new( version_directive => 1, footer => 1, yaml_version => '1.1', ); my @docs = ( { a => 1 }, [ b => 2 ], 'c3', ); my $yaml = $yp->dump_string(@docs); my $yaml_footer = $yp_footer->dump_string(@docs); my $exp = <<'EOM'; %YAML 1.2 --- a: 1 ... %YAML 1.2 --- - b - 2 ... %YAML 1.2 --- c3 EOM my $exp_footer = <<'EOM'; %YAML 1.1 --- a: 1 ... %YAML 1.1 --- - b - 2 ... %YAML 1.1 --- c3 ... EOM is($yaml, $exp, 'Emit version directive'); is($yaml_footer, $exp_footer, 'Emit version directive (footer=1)'); }; subtest 'yaml-version' => sub { my $yaml = <<'EOM'; %YAML 1.2 --- a: 1 --- b: 2 ... %YAML 1.1 --- c: 3 --- b: 4 EOM my @events; my $receiver = sub { my ($p, $name, $event) = @_; if ($event->{name} eq 'document_start_event') { push @events, $event; } }; my $parser = YAML::PP::Parser->new( receiver => $receiver, ); my $parser_1_1 = YAML::PP::Parser->new( receiver => $receiver, default_yaml_version => '1.1', ); $parser->parse_string($yaml); is($events[0]->{version_directive}->{major}, '1', 'YAML 1.2 detected'); is($events[0]->{version_directive}->{minor}, '2', 'YAML 1.2 detected'); ok(! exists $events[1]->{version_directive}, 'No version directive'); is($events[2]->{version_directive}->{major}, '1', 'YAML 1.1 detected'); is($events[2]->{version_directive}->{minor}, '1', 'YAML 1.1 detected'); @events = (); $receiver = sub { my ($p, $name, $event) = @_; if ($event->{name} eq 'scalar_event') { push @events, $event; } }; my $parser_1_2 = YAML::PP::Parser->new( receiver => $receiver, ); $parser_1_1 = YAML::PP::Parser->new( receiver => $receiver, default_yaml_version => '1.1', ); $yaml = <<'EOM'; %TAG !a! !long- --- - !a!foo value --- - !a!bar value EOM eval { $parser_1_2->parse_string($yaml); }; my $err = $@; like($err, qr{undefined tag handle}, 'No global tags in YAML 1.2'); @events = (); $parser_1_1->parse_string($yaml); is($events[0]->{tag}, '!long-foo', 'First tag ok'); is($events[1]->{tag}, '!long-bar', 'Second tag ok'); }; subtest 'version-schema' => sub { my $yaml = <<'EOM'; what: [ yes, true ] ... %YAML 1.1 --- bool: yes ... %YAML 1.2 --- bool: true string: yes EOM my $out_12_11 = <<'EOM'; %YAML 1.2 --- what: - yes - 1 ... %YAML 1.2 --- bool: 1 ... %YAML 1.2 --- bool: 1 string: yes EOM my $out_11_12 = <<'EOM'; %YAML 1.1 --- what: - 1 - 1 ... %YAML 1.1 --- bool: 1 ... %YAML 1.1 --- bool: 1 string: 'yes' EOM my $out_12 = <<'EOM'; %YAML 1.2 --- what: - yes - 1 ... %YAML 1.2 --- bool: yes ... %YAML 1.2 --- bool: 1 string: yes EOM my $out_11 = <<'EOM'; %YAML 1.1 --- what: - 1 - 1 ... %YAML 1.1 --- bool: 1 ... %YAML 1.1 --- bool: 1 string: 1 EOM my %args= ( schema => [qw/ + /], boolean => '', version_directive => 1, ); my $yp = YAML::PP->new( %args, yaml_version => ['1.2', '1.1'], ); my @docs = $yp->load_string($yaml); is($docs[0]->{what}->[0], 'yes', '[1.2,1.1] Doc 1 default string'); is($docs[0]->{what}->[1], 1, '[1.2,1.1] Doc 1 YAML 1.2 bool'); is($docs[1]->{bool}, 1, '[1.2,1.1] Doc 2 YAML 1.1 bool'); is($docs[2]->{bool}, 1, '[1.2,1.1] Doc 2 YAML 1.2 bool'); is($docs[2]->{string}, 'yes', '[1.2,1.1] Doc 3 YAML 1.2 string'); my $out = $yp->dump_string(@docs); is($out, $out_12_11, '[1.2,1.1] Dump ok'); $yp = YAML::PP->new( %args, yaml_version => ['1.1', '1.2'], ); @docs = $yp->load_string($yaml); is($docs[0]->{what}->[0], 1, '[1.1,1.2] Doc 1 default bool'); is($docs[0]->{what}->[1], 1, '[1.1,1.2] Doc 1 YAML 1.1 bool'); is($docs[1]->{bool}, 1, '[1.1,1.2] Doc 2 YAML 1.1 bool'); is($docs[2]->{bool}, 1, '[1.1,1.2] Doc 2 YAML 1.2 bool'); is($docs[2]->{string}, 'yes', '[1.1,1.2] Doc 3 YAML 1.2 string'); $out = $yp->dump_string(@docs); is($out, $out_11_12, '[1.1,1.2] Dump ok'); $yp = YAML::PP->new( %args, yaml_version => ['1.2'], ); @docs = $yp->load_string($yaml); is($docs[0]->{what}->[0], 'yes', '[1.2] Doc 1 default string'); is($docs[0]->{what}->[1], 1, '[1.2] Doc 1 YAML 1.1 bool'); is($docs[1]->{bool}, 'yes', '[1.2] Doc 2 YAML 1.1 string'); is($docs[2]->{bool}, 1, '[1.2] Doc 2 YAML 1.2 bool'); is($docs[2]->{string}, 'yes', '[1.2] Doc 3 YAML 1.2 string'); $out = $yp->dump_string(@docs); is($out, $out_12, '[1.2] Dump ok'); $yp = YAML::PP->new( %args, yaml_version => ['1.1'], ); @docs = $yp->load_string($yaml); is($docs[0]->{what}->[0], 1, '[1.1] Doc 1 default bool'); is($docs[0]->{what}->[1], 1, '[1.1] Doc 1 YAML 1.1 bool'); is($docs[1]->{bool}, 1, '[1.1] Doc 2 YAML 1.1 bool'); is($docs[2]->{bool}, 1, '[1.1] Doc 2 YAML 1.2 bool'); is($docs[2]->{string}, 1, '[1.1] Doc 3 YAML 1.2 bool'); $out = $yp->dump_string(@docs); is($out, $out_11, '[1.1] Dump ok'); }; subtest 'yaml-and-tag' => sub { my $yaml = <<'EOM'; %YAML 1.2 %TAG !x! tag:foo- --- - !x!x EOM my @events; my $receiver = sub { my ($p, $name, $event) = @_; if ($event->{name} eq 'scalar_event') { push @events, $event; } }; my $parser = YAML::PP::Parser->new( receiver => $receiver, ); $parser->parse_string($yaml); is($events[0]->{tag}, 'tag:foo-x', '%YAML and %TAG directive'); }; done_testing; YAML-PP-v0.38.0/t/50.clone.t0000644000175000017500000000142514556031647013507 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; my $yp = YAML::PP->new( cyclic_refs => 'fatal', schema => ['Failsafe'], ); my $string = 'bar'; my $data = { foo => bless \$string, 'Foo' }; my $invalid = <<'EOM'; --- foo: @invalid EOM eval { $yp->load_string($invalid); }; ok($@, "load invalid YAML"); eval { $yp->dump_string($data); }; ok($@, "dump unsupported data"); my $clone = $yp->clone; my $valid = <<'EOM'; --- foo: bar EOM my $valid_data = { foo => 'bar' }; my $load = $clone->load_string($valid); is_deeply($load, $valid_data, "Second load ok"); my $dump = $clone->dump_string($load); my $exp_dump = <<'EOM'; --- foo: bar EOM cmp_ok($dump, 'eq', $exp_dump, "Second dump ok"); done_testing; YAML-PP-v0.38.0/t/data/0000755000175000017500000000000014556031647012706 5ustar tinatinaYAML-PP-v0.38.0/t/data/simple.yaml0000644000175000017500000000002214556031647015055 0ustar tinatina--- a: 1 --- b: 2 YAML-PP-v0.38.0/t/data/include/0000755000175000017500000000000014556031647014331 5ustar tinatinaYAML-PP-v0.38.0/t/data/include/include3.yaml0000644000175000017500000000001514556031647016717 0ustar tinatina--- include3 YAML-PP-v0.38.0/t/data/include/include2.yaml0000644000175000017500000000005014556031647016715 0ustar tinatina--- - include2 - !include include3.yaml YAML-PP-v0.38.0/t/data/include/circular2.yaml0000644000175000017500000000004614556031647017103 0ustar tinatina--- included: !include circular1.yaml YAML-PP-v0.38.0/t/data/include/include1.yaml0000644000175000017500000000001514556031647016715 0ustar tinatina--- include1 YAML-PP-v0.38.0/t/data/include/include.yaml0000644000175000017500000000007614556031647016643 0ustar tinatina--- - !include include1.yaml - !include include2.yaml - item3 YAML-PP-v0.38.0/t/data/include/circular1.yaml0000644000175000017500000000004614556031647017102 0ustar tinatina--- included: !include circular2.yaml YAML-PP-v0.38.0/t/17.load-complex-keys.t0000644000175000017500000000261014556031647015744 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP::Loader; my $yppl = YAML::PP::Loader->new; my $yaml = <<'EOM'; complexmap: x: y ? a: b : c: d complexseq: X: Y ? - A - B : - C - D EOM my $nested_yaml = <<'EOM'; complex: ? ? a: b c: d : innervalue : outervalue EOM my $exp_complexmap = $yppl->constructor->stringify_complex({ a => 'b' }); my $exp_complexseq = $yppl->constructor->stringify_complex([qw/ A B /]); my $inner = $yppl->constructor->stringify_complex({ a => 'b', c => 'd' }); my $nested = $yppl->constructor->stringify_complex({ $inner => "innervalue" }); { my $data = $yppl->load_string($yaml); my $val1 = delete $data->{complexmap}->{x}; my $val2 = delete $data->{complexseq}->{X}; cmp_ok($val1, 'eq', 'y', "Normal key x"); cmp_ok($val2, 'eq', 'Y', "Normal key X"); my $complexmap = (keys %{ $data->{complexmap} })[0]; my $complexseq = (keys %{ $data->{complexseq} })[0]; cmp_ok($complexmap, 'eq', $exp_complexmap, "Complex map"); cmp_ok($complexseq, 'eq', $exp_complexseq, "Complex seq"); } { my $nested_data = $yppl->load_string($nested_yaml); my $data1 = $nested_data->{complex}; my $key = (keys %$data1)[0]; cmp_ok($key, 'eq', $nested, "Nested complex maps"); } done_testing; YAML-PP-v0.38.0/t/00.compile.t0000644000175000017500000000706014556031647014033 0ustar tinatinause 5.006; use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058 use Test::More; plan tests => 33 + ($ENV{AUTHOR_TESTING} ? 1 : 0); my @module_files = ( 'YAML/PP.pm', 'YAML/PP/Common.pm', 'YAML/PP/Constructor.pm', 'YAML/PP/Dumper.pm', 'YAML/PP/Emitter.pm', 'YAML/PP/Exception.pm', 'YAML/PP/Grammar.pm', 'YAML/PP/Highlight.pm', 'YAML/PP/Lexer.pm', 'YAML/PP/Loader.pm', 'YAML/PP/Parser.pm', 'YAML/PP/Perl.pm', 'YAML/PP/Reader.pm', 'YAML/PP/Render.pm', 'YAML/PP/Representer.pm', 'YAML/PP/Schema.pm', 'YAML/PP/Schema/Binary.pm', 'YAML/PP/Schema/Core.pm', 'YAML/PP/Schema/Failsafe.pm', 'YAML/PP/Schema/Include.pm', 'YAML/PP/Schema/JSON.pm', 'YAML/PP/Schema/Merge.pm', 'YAML/PP/Schema/Perl.pm', 'YAML/PP/Schema/Tie/IxHash.pm', 'YAML/PP/Schema/YAML1_1.pm', 'YAML/PP/Type/MergeKey.pm', 'YAML/PP/Writer.pm', 'YAML/PP/Writer/File.pm' ); my @scripts = ( 'bin/yamlpp-events', 'bin/yamlpp-highlight', 'bin/yamlpp-load', 'bin/yamlpp-load-dump', 'bin/yamlpp-parse-emit' ); # no fake home requested my @switches = ( -d 'blib' ? '-Mblib' : '-Ilib', ); use File::Spec; use IPC::Open3; use IO::Handle; open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; my @warnings; for my $lib (@module_files) { # see L my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-e', "require q[$lib]")) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } foreach my $file (@scripts) { SKIP: { open my $fh, '<', $file or warn("Unable to open $file: $!"), next; my $line = <$fh>; close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/; @switches = (@switches, split(' ', $1)) if $1; close $fh and skip("$file uses -T; not testable with PERL5LIB", 1) if grep { $_ eq '-T' } @switches and $ENV{PERL5LIB}; my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-c', $file)) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-c', $file); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$file compiled ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; # in older perls, -c output is simply the file portion of the path being tested if (@_warnings = grep { !/\bsyntax OK$/ } grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings) { warn @_warnings; push @warnings, @_warnings; } } } is(scalar(@warnings), 0, 'no warnings found') or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING}; YAML-PP-v0.38.0/t/16.loader.t0000644000175000017500000000044414556031647013657 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP::Loader; eval { my $yppl = YAML::PP::Loader->new( boolean => 'bla' ); }; my $error = $@; cmp_ok($error, '=~', 'Unexpected arguments', "Unexpected arguments"); done_testing; YAML-PP-v0.38.0/t/37.schema-perl.t0000644000175000017500000002357014556031647014621 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use Scalar::Util (); use YAML::PP; use YAML::PP::Perl; my $test_deep; BEGIN { eval "use Test::Deep qw/ cmp_deeply /"; unless ($@) { $test_deep = 1; } } unless ($test_deep) { plan skip_all => "No Test::Deep available"; exit; } my $tests = require "$Bin/../examples/schema-perl.pm"; my $perl_no_objects = YAML::PP::Schema::Perl->new( classes => [], cyclic_refs => 'allow', ); my $perl_no_objects_loadcode = YAML::PP::Schema::Perl->new( classes => [], loadcode => 1, cyclic_refs => 'allow', ); my $yp_perl = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!perl /], cyclic_refs => 'allow', ); my $yp_perl_no_objects = YAML::PP::Perl->new( schema => [qw/ JSON /, $perl_no_objects], cyclic_refs => 'allow', ); my $yp_loadcode = YAML::PP->new( schema => [qw/ JSON Perl +loadcode /], cyclic_refs => 'allow', ); my $yp_loadcode_no_objects = YAML::PP->new( schema => [qw/ JSON /, $perl_no_objects_loadcode], cyclic_refs => 'allow', ); my $yp_perl_two = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!!perl /], cyclic_refs => 'allow', ); my $yp_loadcode_two = YAML::PP->new( schema => [qw/ JSON Perl tags=!!perl +loadcode /], cyclic_refs => 'allow', ); my $yp_loadcode_one_two = YAML::PP->new( schema => [qw/ JSON Perl tags=!perl+!!perl +loadcode /], cyclic_refs => 'allow', ); my $yp_loadcode_two_one = YAML::PP->new( schema => [qw/ JSON Perl tags=!!perl+!perl +loadcode /], cyclic_refs => 'allow', ); my $yp_perl_one_two = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!perl+!!perl /], cyclic_refs => 'allow', ); my $yp_perl_two_one = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!!perl+!perl /], cyclic_refs => 'allow', ); my $yp_no_dumpcode = YAML::PP::Perl->new( schema => [qw/ + Perl -dumpcode /], ); my @tests = sort keys %$tests; @tests = qw/ array array_blessed hash hash_blessed scalarref scalarref_blessed refref refref_blessed coderef coderef_blessed regexp regexp_blessed circular /; { my $test_qr = qr{TEST_STRINGYFY_REGEX}; my $test_qr_string = "$test_qr"; diag("TEST QR: $test_qr_string"); my $qr_prefix = $test_qr_string; $qr_prefix =~ s/TEST_STRINGYFY_REGEX.*//; diag("QR PREFIX: $qr_prefix"); } my %loaders_perl = ( one => $yp_perl, one_no_objects => $yp_perl_no_objects, two => $yp_perl_two, onetwo => $yp_perl_one_two, twoone => $yp_perl_two_one, ); my %loaders_perl_code = ( one => $yp_loadcode, one_no_objects => $yp_loadcode_no_objects, two => $yp_loadcode_two, onetwo => $yp_loadcode_one_two, twoone => $yp_loadcode_two_one, ); my @tagtypes = qw/ one two onetwo twoone /; for my $type (@tagtypes) { for my $name (@tests) { test_perl($type, $name); } } sub test_perl { my ($type, $name) = @_; my $test = $tests->{ $name }; my $yp = $yp_perl; $yp = $loaders_perl{ $type }; my ($code, $yaml, $options) = @$test; if ($type eq 'two' or $type eq 'twoone') { unless (ref $yaml) { $yaml =~ s/\!perl/!!perl/g; } } my $data = eval $code; my $docs = [ $data, $data ]; my $out; if ($options->{load_code}) { $yp = $loaders_perl_code{ $type }; } if ($options->{load_only}) { $out = $yaml; } else { $out = $yp->dump_string($docs); if (ref $yaml) { cmp_ok($out, '=~', $yaml, "tagtype=$type $name: dump_string()"); } else { cmp_ok($out, 'eq', $yaml, "tagtype=$type $name: dump_string()"); } note($out); } my $reload_docs = $yp->load_string($out); if (Scalar::Util::reftype($data) eq 'CODE') { my $sub = $reload_docs->[0]; if (ref $sub and Scalar::Util::reftype($sub) eq 'CODE') { my %args = ( x => 23, y => 42 ); my $result1 = $data->(%args); my $result2 = $sub->(%args); cmp_ok($result2, 'eq', $result1, "tagtype=$type Coderef returns the same as original"); } else { ok(0, "tagtype=$type Did not reload as coderef"); } } else { cmp_deeply($reload_docs, $docs, "tagtype=$type $name: Reloaded data equals original"); } } subtest dummy_code => sub { my $yaml = <<'EOM'; --- - !perl/code | { die "oops"; } - !perl/code:Foo | { die "oops"; } EOM my $data = $yp_perl->load_string($yaml); my $code1 = $data->[0]; my $code2 = $data->[1]; isa_ok($code2, 'Foo', "Code is blessed 'Foo'"); is($code1->(), undef, "Dummy code 1 returns undef"); is($code2->(), undef, "Dummy code 2 returns undef"); }; subtest invalid_code => sub { my $yaml = <<'EOM'; --- - !perl/code | die "oops"; EOM my $data = eval { $yp_loadcode->load_string($yaml) }; my $error = $@; cmp_ok($error, '=~', qr{Malformed code}, "Loading invalid code dies"); $yaml = <<'EOM'; --- - !perl/code:Foo | die "oops"; EOM $data = eval { $yp_loadcode->load_string($yaml) }; $error = $@; cmp_ok($error, '=~', qr{Malformed code}, "Loading invalid code dies"); $yaml = <<'EOM'; --- - !perl/code | { =====> invalid <===== } EOM $data = eval { $yp_loadcode->load_string($yaml) }; $error = $@; cmp_ok($error, '=~', qr{eval code}, "Loading invalid code dies"); $yaml = <<'EOM'; --- - !perl/code:Foo | { =====> invalid <===== } EOM $data = eval { $yp_loadcode->load_string($yaml) }; $error = $@; cmp_ok($error, '=~', qr{eval code}, "Loading invalid code dies"); }; subtest regex => sub { my $re = qr{foo}; my $yaml = <<"EOM"; --- - !perl/regexp $re - !perl/regexp:Foo $re EOM my $data = $yp_perl->load_string($yaml); my ($regex1, $regex2) = @$data; isa_ok($regex2, 'Foo', "Regex is blessed 'Foo'"); cmp_ok('foo', '=~', $regex1, "Loaded regex 1 matches"); cmp_ok('foo', '=~', $regex2, "Loaded regex 2 matches"); }; subtest simple_array => sub { my $yaml = <<"EOM"; --- !perl/array [a, b] EOM my $data = $yp_perl->load_string($yaml); cmp_deeply($data, [qw/ a b /], "Loaded simple array"); }; subtest invalid_ref => sub { my @yaml = ( ['!perl/ref', q#--- !perl/ref {==: Invalid}#], ['!perl/ref:Foo', q#--- !perl/ref:Foo {==: Invalid}#], ['!perl/scalar', q#--- !perl/scalar {==: Invalid}#], ['!perl/scalar:Foo', q#--- !perl/scalar:Foo {==: Invalid}#], ['!perl/ref', q#--- !perl/ref {}#], ['!perl/ref:Foo', q#--- !perl/ref:Foo {}#], ['!perl/scalar', q#--- !perl/scalar {}#], ['!perl/scalar:Foo', q#--- !perl/scalar:Foo {}#], ); for my $test (@yaml) { my ($type, $yaml) = @$test; my $data = eval { $yp_perl->load_string($yaml) }; my $error = $@; cmp_ok($error, '=~', qr{Unexpected data}, "Invalid $type dies"); } }; subtest array => sub { my $object = bless [qw/ a b /], "Foo"; my $yaml_one_two = $yp_perl_one_two->dump_string($object); my $yaml_one_two_expected = <<'EOM'; --- !perl/array:Foo - a - b EOM my $yaml_two_one_expected = <<'EOM'; --- !!perl/array:Foo - a - b EOM my $yaml_two_one = $yp_perl_two_one->dump_string($object); cmp_ok($yaml_one_two, 'eq', $yaml_one_two_expected, "Perl =!+!! dump"); cmp_ok($yaml_two_one, 'eq', $yaml_two_one_expected, "Perl =!!+! dump"); my $reload1 = $yp_perl_two_one->load_string($yaml_one_two); my $reload2 = $yp_perl_two_one->load_string($yaml_two_one); my $reload3 = $yp_perl_one_two->load_string($yaml_one_two); my $reload4 = $yp_perl_one_two->load_string($yaml_two_one); cmp_deeply($reload1, $object, "Reload 1"); cmp_deeply($reload2, $object, "Reload 2"); cmp_deeply($reload3, $object, "Reload 3"); cmp_deeply($reload4, $object, "Reload 4"); }; subtest no_objects => sub { my $yaml = <<'EOM'; --- - !perl/array:Foo [a] - !perl/hash:Foo { a: 1 } - !perl/code:Foo "sub { return 23 }" - !perl/ref:Foo { = : { a: 1 } } - !perl/scalar:Foo { = : foo } - !perl/regexp:Foo foo EOM my $perl = YAML::PP::Schema::Perl->new( classes => [], ); my $yp = YAML::PP::Perl->new( schema => [qw/ JSON /, $perl], ); my $data = $yp->load_string($yaml); for my $i (0 .. $#$data) { my $item = $data->[ $i ]; my $blessed = Scalar::Util::blessed($item) || ''; if ($blessed eq 'Regexp') { ok(1, "Data $i not blessed"); } else { cmp_ok($blessed, 'eq', '', "Data $i not blessed"); } } }; subtest some_objects => sub { my $yaml = <<'EOM'; --- - !perl/array:Foo [a] - !perl/hash:Foo { a: 1 } - !perl/code:Foo "sub { return 23 }" - !perl/ref:Foo { = : { a: 1 } } - !perl/scalar:Foo { = : foo } - !perl/regexp:Foo foo - !perl/array:Bar [a] - !perl/hash:Bar { a: 1 } - !perl/code:Bar "sub { return 23 }" - !perl/ref:Bar { = : { a: 1 } } - !perl/scalar:Bar { = : foo } - !perl/regexp:Bar foo EOM my $perl = YAML::PP::Schema::Perl->new( classes => ['Bar'], ); my $yp = YAML::PP::Perl->new( schema => [qw/ JSON /, $perl], ); my $data = $yp->load_string($yaml); for my $i (0 .. $#$data) { my $item = $data->[ $i ]; my $blessed = Scalar::Util::blessed($item) || ''; if ($blessed eq 'Regexp') { ok(1, "Data $i not blessed"); } elsif ($i > 5) { cmp_ok($blessed, 'eq', 'Bar', "Data $i blessed"); } else { cmp_ok($blessed, 'eq', '', "Data $i not blessed"); } } }; subtest no_dumpcode => sub { my $code1 = sub { 23 }; my $code2 = sub { 23 }; my $data = { foo => bless ($code1, "Foo"), bar => $code2 }; my $yaml = $yp_no_dumpcode->dump_string($data); my $exp = <<'EOM'; --- bar: !perl/code '{ "DUMMY" }' foo: !perl/code:Foo '{ "DUMMY" }' EOM is $yaml, $exp, "Use -loadcode"; }; done_testing; YAML-PP-v0.38.0/t/35.highlight.t0000644000175000017500000000452614556031647014366 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use YAML::PP::Highlight; my $yaml = "foo: bar\n"; my ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); delete @$_{qw/ line column /} for @$tokens; my @expected_tokens = ( { name => "PLAIN", value => "foo" }, { name => "COLON", value => ":" }, { name => "WS", value => " " }, { name => "PLAIN", value => "bar" }, { name => "EOL", value => "\n" }, ); is($error, '', "yaml_to_tokens suceeded"); is_deeply($tokens, \@expected_tokens, "yaml_to_tokens returned correct tokens"); $yaml = "foo: \@bar\n"; ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); cmp_ok($error, '=~', qr{Invalid}, "yaml_to_tokens returned an error"); delete @$_{qw/ line column /} for @$tokens; @expected_tokens = ( { name => "PLAIN", value => "foo" }, { name => "COLON", value => ":" }, { name => "WS", value => " " }, { name => "ERROR", value => "\@bar\n" }, ); is_deeply($tokens, \@expected_tokens, "yaml_to_tokens returned correct error tokens"); $yaml = <<'EOM'; foo: | bar quoted: "x" EOM ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); my @transformed = YAML::PP::Highlight->transform($tokens); cmp_ok($transformed[6]->{name}, 'eq', 'TRAILING_SPACE', "trailing spaces detected"); my $color = eval "use Term::ANSIColor 4.02; 1"; # older versions of Term::ANSIColor didn't have grey12 if ($color) { my $highlighted = YAML::PP::Highlight::Dump({ foo => 'bar' }); my $exp_highlighted = "\e[1m---\e[0m\n\e[94mfoo\e[0m\e[1;35m:\e[0m bar\n"; cmp_ok($highlighted, 'eq', $exp_highlighted, "YAML::PP::Highlight::Dump()"); } if ($color) { my $yaml = <<'EOM'; foo: bar EOM my ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); my $ansitabs = YAML::PP::Highlight->ansicolored($tokens, expand_tabs => 0); my $ansi = YAML::PP::Highlight->ansicolored($tokens); local $Data::Dumper::Useqq = 1; my $exp1 = "\e[94mfoo\e[0m\e[1;35m:\e[0m bar\e[44m\t\e[0m\n"; my $exp2 = "\e[94mfoo\e[0m\e[1;35m:\e[0m bar\e[44m \e[0m\n"; is $ansitabs, $exp1, 'ansicolored, no expanded tabs' or do { diag(Data::Dumper->Dump([$ansitabs], ['ansitabs'])); }; is $ansi, $exp2, 'ansicolored, expanded tabs' or do { diag(Data::Dumper->Dump([$ansi], ['ansi'])); }; } done_testing; YAML-PP-v0.38.0/t/12.load-json.t0000644000175000017500000000206114556031647014270 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use lib "$Bin/lib"; use Data::Dumper; use YAML::PP::Test; use YAML::PP; use Encode; $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; my $json_pp = eval "use JSON::PP; 1"; unless ($json_pp) { plan skip_all => "JSON::PP not installed"; exit; } my $yts = "$Bin/../test-suite/yaml-test-suite-data"; $|++; my @skip = qw/ 87E4 8UDB CN3R CT4Q L9U5 LQZ7 QF4Y UKK6:01 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_json => 1, in_yaml => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ OK DIFF ERROR TODO SKIP /], ids => [qw/ ERROR DIFF /], ); my $stats = $testsuite->{stats}; done_testing; exit; sub test { my ($testsuite, $testcase) = @_; my $result = $testsuite->load_json($testcase); $testsuite->compare_load_json($testcase, $result); } YAML-PP-v0.38.0/t/36.debug.t0000644000175000017500000000102414556031647013474 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; #$ENV{YAML_PP_TRACE} = 1; BEGIN { $ENV{YAML_PP_DEBUG} = 1; } use YAML::PP::Parser; my $yaml = "foo: bar"; my $parser = YAML::PP::Parser->new( receiver => sub {} ); no warnings 'redefine'; my $output = ''; *YAML::PP::Parser::_colorize_warn = sub { my ($self, $colors, $text) = @_; $output .= "$text\n"; }; *YAML::PP::Parser::highlight_yaml = sub { }; $parser->parse_string($yaml); cmp_ok($output, '=~', qr{lex_next_tokens}, "Debug output"); done_testing; YAML-PP-v0.38.0/t/47.header-footer.t0000644000175000017500000000267414556031647015150 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use YAML::PP; use Data::Dumper; my $in = <<'EOM'; --- foo --- a: 1 --- - a - b ... EOM subtest header_no_footer => sub { my $out_expected = <<'EOM'; --- foo --- a: 1 --- - a - b EOM my $yp = YAML::PP->new( header => 1, footer => 0, ); my @docs = $yp->load_string($in); my $out = $yp->dump_string(@docs); cmp_ok($out, 'eq', $out_expected, "Dumping with indent"); }; subtest no_header_no_footer => sub { my $out_expected = <<'EOM'; foo --- a: 1 --- - a - b EOM my $yp = YAML::PP->new( header => 0, footer => 0, ); my @docs = $yp->load_string($in); my $out = $yp->dump_string(@docs); cmp_ok($out, 'eq', $out_expected, "Dumping with indent"); }; subtest header_footer => sub { my $out_expected = <<'EOM'; --- foo ... --- a: 1 ... --- - a - b ... EOM my $yp = YAML::PP->new( header => 1, footer => 1, ); my @docs = $yp->load_string($in); my $out = $yp->dump_string(@docs); cmp_ok($out, 'eq', $out_expected, "Dumping with indent"); }; subtest no_header_footer => sub { my $out_expected = <<'EOM'; foo ... --- a: 1 ... --- - a - b ... EOM my $yp = YAML::PP->new( header => 0, footer => 1, ); my @docs = $yp->load_string($in); my $out = $yp->dump_string(@docs); cmp_ok($out, 'eq', $out_expected, "Dumping with indent"); }; done_testing; YAML-PP-v0.38.0/t/22.dump-bool.t0000644000175000017500000001026414556031647014305 0ustar tinatina#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use YAML::PP::Dumper; my $boolean = eval "use boolean; 1"; my $json_pp = eval "use JSON::PP; 1"; my $exp_yaml = <<"EOM"; --- false1: false false2: false true1: true true2: true EOM SKIP: { skip "boolean not installed", 1 unless $boolean; my $data = { "true1" => boolean::true(), "false1" => boolean::false(), "true2" => boolean::true(), "false2" => boolean::false(), }; my $yppd = YAML::PP->new(boolean => 'boolean'); my $yaml = $yppd->dump_string($data); cmp_ok($yaml, 'eq', $exp_yaml, "boolean.pm dump"); } SKIP: { skip "JSON::PP not installed", 1 unless $json_pp; my $data = { "true1" => JSON::PP::true(), "false1" => JSON::PP::false(), "true2" => JSON::PP::true(), "false2" => JSON::PP::false(), }; my $yppd = YAML::PP->new(boolean => 'JSON::PP'); my $yaml = $yppd->dump_string($data); cmp_ok($yaml, 'eq', $exp_yaml, "JSON::PP::Boolean dump"); } SKIP: { skip "JSON::PP and boolean not installed", 2 unless ($json_pp and $boolean); my $data = { "true1" => boolean::true(), "false1" => boolean::false(), "true2" => JSON::PP::true(), "false2" => JSON::PP::false(), }; my $yppd = YAML::PP->new(boolean => 'JSON::PP', schema => [qw/ + Perl /]); my $yaml = $yppd->dump_string($data); my $exp_json_pp = <<'EOM'; --- false1: !perl/scalar:boolean =: 0 false2: false true1: !perl/scalar:boolean =: 1 true2: true EOM cmp_ok($yaml, 'eq', $exp_json_pp, "JSON::PP::Boolean (no boolean) dump"); $yppd = YAML::PP->new(boolean => 'boolean', schema => [qw/ + Perl /]); $yaml = $yppd->dump_string($data); my $exp_boolean = <<'EOM'; --- false1: false false2: !perl/scalar:JSON::PP::Boolean =: 0 true1: true true2: !perl/scalar:JSON::PP::Boolean =: 1 EOM cmp_ok($yaml, 'eq', $exp_boolean, "boolean (no JSON::PP::Boolean) dump"); } SKIP: { skip "JSON::PP and boolean not installed", 6 unless ($json_pp and $boolean); my @tests = ( 'JSON::PP,boolean', 'boolean,JSON::PP', 'boolean,*', 'JSON::PP,*', '*', 'perl,*', ); my $data = { "true1" => boolean::true(), "false1" => boolean::false(), "true2" => JSON::PP::true(), "false2" => JSON::PP::false(), }; for my $test (@tests) { my $yppd = YAML::PP->new(boolean => $test); my $yaml = $yppd->dump_string($data); my $exp_json_pp = <<'EOM'; --- false1: false false2: false true1: true true2: true EOM cmp_ok($yaml, 'eq', $exp_json_pp, "$test dump"); } } SKIP: { skip "perl version < v5.36", 1 unless $] >= 5.036000; my $data = { "true1" => !!1, "false1" => !!0, }; my $yppd = YAML::PP->new(boolean => 'perl_experimental'); my $yaml = $yppd->dump_string($data); my $exp_json_pp = <<'EOM'; --- false1: false true1: true EOM cmp_ok($yaml, 'eq', $exp_json_pp, "perl_experimental dump"); } SKIP: { skip "perl version < v5.36", 1 unless $] >= 5.036000; my $data = { "true1" => !!1, "false1" => !!0, }; my $yppd = YAML::PP->new(boolean => ''); my $yaml = $yppd->dump_string($data); my $exp_json_pp = <<'EOM'; --- false1: '' true1: 1 EOM cmp_ok($yaml, 'eq', $exp_json_pp, "no booleans dump"); } SKIP: { skip "perl version < v5.36", 3 unless $] >= 5.036000; skip "JSON::PP and boolean not installed", 3 unless ($json_pp and $boolean); my @tests = ( 'perl_experimental,JSON::PP,boolean', 'perl_experimental,boolean,JSON::PP', 'perl_experimental,*', ); my $data = { "true1" => boolean::true(), "false1" => boolean::false(), "true2" => JSON::PP::true(), "false2" => JSON::PP::false(), "true3" => !!1, "false3" => !!0, }; for my $test (@tests) { my $yppd = YAML::PP->new(boolean => $test); my $yaml = $yppd->dump_string($data); my $exp_json_pp = <<'EOM'; --- false1: false false2: false false3: false true1: true true2: true true3: true EOM cmp_ok($yaml, 'eq', $exp_json_pp, "$test dump"); } } done_testing; YAML-PP-v0.38.0/xt/0000755000175000017500000000000014556031647012165 5ustar tinatinaYAML-PP-v0.38.0/xt/02.pod-cover.t0000644000175000017500000000057614556031647014500 0ustar tinatinause Test::More; eval "use Test::Pod::Coverage 1.00"; plan skip_all => "Test::Pod::Coverage 1.00 required for testing POD coverage" if $@; my $xsaccessor = eval "use Class::XSAccessor; 1"; unless ($xsaccessor) { diag "\n----------------"; diag "Class::XSAccessor is not installed. Class attributes might not be checked"; diag "----------------"; } all_pod_coverage_ok(); YAML-PP-v0.38.0/xt/04.pod.t0000644000175000017500000000025314556031647013356 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use Test::More; eval "use Test::Pod 1.00"; plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; all_pod_files_ok(); YAML-PP-v0.38.0/xt/03.spelling.t0000644000175000017500000000066014556031647014412 0ustar tinatina#!/usr/bin/perl use strict; use warnings; use Test::More; use Test::Spelling; use Pod::Wordlist; add_stopwords(); all_pod_files_spelling_ok( qw( bin lib ) ); __DATA__ ansi dumpcode DumpFile failsafe FUNCTIONS header loadcode libsyck libyaml linter LoadFile Nim PyYAML RAML refref Representer roundtrip scalarref schemas Schema Schemas superset tml TODO unicode USD vimscript yaml yamllint Ingy döt Net flyx Krause Müller YAML-PP-v0.38.0/META.json0000644000175000017500000001365514556031647013165 0ustar tinatina{ "abstract" : "YAML 1.2 Processor", "author" : [ "Tina M\u00fcller " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "YAML-PP", "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "develop" : { "requires" : { "Pod::Wordlist" : "0", "Test::More" : "0", "Test::Spelling" : "0" } }, "runtime" : { "requires" : { "B" : "0", "B::Deparse" : "0", "Carp" : "0", "Data::Dumper" : "0", "Encode" : "0", "Exporter" : "0", "File::Basename" : "0", "Getopt::Long" : "0", "MIME::Base64" : "0", "Module::Load" : "0", "Scalar::Util" : "1.07", "Tie::Array" : "0", "Tie::Hash" : "0", "base" : "0", "constant" : "0", "overload" : "0", "perl" : "v5.8.0", "strict" : "0", "warnings" : "0" } }, "test" : { "recommends" : { "Test::Deep" : "0" }, "requires" : { "File::Spec" : "0", "FindBin" : "0", "IO::File" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Test::More" : "0.98", "Test::Warn" : "0", "lib" : "0", "perl" : "v5.8.0" } } }, "provides" : { "YAML::PP" : { "file" : "lib/YAML/PP.pm", "version" : "v0.38.0" }, "YAML::PP::Common" : { "file" : "lib/YAML/PP/Common.pm", "version" : "v0.38.0" }, "YAML::PP::Constructor" : { "file" : "lib/YAML/PP/Constructor.pm", "version" : "v0.38.0" }, "YAML::PP::Dumper" : { "file" : "lib/YAML/PP/Dumper.pm", "version" : "v0.38.0" }, "YAML::PP::Emitter" : { "file" : "lib/YAML/PP/Emitter.pm", "version" : "v0.38.0" }, "YAML::PP::Exception" : { "file" : "lib/YAML/PP/Exception.pm", "version" : "v0.38.0" }, "YAML::PP::Grammar" : { "file" : "lib/YAML/PP/Grammar.pm", "version" : "v0.38.0" }, "YAML::PP::Highlight" : { "file" : "lib/YAML/PP/Highlight.pm", "version" : "v0.38.0" }, "YAML::PP::Lexer" : { "file" : "lib/YAML/PP/Lexer.pm", "version" : "v0.38.0" }, "YAML::PP::Loader" : { "file" : "lib/YAML/PP/Loader.pm", "version" : "v0.38.0" }, "YAML::PP::Parser" : { "file" : "lib/YAML/PP/Parser.pm", "version" : "v0.38.0" }, "YAML::PP::Perl" : { "file" : "lib/YAML/PP/Perl.pm", "version" : "v0.38.0" }, "YAML::PP::Preserve::Array" : { "file" : "lib/YAML/PP.pm", "version" : "v0.38.0" }, "YAML::PP::Preserve::Hash" : { "file" : "lib/YAML/PP.pm", "version" : "v0.38.0" }, "YAML::PP::Preserve::Scalar" : { "file" : "lib/YAML/PP.pm", "version" : "v0.38.0" }, "YAML::PP::Reader" : { "file" : "lib/YAML/PP/Reader.pm", "version" : "v0.38.0" }, "YAML::PP::Reader::File" : { "file" : "lib/YAML/PP/Reader.pm", "version" : "v0.38.0" }, "YAML::PP::Render" : { "file" : "lib/YAML/PP/Render.pm", "version" : "v0.38.0" }, "YAML::PP::Representer" : { "file" : "lib/YAML/PP/Representer.pm", "version" : "v0.38.0" }, "YAML::PP::Schema" : { "file" : "lib/YAML/PP/Schema.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Binary" : { "file" : "lib/YAML/PP/Schema/Binary.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Core" : { "file" : "lib/YAML/PP/Schema/Core.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Failsafe" : { "file" : "lib/YAML/PP/Schema/Failsafe.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Include" : { "file" : "lib/YAML/PP/Schema/Include.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::JSON" : { "file" : "lib/YAML/PP/Schema/JSON.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Merge" : { "file" : "lib/YAML/PP/Schema/Merge.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Perl" : { "file" : "lib/YAML/PP/Schema/Perl.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::Tie::IxHash" : { "file" : "lib/YAML/PP/Schema/Tie/IxHash.pm", "version" : "v0.38.0" }, "YAML::PP::Schema::YAML1_1" : { "file" : "lib/YAML/PP/Schema/YAML1_1.pm", "version" : "v0.38.0" }, "YAML::PP::Type::MergeKey" : { "file" : "lib/YAML/PP/Type/MergeKey.pm", "version" : "v0.38.0" }, "YAML::PP::Writer" : { "file" : "lib/YAML/PP/Writer.pm", "version" : "v0.38.0" }, "YAML::PP::Writer::File" : { "file" : "lib/YAML/PP/Writer/File.pm", "version" : "v0.38.0" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/perlpunk/YAML-PP-p5/issues" }, "repository" : { "type" : "git", "url" : "https://github.com/perlpunk/YAML-PP-p5", "web" : "https://github.com/perlpunk/YAML-PP-p5" } }, "version" : "v0.38.0", "x_generated_by_perl" : "v5.30.3", "x_serialization_backend" : "Cpanel::JSON::XS version 4.26", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later" }