YAML-PP-0.021000755001750001750 013626002577 11654 5ustar00tinatina000000000000README100644001750001750 53313626002577 12576 0ustar00tinatina000000000000YAML-PP-0.021This archive contains the distribution YAML-PP, version 0.021: YAML 1.2 Processor This software is copyright (c) 2020 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. This README file was generated by Dist::Zilla::Plugin::Readme v6.012. LICENSE100644001750001750 4365513626002577 12777 0ustar00tinatina000000000000YAML-PP-0.021This software is copyright (c) 2020 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) 2020 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) 2020 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 MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End Changes100644001750001750 1715513626002577 13261 0ustar00tinatina000000000000YAML-PP-0.021Revision history for Perl module YAML::PP 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 META.yml100644001750001750 665613626002577 13223 0ustar00tinatina000000000000YAML-PP-0.021--- abstract: 'YAML 1.2 Processor' author: - 'Tina Müller ' build_requires: File::Spec: '0' FindBin: '0' IO::Handle: '0' IPC::Open3: '0' Test::Deep: '0' Test::More: '0.98' Test::Warn: '0' blib: '1.01' lib: '0' perl: v5.8.0 configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.012, 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: '0.021' YAML::PP::Common: file: lib/YAML/PP/Common.pm version: '0.021' YAML::PP::Constructor: file: lib/YAML/PP/Constructor.pm version: '0.021' YAML::PP::Dumper: file: lib/YAML/PP/Dumper.pm version: '0.021' YAML::PP::Emitter: file: lib/YAML/PP/Emitter.pm version: '0.021' YAML::PP::Exception: file: lib/YAML/PP/Exception.pm version: '0.021' YAML::PP::Grammar: file: lib/YAML/PP/Grammar.pm version: '0.021' YAML::PP::Highlight: file: lib/YAML/PP/Highlight.pm version: '0.021' YAML::PP::Lexer: file: lib/YAML/PP/Lexer.pm version: '0.021' YAML::PP::Loader: file: lib/YAML/PP/Loader.pm version: '0.021' YAML::PP::Parser: file: lib/YAML/PP/Parser.pm version: '0.021' YAML::PP::Perl: file: lib/YAML/PP/Perl.pm version: '0.021' YAML::PP::Preserve::Hash: file: lib/YAML/PP.pm version: '0.021' YAML::PP::Preserve::Scalar: file: lib/YAML/PP.pm version: '0.021' YAML::PP::Reader: file: lib/YAML/PP/Reader.pm version: '0.021' YAML::PP::Reader::File: file: lib/YAML/PP/Reader.pm version: '0.021' YAML::PP::Render: file: lib/YAML/PP/Render.pm version: '0.021' YAML::PP::Representer: file: lib/YAML/PP/Representer.pm version: '0.021' YAML::PP::Schema: file: lib/YAML/PP/Schema.pm version: '0.021' YAML::PP::Schema::Binary: file: lib/YAML/PP/Schema/Binary.pm version: '0.021' YAML::PP::Schema::Core: file: lib/YAML/PP/Schema/Core.pm version: '0.021' YAML::PP::Schema::Failsafe: file: lib/YAML/PP/Schema/Failsafe.pm version: '0.021' YAML::PP::Schema::Include: file: lib/YAML/PP/Schema/Include.pm version: '0.021' YAML::PP::Schema::JSON: file: lib/YAML/PP/Schema/JSON.pm version: '0.021' YAML::PP::Schema::Merge: file: lib/YAML/PP/Schema/Merge.pm version: '0.021' YAML::PP::Schema::Perl: file: lib/YAML/PP/Schema/Perl.pm version: '0.021' YAML::PP::Schema::Tie::IxHash: file: lib/YAML/PP/Schema/Tie/IxHash.pm version: '0.021' YAML::PP::Schema::YAML1_1: file: lib/YAML/PP/Schema/YAML1_1.pm version: '0.021' YAML::PP::Type::MergeKey: file: lib/YAML/PP/Type/MergeKey.pm version: '0.021' YAML::PP::Writer: file: lib/YAML/PP/Writer.pm version: '0.021' YAML::PP::Writer::File: file: lib/YAML/PP/Writer/File.pm version: '0.021' requires: B: '0' B::Deparse: '0' Carp: '0' Data::Dumper: '0' Encode: '0' Exporter: '0' File::Basename: '0' MIME::Base64: '0' Module::Load: '0' Scalar::Util: '1.07' 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: '0.021' x_generated_by_perl: v5.24.1 x_serialization_backend: 'YAML::Tiny version 1.73' MANIFEST100644001750001750 20670713626002577 13142 0ustar00tinatina000000000000YAML-PP-0.021# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012. CONTRIBUTING.md Changes LICENSE MANIFEST MANIFEST.SKIP META.json META.yml Makefile.PL Makefile.dev README bin/yamlpp5-events bin/yamlpp5-highlight bin/yamlpp5-load bin/yamlpp5-load-dump bin/yamlpp5-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/yaml-schema-modules.yaml examples/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/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/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 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/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.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/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/=== test-suite/yaml-test-suite-data/4MUZ/emit.yaml test-suite/yaml-test-suite-data/4MUZ/in.json test-suite/yaml-test-suite-data/4MUZ/in.yaml test-suite/yaml-test-suite-data/4MUZ/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/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/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.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/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/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.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/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/6CK3/=== 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.json 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.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/77H8/=== test-suite/yaml-test-suite-data/77H8/in.yaml test-suite/yaml-test-suite-data/77H8/out.yaml test-suite/yaml-test-suite-data/77H8/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.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/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/9MMW/=== test-suite/yaml-test-suite-data/9MMW/in.yaml test-suite/yaml-test-suite-data/9MMW/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.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.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.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/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/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/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/in.json test-suite/yaml-test-suite-data/G5U8/in.yaml test-suite/yaml-test-suite-data/G5U8/out.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/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/JDH8/=== test-suite/yaml-test-suite-data/JDH8/in.json test-suite/yaml-test-suite-data/JDH8/in.yaml test-suite/yaml-test-suite-data/JDH8/out.yaml test-suite/yaml-test-suite-data/JDH8/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/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/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/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/KZN9/=== test-suite/yaml-test-suite-data/KZN9/in.yaml test-suite/yaml-test-suite-data/KZN9/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/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/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/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.json 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/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.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.json 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/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/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/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/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/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/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/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.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 dist.ini100644001750001750 167213626002577 13407 0ustar00tinatina000000000000YAML-PP-0.021name = YAML-PP author = Tina Müller license = Perl_5 copyright_holder = Tina Müller copyright_year = 2020 version = 0.021 [@Filter] -bundle = @Basic -remove = GatherDir option = for_basic [Prereqs] perl = 5.8.0 Scalar::Util = 1.07 ; openhandle() [AutoPrereqs] skip = Term::ANSIColor skip = boolean skip = JSON::PP skip = HTML::Entities skip = Tie::IxHash skip = Tie::StdHash [Prereqs / TestRequires] Test::More = 0.98 [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 META.json100644001750001750 1301213626002577 13373 0ustar00tinatina000000000000YAML-PP-0.021{ "abstract" : "YAML 1.2 Processor", "author" : [ "Tina M\u00fcller " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.012, 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" : { "Test::More" : "0" } }, "runtime" : { "requires" : { "B" : "0", "B::Deparse" : "0", "Carp" : "0", "Data::Dumper" : "0", "Encode" : "0", "Exporter" : "0", "File::Basename" : "0", "MIME::Base64" : "0", "Module::Load" : "0", "Scalar::Util" : "1.07", "Tie::Hash" : "0", "base" : "0", "constant" : "0", "overload" : "0", "perl" : "v5.8.0", "strict" : "0", "warnings" : "0" } }, "test" : { "requires" : { "File::Spec" : "0", "FindBin" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Test::Deep" : "0", "Test::More" : "0.98", "Test::Warn" : "0", "blib" : "1.01", "lib" : "0", "perl" : "v5.8.0" } } }, "provides" : { "YAML::PP" : { "file" : "lib/YAML/PP.pm", "version" : "0.021" }, "YAML::PP::Common" : { "file" : "lib/YAML/PP/Common.pm", "version" : "0.021" }, "YAML::PP::Constructor" : { "file" : "lib/YAML/PP/Constructor.pm", "version" : "0.021" }, "YAML::PP::Dumper" : { "file" : "lib/YAML/PP/Dumper.pm", "version" : "0.021" }, "YAML::PP::Emitter" : { "file" : "lib/YAML/PP/Emitter.pm", "version" : "0.021" }, "YAML::PP::Exception" : { "file" : "lib/YAML/PP/Exception.pm", "version" : "0.021" }, "YAML::PP::Grammar" : { "file" : "lib/YAML/PP/Grammar.pm", "version" : "0.021" }, "YAML::PP::Highlight" : { "file" : "lib/YAML/PP/Highlight.pm", "version" : "0.021" }, "YAML::PP::Lexer" : { "file" : "lib/YAML/PP/Lexer.pm", "version" : "0.021" }, "YAML::PP::Loader" : { "file" : "lib/YAML/PP/Loader.pm", "version" : "0.021" }, "YAML::PP::Parser" : { "file" : "lib/YAML/PP/Parser.pm", "version" : "0.021" }, "YAML::PP::Perl" : { "file" : "lib/YAML/PP/Perl.pm", "version" : "0.021" }, "YAML::PP::Preserve::Hash" : { "file" : "lib/YAML/PP.pm", "version" : "0.021" }, "YAML::PP::Preserve::Scalar" : { "file" : "lib/YAML/PP.pm", "version" : "0.021" }, "YAML::PP::Reader" : { "file" : "lib/YAML/PP/Reader.pm", "version" : "0.021" }, "YAML::PP::Reader::File" : { "file" : "lib/YAML/PP/Reader.pm", "version" : "0.021" }, "YAML::PP::Render" : { "file" : "lib/YAML/PP/Render.pm", "version" : "0.021" }, "YAML::PP::Representer" : { "file" : "lib/YAML/PP/Representer.pm", "version" : "0.021" }, "YAML::PP::Schema" : { "file" : "lib/YAML/PP/Schema.pm", "version" : "0.021" }, "YAML::PP::Schema::Binary" : { "file" : "lib/YAML/PP/Schema/Binary.pm", "version" : "0.021" }, "YAML::PP::Schema::Core" : { "file" : "lib/YAML/PP/Schema/Core.pm", "version" : "0.021" }, "YAML::PP::Schema::Failsafe" : { "file" : "lib/YAML/PP/Schema/Failsafe.pm", "version" : "0.021" }, "YAML::PP::Schema::Include" : { "file" : "lib/YAML/PP/Schema/Include.pm", "version" : "0.021" }, "YAML::PP::Schema::JSON" : { "file" : "lib/YAML/PP/Schema/JSON.pm", "version" : "0.021" }, "YAML::PP::Schema::Merge" : { "file" : "lib/YAML/PP/Schema/Merge.pm", "version" : "0.021" }, "YAML::PP::Schema::Perl" : { "file" : "lib/YAML/PP/Schema/Perl.pm", "version" : "0.021" }, "YAML::PP::Schema::Tie::IxHash" : { "file" : "lib/YAML/PP/Schema/Tie/IxHash.pm", "version" : "0.021" }, "YAML::PP::Schema::YAML1_1" : { "file" : "lib/YAML/PP/Schema/YAML1_1.pm", "version" : "0.021" }, "YAML::PP::Type::MergeKey" : { "file" : "lib/YAML/PP/Type/MergeKey.pm", "version" : "0.021" }, "YAML::PP::Writer" : { "file" : "lib/YAML/PP/Writer.pm", "version" : "0.021" }, "YAML::PP::Writer::File" : { "file" : "lib/YAML/PP/Writer/File.pm", "version" : "0.021" } }, "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" : "0.021", "x_generated_by_perl" : "v5.24.1", "x_serialization_backend" : "Cpanel::JSON::XS version 4.02" } Makefile.PL100644001750001750 413113626002577 13706 0ustar00tinatina000000000000YAML-PP-0.021# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.012. 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/yamlpp5-events", "bin/yamlpp5-highlight", "bin/yamlpp5-load", "bin/yamlpp5-load-dump", "bin/yamlpp5-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, "MIME::Base64" => 0, "Module::Load" => 0, "Scalar::Util" => "1.07", "Tie::Hash" => 0, "base" => 0, "constant" => 0, "overload" => 0, "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "File::Spec" => 0, "FindBin" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::Deep" => 0, "Test::More" => "0.98", "Test::Warn" => 0, "blib" => "1.01", "lib" => 0 }, "VERSION" => "0.021", "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, "IO::Handle" => 0, "IPC::Open3" => 0, "MIME::Base64" => 0, "Module::Load" => 0, "Scalar::Util" => "1.07", "Test::Deep" => 0, "Test::More" => "0.98", "Test::Warn" => 0, "Tie::Hash" => 0, "base" => 0, "blib" => "1.01", "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); t000755001750001750 013626002577 12040 5ustar00tinatina000000000000YAML-PP-0.02119.file.t100644001750001750 315313626002577 13536 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; } 21.emit.t100644001750001750 335313626002577 13550 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 8CWC 8UDB 9MMW CN3R CT4Q DFF7 FRK4 G5U8 KZN9 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ F6MC NB6Z /; # emitter push @skip, qw/ /; # quoting push @skip, qw/ 36F6 9YRD HS5T EX5H NAT4 /; # tags push @skip, qw/ v014 /; # block scalar push @skip, qw/ 4QFQ 6VJK 7T8X R4YG /; # test push @skip, qw/ XLQ9 K54U PUW8 3MYT JDH8 MJS9 /; # TODO fix testsuite # 4QFQ # unicode push @skip, qw/ H3Z8 /; 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; 20.dump.t100644001750001750 220313626002577 13547 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 8CWC 8UDB 9MMW CN3R CT4Q DFF7 G5U8 KZN9 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ /; 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 /], ); Makefile.dev100644001750001750 172713626002577 14161 0ustar00tinatina000000000000YAML-PP-0.021test-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 36.debug.t100644001750001750 102413626002577 13677 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 50.clone.t100644001750001750 144513626002577 13714 0ustar00tinatina000000000000YAML-PP-0.021/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use Test::Deep; 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; 48.merge.t100644001750001750 341113626002577 13715 0ustar00tinatina000000000000YAML-PP-0.021/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use YAML::PP; use Test::Deep; # https://yaml.org/type/merge.html my $yp = YAML::PP->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; MANIFEST.SKIP100644001750001750 15713626002577 13616 0ustar00tinatina000000000000YAML-PP-0.021^dev ^test-suite/.git ^cover_db ^local ^dev.sh ^nytprof ^nytprof.out ^pod2htmd.tmp ^new_tests ^gh-pages ^bench 16.loader.t100644001750001750 44413626002577 14042 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 31.schema.t100644001750001750 1221613626002577 14071 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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/../examples/yaml-schema.yaml"; my $schema_data = do { YAML::PP->new->load_file($schema_file) }; my $boolean = $jsonpp ? 'JSON::PP' : 'perl'; my $failsafe = YAML::PP->new( boolean => $boolean, schema => [qw/ Failsafe /] ); my $json = YAML::PP->new( boolean => $boolean, schema => [qw/ JSON /] ); my $json_empty_null = YAML::PP->new( boolean => $boolean, schema => [qw/ JSON empty=null /] ); my $core = YAML::PP->new( boolean => $boolean, schema => [qw/ Core /] ); my $yaml11 = YAML::PP->new( boolean => $boolean, 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] }, ); } for my $schema_names (sort keys %$schema_data) { note($schema_names); my @names = split m/ *, */, $schema_names; my $tests = $schema_data->{ $schema_names }; for my $name (@names) { my $yp = $loaders{ $name }; for my $test (@$tests) { my %def; @def{ qw/ type yaml data dump /} = @$test; next if ($def{type} eq 'bool' and not $jsonpp); my $func; my $data = $yp->load_string('--- ' . $def{yaml}); 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 $subtype = ''; if ($type =~ s/-(\w+)//) { $subtype = $1; } my $label = sprintf "(%s) type %s: load(%s)", $name, $def{type}, $def{yaml}; 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, 'eq', $def{data}, "$label eq '$def{data}'"); } } elsif ($type eq 'float') { unless ($inf_broken) { ok($is_float, "$label is float"); ok(!$is_str, "$label is not str"); } unless ($func) { cmp_ok($data, '==', $def{data}, "$label eq '$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/^--- //; $yaml_dump =~ s/\n\z//; cmp_ok($yaml_dump, 'eq', $def{dump}, "$label-dump as expected"); } } } } 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; 30.legacy.t100644001750001750 361013626002577 14052 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; } 45.binary.t100644001750001750 776413626002577 14116 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 42.tokens.t100644001750001750 152413626002577 14116 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 8CWC 8UDB 9MMW CN3R CT4Q DFF7 G5U8 KZN9 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ /; 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; 43.indent.t100644001750001750 63413626002577 14056 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 $yp = YAML::PP->new( indent => 4, ); my $data = $yp->load_string($in); my $out = $yp->dump_string($data); cmp_ok($out, 'eq', $out_expected, "Dumping with indent"); done_testing; 44.writer.t100644001750001750 155113626002577 14131 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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} }; } 00.compile.t100644001750001750 665613626002577 14250 0ustar00tinatina000000000000YAML-PP-0.021/tuse 5.006; use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.056 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/yamlpp5-events', 'bin/yamlpp5-highlight', 'bin/yamlpp5-load', 'bin/yamlpp5-load-dump', 'bin/yamlpp5-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; 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}; 49.include.t100644001750001750 445013626002577 14246 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 Test::Deep; use File::Spec; use Scalar::Util qw/ refaddr /; 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; 18.control.t100644001750001750 271513626002577 14301 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; YAML000755001750001750 013626002577 13105 5ustar00tinatina000000000000YAML-PP-0.021/libPP.pm100644001750001750 6551513626002577 14156 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML# ABSTRACT: YAML 1.2 Processor use strict; use warnings; package YAML::PP; our $VERSION = '0.021'; # 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} || 'allow'; my $indent = delete $args{indent}; my $writer = delete $args{writer}; my $header = delete $args{header}; my $footer = delete $args{footer}; 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, 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, ); 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); } package YAML::PP::Preserve::Hash; # experimental use Tie::Hash; use base qw/ Tie::StdHash /; sub TIEHASH { my ($class) = @_; my $self = bless { keys => [], data => {}, }, $class; } sub STORE { my ($self, $key, $val) = @_; my $keys = $self->{keys}; if (exists $self->{data}->{ $key }) { @$keys = grep { $_ ne $key } @$keys; } push @$keys, "$key"; $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::Scalar; use overload '+' => \&value, '""' => \&value, 'bool' => \&value, 'eq' => \&value, ; sub new { my ($class, %args) = @_; my $self = { %args, }; bless $self, $class; } sub value { $_[0]->{value} } sub tag { $_[0]->{tag} } sub style { $_[0]->{style} } 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); # The loader offers JSON::PP::Boolean, boolean.pm or # perl 1/'' (currently default) for booleans my $ypp = YAML::PP->new(boolean => 'JSON::PP'); my $ypp = YAML::PP->new(boolean => 'boolean'); my $ypp = YAML::PP->new(boolean => 'perl'); # 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); my $ypp = YAML::PP->new(schema => [qw/ + Perl /]); my $yaml = $yp->dump_string($data_with_perl_objects); Some utility scripts, mostly useful for debugging: # Load YAML into a data structure and dump with Data::Dumper yamlpp5-load < file.yaml # Load and Dump yamlpp5-load-dump < file.yaml # Print the events from the parser in yaml-test-suite format yamlpp5-events < file.yaml # Parse and emit events directly without loading yamlpp5-parse-emit < file.yaml # Create ANSI colored YAML. Can also be useful for invalid YAML, showing # you the exact location of the error yamlpp5-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 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 --- [ a, b, c: d ] # equals [ a, b, { c: d } ] =item Plain mapping keys ending with colons --- key ends with two colons::: value =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 JSON. 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 C. You can choose the Schema, however, the API for that is not yet fixed. Currently it looks 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. =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. See L<"NUMBERS"> for an 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 PV 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 METHODS =over =item new my $ypp = YAML::PP->new; # load booleans via boolean.pm my $ypp = YAML::PP->new( boolean => 'boolean' ); # load booleans via JSON::PP::true/false my $ypp = YAML::PP->new( boolean => 'JSON::PP' ); # 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 => 'JSON::PP', schema => ['Core'], cyclic_refs => 'fatal', indent => 4, header => 1, footer => 1, version_directive => 1, ); Options: =over =item boolean Values: C (currently default), C, C =item schema Default: C<['Core']> 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: 'allow' but will be switched to fatal in the future for safety! 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 indent Default: 2 Use that many spaces for indenting =item header Default: 1 Print document heaader C<---> =item footer Default: 0 Print document footer C<...> =item yaml_version 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 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 0.021) Experimental. Default: false use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_SCALAR_STYLE /; # 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 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 my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE ); my ($hash, $styles) = $yp->load_file($file); Then dumping it will return the same output. Only folded block scalars '>' cannot preserve the style yet. 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'; =back =item 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. =item load_file my $doc = $ypp->load_file("file.yaml"); my @docs = $ypp->load_file("file.yaml"); Strings will be loaded as unicode characters. =item 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. =item 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. =item 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); =item loader Returns or sets the loader object, by default L =item dumper Returns or sets the dumper object, by default L =item schema Returns or sets the schema object =item default_schema Creates and returns the default schema =back =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 NUMBERS Compare the output of the following YAML Loaders and JSON::PP dump: use JSON::PP; use Devel::Peek; use YAML::XS (); use YAML (); $YAML::Numify = 1; # since version 1.23 use YAML::Syck (); $YAML::Syck::ImplicitTyping = 1; use YAML::Tiny (); use YAML::PP; my $yaml = "foo: 23"; my $d1 = YAML::XS::Load($yaml); my $d2 = YAML::Load($yaml); my $d3 = YAML::Syck::Load($yaml); my $d4 = YAML::Tiny->read_string($yaml)->[0]; my $d5 = YAML::PP->new->load_string($yaml); Dump $d1->{foo}; Dump $d2->{foo}; Dump $d3->{foo}; Dump $d4->{foo}; Dump $d5->{foo}; say encode_json($d1); say encode_json($d2); say encode_json($d3); say encode_json($d4); say encode_json($d5); SV = PVIV(0x55bbaff2bae0) at 0x55bbaff26518 REFCNT = 1 FLAGS = (IOK,POK,pIOK,pPOK) IV = 23 PV = 0x55bbb06e67a0 "23"\0 CUR = 2 LEN = 10 SV = PVMG(0x55bbb08959b0) at 0x55bbb08fc6e8 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 23 NV = 0 PV = 0 SV = IV(0x55bbaffcb3b0) at 0x55bbaffcb3c0 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 23 SV = PVMG(0x55bbaff2f1f0) at 0x55bbb08fc8c8 REFCNT = 1 FLAGS = (POK,pPOK,UTF8) IV = 0 NV = 0 PV = 0x55bbb0909d00 "23"\0 [UTF8 "23"] CUR = 2 LEN = 10 SV = PVMG(0x55bbaff2f6d0) at 0x55bbb08b2c10 REFCNT = 1 FLAGS = (IOK,pIOK) IV = 23 NV = 0 PV = 0 {"foo":"23"} {"foo":23} {"foo":23} {"foo":"23"} {"foo":23} =head1 WHY 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 216, 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 about 230 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. The suite contains .tml files, and in a separate 'data' branch you will find the content in separate files, if you can't or don't want to use TestML. 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 As of this writing, the test matrix only contains valid test cases. Invalid ones will be added. =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 =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 2018 by Tina Müller This library is free software and may be distributed under the same terms as perl itself. =cut CONTRIBUTING.md100644001750001750 263613626002577 14175 0ustar00tinatina000000000000YAML-PP-0.021# 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. 52.preserve.t100644001750001750 457513626002577 14460 0ustar00tinatina000000000000YAML-PP-0.021/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use Test::Deep; use FindBin '$Bin'; use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_SCALAR_STYLE /; subtest 'preserve-scalar-style' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_SCALAR_STYLE ); my $yaml = <<'EOM'; --- - plain - 'single' - "double" - >- folded - |- literal - |+ ... --- - 0 - null - 23 - "42" - !!int '99' EOM my $exp_styles = <<'EOM'; --- - plain - 'single' - "double" - folded - |- literal - |+ ... 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 = pop @$styles; my $string = "@$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->[1] .= ' APPEND'; is($styles->[1], 'single APPEND', 'append works'); is($yp->dump_string($styles->[1]), "--- 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 @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'); }; done_testing; bin000755001750001750 013626002577 12345 5ustar00tinatina000000000000YAML-PP-0.021yamlpp5-load100755001750001750 64513626002577 14724 0ustar00tinatina000000000000YAML-PP-0.021/bin#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use YAML::PP; use Encode; my ($file) = @ARGV; my $yaml; unless ($file) { $yaml = do { local $/; }; $yaml = decode_utf8($yaml); } my $ypp = YAML::PP->new( preserve => 1 ); my @docs = $file ? $ypp->load_file($file) : $ypp->load_string($yaml); local $Data::Dumper::Useqq = 1; print Data::Dumper->Dump([$docs[ $_ ]], ["doc$_"]) for 0 ..$#docs; 14.load-bool.t100644001750001750 215013626002577 14456 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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'); } done_testing; 15.parse-eol.t100644001750001750 156013626002577 14502 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 12.load-json.t100644001750001750 206713626002577 14501 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 8CWC 8UDB CN3R CT4Q G5U8 L9U5 LQZ7 QF4Y /; 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); } 22.dump-bool.t100644001750001750 161613626002577 14511 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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"; --- bool false: false bool true: true EOM SKIP: { skip "boolean not installed", 1 unless $boolean; my $data = { "bool true" => boolean::true(), "bool false" => 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 = { "bool true" => JSON::PP::true(), "bool false" => 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"); } done_testing; 35.highlight.t100644001750001750 336413626002577 14570 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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); my @tokens = map { +{ value => $_->{value}, name => $_->{name} } } @$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"); @tokens = map { +{ value => $_->{value}, name => $_->{name} } } @$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\n"); my $exp_highlighted = "\e[1m---\e[0m \e[1;33m|\e[0m\n\e[37;48;5;235m \e[0m\e[33mfoo: bar\e[0m\n\n"; cmp_ok($highlighted, 'eq', $exp_highlighted, "YAML::PP::Highlight::Dump()"); } done_testing; v014000755001750001750 013626002577 13631 5ustar00tinatina000000000000YAML-PP-0.021/t/valid===100644001750001750 3313626002577 14216 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v014Allowed Characters in Tags v019000755001750001750 013626002577 13636 5ustar00tinatina000000000000YAML-PP-0.021/t/valid===100644001750001750 5113626002577 14223 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v019Implicit Key Block Sequence on same line v009000755001750001750 013626002577 13635 5ustar00tinatina000000000000YAML-PP-0.021/t/valid===100644001750001750 5213626002577 14223 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v009Empty value at end of unindented sequence etc000755001750001750 013626002577 12350 5ustar00tinatina000000000000YAML-PP-0.021grammar.yaml100644001750001750 3143713626002577 15052 0ustar00tinatina000000000000YAML-PP-0.021/etc--- 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_flow_plain, new: FLOWSEQ_NEXT } PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: { match: cb_flowkey_quoted, new: FLOWSEQ_NEXT } QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } 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 FLOWMAP: 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 NEWFLOWSEQ: EOL: { new: NEWFLOWSEQ } WS: { new: NEWFLOWSEQ } ANCHOR: match: cb_anchor WS: { new: NEWFLOWSEQ_ANCHOR } EOL: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWSEQ_TAG } EOL: { 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: WS: { new: NEWFLOWSEQ_ANCHOR } EOL: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: FLOWSEQ } EOL: { new: FLOWSEQ } DEFAULT: { new: FLOWSEQ } NEWFLOWSEQ_TAG: WS: { new: NEWFLOWSEQ_TAG } EOL: { new: NEWFLOWSEQ_TAG } ANCHOR: match: cb_anchor WS: { new: FLOWSEQ } EOL: { new: FLOWSEQ } DEFAULT: { new: FLOWSEQ } NEWFLOWMAP_ANCHOR: WS: { new: NEWFLOWMAP_ANCHOR } EOL: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: FLOWMAP } EOL: { new: FLOWMAP } DEFAULT: { new: FLOWMAP } NEWFLOWMAP_TAG: WS: { new: NEWFLOWMAP_TAG } EOL: { new: NEWFLOWMAP_TAG } ANCHOR: match: cb_anchor WS: { new: FLOWMAP } EOL: { new: FLOWMAP } DEFAULT: { new: FLOWMAP } NEWFLOWMAP: EOL: { new: NEWFLOWMAP } WS: { new: NEWFLOWMAP } # TODO QUESTION: { match: cb_flow_question, new: NEWFLOWMAP } ANCHOR: match: cb_anchor WS: { new: NEWFLOWMAP_ANCHOR } EOL: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWMAP_TAG } EOL: { 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 } 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 } RULE_MAPKEY: QUESTION: match: cb_question EOL: { new: FULLNODE } WS: { new: FULLNODE } ALIAS: match: cb_send_alias 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 xt000755001750001750 013626002577 12230 5ustar00tinatina000000000000YAML-PP-0.02102.pod-cover.t100644001750001750 57613626002577 14663 0ustar00tinatina000000000000YAML-PP-0.021/xtuse 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(); 51.directives.t100644001750001750 1352113626002577 14774 0ustar00tinatina000000000000YAML-PP-0.021/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use Test::Deep; 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}, '1.2', 'YAML 1.2 detected'); ok(! exists $events[1]->{version_directive}, 'No version directive'); is($events[2]->{version_directive}, '1.1', 'YAML 1.1 detected'); ok(! exists $events[1]->{version_directive}, 'No version directive'); @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 => 'perl', 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; lib000755001750001750 013626002577 12606 5ustar00tinatina000000000000YAML-PP-0.021/tMySchema.pm100644001750001750 101713626002577 15011 0ustar00tinatina000000000000YAML-PP-0.021/t/libpackage 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_representer( class_equals => 'Class1', code => sub { my ($representer, $node) = @_; # $node->{value} contains the object $node->{tag} = '!Class1'; $node->{ data } = ''; return 1; }, ); } 1; yamlpp5-events100755001750001750 103213626002577 15320 0ustar00tinatina000000000000YAML-PP-0.021/bin#!/usr/bin/perl use strict; use warnings; use Encode; use YAML::PP::Parser; use YAML::PP::Common; my ($file) = @ARGV; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, undef, $event) = @_; print encode_utf8(YAML::PP::Common::event_to_test_suite($event)), "\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); } 37.schema-perl.t100644001750001750 2144013626002577 15036 0ustar00tinatina000000000000YAML-PP-0.021/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use Test::Deep; use Scalar::Util (); use YAML::PP; use YAML::PP::Perl; my $tests = require "$Bin/../examples/schema-perl.pm"; my $yp_perl = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!perl /], ); my $yp_perl_no_objects = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!perl -objects /], ); my $yp_loadcode = YAML::PP->new( schema => [qw/ JSON Perl +loadcode /], ); my $yp_loadcode_no_objects = YAML::PP->new( schema => [qw/ JSON Perl +loadcode -objects /], ); my $yp_perl_two = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!!perl /], ); my $yp_loadcode_two = YAML::PP->new( schema => [qw/ JSON Perl tags=!!perl +loadcode /], ); my $yp_loadcode_one_two = YAML::PP->new( schema => [qw/ JSON Perl tags=!perl+!!perl +loadcode /], ); my $yp_loadcode_two_one = YAML::PP->new( schema => [qw/ JSON Perl tags=!!perl+!perl +loadcode /], ); my $yp_perl_one_two = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!perl+!!perl /], ); my $yp_perl_two_one = YAML::PP::Perl->new( schema => [qw/ JSON Perl tags=!!perl+!perl /], ); 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"); } } }; done_testing; 13.load-anchor.t100644001750001750 103613626002577 14776 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 $data = YAML::PP->new->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"); done_testing; 32.cyclic-refs.t100644001750001750 306113626002577 15013 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 $allow2 = 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 = $allow2->load_string($yaml); cmp_ok($data->[0]->{link}->{link}->{name}, 'eq', 'A', "cyclic_refs unset (default=allow)"); $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; 23-dump-anchor.t100644001750001750 147113626002577 15027 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 10.parse-valid.t100644001750001750 304013626002577 15010 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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 87E4 8CWC 8UDB 9MMW CN3R CT4Q DFF7 G5U8 KZN9 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ /; 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; data000755001750001750 013626002577 12751 5ustar00tinatina000000000000YAML-PP-0.021/tsimple.yaml100644001750001750 2213626002577 15220 0ustar00tinatina000000000000YAML-PP-0.021/t/data--- a: 1 --- b: 2 i032000755001750001750 013626002577 14143 5ustar00tinatina000000000000YAML-PP-0.021/t/invalid===100644001750001750 4313626002577 14531 0ustar00tinatina000000000000YAML-PP-0.021/t/invalid/i032Invalid characters in Verbatim Tag examples000755001750001750 013626002577 13413 5ustar00tinatina000000000000YAML-PP-0.021schemas.pl100644001750001750 102213626002577 15526 0ustar00tinatina000000000000YAML-PP-0.021/examples#!/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; 40.representers.t100644001750001750 547413626002577 15342 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 46.line-endings.t100644001750001750 114613626002577 15173 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; json-numbers.pl100644001750001750 222613626002577 15471 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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-numbers.pl100644001750001750 216713626002577 15466 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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; PP000755001750001750 013626002577 13424 5ustar00tinatina000000000000YAML-PP-0.021/lib/YAMLPerl.pm100644001750001750 276513626002577 15036 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Perl; our $VERSION = '0.021'; # 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 test-suite000755001750001750 013626002577 13703 5ustar00tinatina000000000000YAML-PP-0.021README.md100644001750001750 1613626002577 15257 0ustar00tinatina000000000000YAML-PP-0.021/test-suite## Test Suite 38.schema-ixhash.t100644001750001750 135113626002577 15340 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 47.header-footer.t100644001750001750 267413626002577 15353 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 39.emitter-alias.t100644001750001750 224213626002577 15357 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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"); 41.custom.schema.t100644001750001750 60213626002577 15337 0ustar00tinatina000000000000YAML-PP-0.021/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use YAML::PP; use FindBin '$Bin'; use lib "$Bin/lib"; my $yp = YAML::PP->new( schema => [qw/ :MySchema /], ); my $data = { o1 => (bless {}, 'Class1'), }; my $yaml = $yp->dump_string($data); cmp_ok($yaml, 'eq', < 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, ); 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; } in.yaml100644001750001750 22113626002577 15236 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v014%TAG !123ab-! tag:example.com,2000:app/ --- !123ab-!foo scalar ... %TAG !pre! !prefix-%2F[]*@ --- !pre!name scalar --- !foo%2f()*@a=b&c=d scalar in.yaml100644001750001750 7113626002577 15226 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v019--- mapping: ? > key : : value ? - a - b in.yaml100644001750001750 3213626002577 15222 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v009a: - 1 - 2 - # empty b: 3 Lexer.pm100644001750001750 7045413626002577 15233 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Lexer; our $VERSION = '0.021'; # 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] } 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->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 ]); } 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"]) | \\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", '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 $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)//) { $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]\d*)([+-]?)//) { 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]\d*)?//) { 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; $current_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) { 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 }; if ($first eq "'") { my $regex = $REGEXES{SINGLEQUOTED}; if ($$yaml =~ s/\A($regex)//) { $quoted .= $1; $decoded .= $1; $decoded =~ s/''/'/g; } } else { ($quoted, $decoded) = $self->_read_doublequoted($yaml); } my $eol = ''; unless (length $$yaml) { if ($quoted =~ s/($RE_WS+)\z//) { $eol = $1; $decoded =~ s/($eol)\z//; } } 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 = ''; while (1) { my $last = 1; if ($$yaml =~ s/\A([^"\\]+)//) { $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(\\)\z//) { $quoted .= $1; $decoded .= $1; last; } last if $last; } return ($quoted, $decoded); } sub _fetch_next_tokens_directive { my ($self, $yaml, $eol) = @_; my @tokens; if ($$yaml =~ s/\A(\s*%YAML)//) { my $dir = $1; if ($$yaml =~ s/\A( )//) { $dir .= $1; if ($$yaml =~ s/\A(1\.[12]$RE_WS*)//) { $dir .= $1; push @tokens, ( YAML_DIRECTIVE => $dir, $self->line ); } else { $$yaml =~ s/\A(.*)//; $dir .= $1; my $warn = $ENV{YAML_PP_RESERVED_DIRECTIVE} || 'warn'; if ($warn eq 'warn') { warn "Found reserved directive '$dir'"; } elsif ($warn eq 'fatal') { die "Found reserved directive '$dir'"; } push @tokens, ( RESERVED_DIRECTIVE => "$dir", $self->line ); } } else { $$yaml =~ s/\A(.*)//; $dir .= $1; push @tokens, ( 'Invalid directive' => $dir, $self->line ); push @tokens, ( EOL => $eol, $self->line ); $self->push_tokens(\@tokens); return; } } elsif ($$yaml =~ s/\A(\s*%TAG +(!$RE_NS_WORD_CHAR*!|!) +(tag:\S+|!$RE_URI_CHAR+)$RE_WS*)//) { push @tokens, ( TAG_DIRECTIVE => $1, $self->line ); # TODO my $tag_alias = $2; my $tag_url = $3; } elsif ($$yaml =~ s/\A(\s*\A%(?:\w+).*)//) { push @tokens, ( RESERVED_DIRECTIVE => $1, $self->line ); my $warn = $ENV{YAML_PP_RESERVED_DIRECTIVE} || 'warn'; 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 ); } else { push @tokens, ( 'Invalid directive' => $$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; yamlpp5-highlight100755001750001750 102613626002577 15766 0ustar00tinatina000000000000YAML-PP-0.021/bin#!/usr/bin/perl use strict; use warnings; use YAML::PP::Highlight; use Encode; 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); print encode_utf8 $highlighted; if ($error) { die $error; } yamlpp5-load-dump100755001750001750 64113626002577 15663 0ustar00tinatina000000000000YAML-PP-0.021/bin#!/usr/bin/perl use strict; use warnings; use YAML::PP; use YAML::PP::Dumper; use Encode; my ($file) = @ARGV; my $yaml; unless ($file) { $yaml = do { local $/; }; $yaml = decode_utf8($yaml); } my $ypp = YAML::PP->new(boolean => 'JSON::PP', preserve => 1); my @docs = $file ? $ypp->load_file($file) : $ypp->load_string($yaml); my $out_yaml = $ypp->dump_string(@docs); print encode_utf8 $out_yaml; 24.double-escapes.t100644001750001750 304213626002577 15503 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; PP000755001750001750 013626002577 13667 5ustar00tinatina000000000000YAML-PP-0.021/t/lib/YAMLTest.pm100644001750001750 4501013626002577 15324 0ustar00tinatina000000000000YAML-PP-0.021/t/lib/YAML/PPpackage YAML::PP::Test; use strict; use warnings; use File::Basename qw/ dirname basename /; use Encode; use Test::More; sub new { my ($class, %args) = @_; my $self = bless { stats => {}, %args, }, $class; return $self; } sub get_tags { my ($class, %args) = @_; my %id_tags; my $dir = $args{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 $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; @ids = grep { $valid ? not -f "$test_suite_dir/$_/error" : -f "$test_suite_dir/$_/error" } @ids; if ($json) { @ids = grep { -f "$test_suite_dir/$_/in.json" } @ids; } push @dirs, map { "$test_suite_dir/$_" } @ids; closedir $dh; } 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("############################"); } 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; 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; if ($self->{linecount}) { $linecount = () = $in_yaml =~ m/\n/g; } my $out_yaml; if ($self->{out_yaml} and -f "$dir/out.yaml") { open my $fh, "<:encoding(UTF-8)", "$dir/out.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, @args) = @_; push @events, YAML::PP::Parser->event_to_test_suite(\@args); }, ); 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' ); 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; 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 $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}; } } } sub emit_yaml { my ($self, $testcase) = @_; 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 $result = {}; my $err = $@; if ($err) { diag "ERROR parsing $id"; $result->{err} = $err; return $result; } my $emit_yaml = $self->_emit_events(\@events); my @reparse_events; my @expected_reparse_events; my @ev; $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; my ($type, $info) = @args; if ($type eq 'sequence_start_event' or $type eq 'mapping_start_event') { delete $info->{style}; } push @ev, YAML::PP::Parser->event_to_test_suite(\@args); }, ); eval { $parser->parse_string($emit_yaml); }; @reparse_events = @ev; @ev = (); eval { $parser->parse_string($exp_yaml); }; @expected_reparse_events = @ev; $result = { expected_events => \@expected_reparse_events, reparse_events => \@reparse_events, emit_yaml => $emit_yaml, }; return $result; } sub _emit_events { my ($testsuite, $events) = @_; my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new(); $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') { delete $info->{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; out.yaml100644001750001750 7513626002577 15433 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v019--- mapping: ? > key : : value ? - a - b : out.yaml100644001750001750 2213626002577 15422 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v009a: - 1 - 2 - b: 3 Schema.pm100644001750001750 2517113626002577 15350 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Schema; use B; use Module::Load qw//; our $VERSION = '0.021'; # 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 = ''; if ($bool eq 'JSON::PP') { require JSON::PP; $true = \&bool_jsonpp_true; $false = \&bool_jsonpp_false; $bool_class = 'JSON::PP::Boolean'; } elsif ($bool eq 'boolean') { require boolean; $true = \&bool_booleanpm_true; $false = \&bool_booleanpm_false; $bool_class = 'boolean'; } elsif ($bool eq 'perl') { $true = \&bool_perl_true; $false = \&bool_perl_false; } else { die "Invalid value for 'boolean': '$bool'. Allowed: ('perl', 'boolean', 'JSON::PP')"; } my %representers = ( 'undef' => undef, flags => [], equals => {}, regex => [], class_equals => {}, class_matches => [], class_isa => [], scalarref => undef, refref => undef, coderef => undef, tied_equals => {}, ); 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} } 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 $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 (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 { !1 } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema - Schema for YAML::PP Reader.pm100644001750001750 301013626002577 15316 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP# ABSTRACT: Reader class for YAML::PP representing input data use strict; use warnings; package YAML::PP::Reader; our $VERSION = '0.021'; # 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; Loader.pm100644001750001750 453013626002577 15332 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP# ABSTRACT: Load YAML into data with Parser and Constructor use strict; use warnings; package YAML::PP::Loader; our $VERSION = '0.021'; # 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} || 'allow'; my $default_yaml_version = delete $args{default_yaml_version} || '1.2'; my $preserve = delete $args{preserve}; 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, ); 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; Parser.pm100644001750001750 11200613626002577 15416 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP# ABSTRACT: YAML Parser use strict; use warnings; package YAML::PP::Parser; our $VERSION = '0.021'; # 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', 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', ); 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', MAPVALUE => 'MAP', 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', FLOWMAP => 'mapping', SEQ => 'sequence', SEQ0 => 'sequence', FLOWSEQ => 'sequence', DOC => 'document', STR => 'stream', VAL => 'scalar', ALI => 'alias', MAPVALUE => '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) { $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; $self->callback->($self, 'document_start_event', { name => 'document_start_event', implicit => $implicit, $directive ? (version_directive => $self->yaml_version) : (), }); $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) = @_; 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 }, '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); $event_types->[-1] = $next_event{ $event_types->[-1] }; } 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); $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) = @_; if ($self->lexer->flowcontext) { die "Unexpected end of flow context"; } if ($self->new_node) { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } $self->remove_nodes(-1); my $event_types = $self->events; 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; } sub event_to_test_suite { my ($self, $event) = @_; if (ref $event eq 'ARRAY') { return YAML::PP::Common::event_to_test_suite($event->[1]); } return YAML::PP::Common::event_to_test_suite($event); } sub debug_events { my ($self) = @_; $self->note("EVENTS: (" . join (' | ', @{ $_[0]->events }) . ')' ); $self->debug_offset; } sub debug_offset { my ($self) = @_; $self->note( qq{OFFSET: (} . join (' | ', map { defined $_ ? sprintf "%-3d", $_ : '?' } @{ $_[0]->offset }) . qq/) level=@{[ $_[0]->level ]}]}/ ); } sub debug_yaml { my ($self) = @_; my $line = $self->lexer->line; $self->note("LINE NUMBER: $line"); my $next_tokens = $self->lexer->next_tokens; if (@$next_tokens) { $self->debug_tokens($next_tokens); } } 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 { my ($self, $colors, $text) = @_; require Term::ANSIColor; warn Term::ANSIColor::colored($colors, $text), "\n"; } sub debug_event { my ($self, $event) = @_; my $str = YAML::PP::Common::event_to_test_suite($event); require Term::ANSIColor; warn Term::ANSIColor::colored(["magenta"], "============ $str"), "\n"; } sub debug_rules { my ($self, $rules) = @_; local $Data::Dumper::Maxdepth = 2; $self->note("RULES:"); for my $rule ($rules) { if (ref $rule eq 'ARRAY') { my $first = $rule->[0]; if (ref $first eq 'SCALAR') { $self->info("-> $$first"); } else { if (ref $first eq 'ARRAY') { $first = $first->[0]; } $self->info("TYPE $first"); } } else { eval { my @keys = sort keys %$rule; $self->info("@keys"); }; } } } sub debug_tokens { my ($self, $tokens) = @_; $tokens ||= $self->tokens; require Term::ANSIColor; for my $token (@$tokens) { my $type = Term::ANSIColor::colored(["green"], sprintf "%-22s L %2d C %2d ", $token->{name}, $token->{line}, $token->{column} + 1 ); local $Data::Dumper::Useqq = 1; local $Data::Dumper::Terse = 1; require Data::Dumper; my $str = Data::Dumper->Dump([$token->{value}], ['str']); chomp $str; $str =~ s/(^.|.$)/Term::ANSIColor::colored(['blue'], $1)/ge; warn "$type$str\n"; } } 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 }; $self->scalar_event($last->[1]); } 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_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) = @_; } 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->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/) { $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_flow_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_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_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_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_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 (1\.[12])/; $self->set_yaml_version($version); $self->set_yaml_version_directive(1); } 1; Render.pm100644001750001750 646113626002577 15350 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP# ABSTRACT: YAML::PP Rendering functions use strict; use warnings; package YAML::PP::Render; our $VERSION = '0.021'; # 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'; 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; } $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; Writer.pm100644001750001750 235013626002577 15376 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP# ABSTRACT: Writer class for YAML::PP representing output data use strict; use warnings; package YAML::PP::Writer; our $VERSION = '0.021'; # 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 Dumper.pm100644001750001750 1465013626002577 15404 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Dumper; our $VERSION = '0.021'; # 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) { $args{version_directive} = $self->representer->schema->yaml_version; } $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) { 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) = @$item; if ($type eq 'alias') { $self->emitter->alias_event({ value => $node->{value} }); return; } if ($type eq 'mapping') { my $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 = 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, ); 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 (++$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; Common.pm100644001750001750 1437313626002577 15402 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Common; our $VERSION = '0.021'; # VERSION use base 'Exporter'; our @EXPORT_OK = 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 PRESERVE_ALL PRESERVE_ORDER PRESERVE_SCALAR_STYLE /; 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 => 'any', YAML_BLOCK_SEQUENCE_STYLE => 'block', YAML_FLOW_SEQUENCE_STYLE => 'flow', YAML_ANY_MAPPING_STYLE => 'any', YAML_BLOCK_MAPPING_STYLE => 'block', YAML_FLOW_MAPPING_STYLE => 'flow', PRESERVE_ALL => 1, PRESERVE_ORDER => 2, PRESERVE_SCALAR_STYLE => 4, }; 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) = @_; 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"; $string .= $properties; if (0) { # doesn't match yaml-test-suite format if ($event->{style} and $event->{style} eq YAML_FLOW_MAPPING_STYLE) { $string .= " {}"; } } } elsif ($ev eq 'sequence_start_event') { $string = "+SEQ"; $string .= $properties; if (0) { # doesn't match yaml-test-suite format if ($event->{style} and $event->{style} eq YAML_FLOW_SEQUENCE_STYLE) { $string .= " []"; } } } 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 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 /; =head1 DESCRIPTION =head1 FUNCTONS =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 yamlpp5-parse-emit100755001750001750 223113626002577 16064 0ustar00tinatina000000000000YAML-PP-0.021/bin#!/usr/bin/perl use strict; use warnings; use YAML::PP; use YAML::PP::Common; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use Data::Dumper; use Encode; my $verbose = 0; if (grep $_ eq '-v', @ARGV) { $verbose = 1; } 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); my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, undef, $event) = @_; push @events, $event; }, ); eval { $parser->parse_string($yaml); }; if ($@) { warn "Error parsing: $@"; exit 1; } my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new(); $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') { delete $event->{style}; } $emitter->$type($event); } my $out_yaml = $emitter->writer->output; print encode_utf8 $out_yaml; in.yaml100644001750001750 4213626002577 15531 0ustar00tinatina000000000000YAML-PP-0.021/t/invalid/i032! > scalar test-suite-html.pl100755001750001750 2255013626002577 16144 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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 /; 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 @valid = grep { not -f "$_/error" } @dirs; my @invalid = grep { -f "$_/error" } @dirs; 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 $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; Grammar.pm100644001750001750 11305013626002577 15550 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Grammar; our $VERSION = '0.021'; # 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' } }, 'FLOWMAP' => { '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 } }, 'FLOWSEQ' => { 'ALIAS' => { 'match' => 'cb_send_flow_alias', 'new' => 'FLOWSEQ_NEXT' }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'match' => 'cb_flow_plain', 'new' => 'FLOWSEQ_NEXT' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'new' => 'FLOWSEQ_NEXT' }, 'QUOTED' => { 'match' => 'cb_flowkey_quoted', 'new' => 'FLOWSEQ_NEXT' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'new' => 'FLOWSEQ_NEXT' } }, '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' } }, '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' => { 'ANCHOR' => { 'EOL' => { 'new' => 'NEWFLOWMAP_ANCHOR' }, 'WS' => { 'new' => 'NEWFLOWMAP_ANCHOR' }, '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' }, 'EOL' => { 'new' => 'NEWFLOWMAP' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap', 'return' => 1 }, 'QUESTION' => { 'match' => 'cb_flow_question', 'new' => 'NEWFLOWMAP' }, 'TAG' => { 'EOL' => { 'new' => 'NEWFLOWMAP_TAG' }, 'WS' => { 'new' => 'NEWFLOWMAP_TAG' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWMAP' } }, 'NEWFLOWMAP_ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWMAP' }, 'EOL' => { 'new' => 'NEWFLOWMAP_ANCHOR' }, 'TAG' => { 'EOL' => { 'new' => 'FLOWMAP' }, 'WS' => { 'new' => 'FLOWMAP' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWMAP_ANCHOR' } }, 'NEWFLOWMAP_TAG' => { 'ANCHOR' => { 'EOL' => { 'new' => 'FLOWMAP' }, 'WS' => { 'new' => 'FLOWMAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWMAP' }, 'EOL' => { 'new' => 'NEWFLOWMAP_TAG' }, 'WS' => { 'new' => 'NEWFLOWMAP_TAG' } }, 'NEWFLOWSEQ' => { 'ANCHOR' => { 'EOL' => { 'new' => 'NEWFLOWSEQ_ANCHOR' }, 'WS' => { 'new' => 'NEWFLOWSEQ_ANCHOR' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWSEQ' }, 'EOL' => { 'new' => 'NEWFLOWSEQ' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'TAG' => { 'EOL' => { 'new' => 'NEWFLOWSEQ_TAG' }, 'WS' => { 'new' => 'NEWFLOWSEQ_TAG' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWSEQ' } }, 'NEWFLOWSEQ_ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWSEQ' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_ANCHOR' }, 'TAG' => { 'EOL' => { 'new' => 'FLOWSEQ' }, 'WS' => { 'new' => 'FLOWSEQ' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWSEQ_ANCHOR' } }, 'NEWFLOWSEQ_TAG' => { 'ANCHOR' => { 'EOL' => { 'new' => 'FLOWSEQ' }, 'WS' => { 'new' => 'FLOWSEQ' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWSEQ' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_TAG' }, 'WS' => { 'new' => 'NEWFLOWSEQ_TAG' } }, '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' }, '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_flow_plain, new: FLOWSEQ_NEXT } PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: { match: cb_flowkey_quoted, new: FLOWSEQ_NEXT } QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } 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 FLOWMAP: 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 NEWFLOWSEQ: EOL: { new: NEWFLOWSEQ } WS: { new: NEWFLOWSEQ } ANCHOR: match: cb_anchor WS: { new: NEWFLOWSEQ_ANCHOR } EOL: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWSEQ_TAG } EOL: { 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: WS: { new: NEWFLOWSEQ_ANCHOR } EOL: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: FLOWSEQ } EOL: { new: FLOWSEQ } DEFAULT: { new: FLOWSEQ } NEWFLOWSEQ_TAG: WS: { new: NEWFLOWSEQ_TAG } EOL: { new: NEWFLOWSEQ_TAG } ANCHOR: match: cb_anchor WS: { new: FLOWSEQ } EOL: { new: FLOWSEQ } DEFAULT: { new: FLOWSEQ } NEWFLOWMAP_ANCHOR: WS: { new: NEWFLOWMAP_ANCHOR } EOL: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: FLOWMAP } EOL: { new: FLOWMAP } DEFAULT: { new: FLOWMAP } NEWFLOWMAP_TAG: WS: { new: NEWFLOWMAP_TAG } EOL: { new: NEWFLOWMAP_TAG } ANCHOR: match: cb_anchor WS: { new: FLOWMAP } EOL: { new: FLOWMAP } DEFAULT: { new: FLOWMAP } NEWFLOWMAP: EOL: { new: NEWFLOWMAP } WS: { new: NEWFLOWMAP } # TODO QUESTION: { match: cb_flow_question, new: NEWFLOWMAP } ANCHOR: match: cb_anchor WS: { new: NEWFLOWMAP_ANCHOR } EOL: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWMAP_TAG } EOL: { 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 } 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 } RULE_MAPKEY: QUESTION: match: cb_question EOL: { new: FULLNODE } WS: { new: FULLNODE } ALIAS: match: cb_send_alias 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 Emitter.pm100644001750001750 5311213626002577 15555 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Emitter; our $VERSION = '0.021'; # 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; sub new { my ($class, %args) = @_; my $self = bless { indent => $args{indent} || 2, writer => $args{writer}, }, $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 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->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 $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 $column = $last->{column}; my $yaml = ''; my $newline = 0; if ($last->{type} eq 'DOC') { if ($props) { $newline = 1; $yaml .= $last->{column} ? ' ' : $indent; $yaml .= "$props"; } if ($last->{newline}) { $newline = 1; } else { if ($props) { $newline = 1; } } } else { $new_indent .= ' ' x $self->indent; if ($last->{newline}) { $yaml .= "\n"; $last->{column} = 0; $last->{newline} = 0; } if ($props) { $newline = 1; } if ($last->{type} eq 'MAPVALUE') { $newline = 1; } else { $yaml .= $last->{column} ? ' ' : $indent; $last->{newline} = 0; if ($last->{type} eq 'SEQ') { $yaml .= '-'; } elsif ($last->{type} eq 'MAP') { $yaml .= "?"; $last->{type} = 'COMPLEX'; } elsif ($last->{type} eq 'COMPLEX') { $yaml .= ":"; $last->{type} = 'COMPLEXVALUE'; } else { die "Unexpected"; } } if ($props) { $yaml .= " $props"; $newline = 1; } } if (length $yaml) { $column = substr($yaml, -1) eq "\n" ? 0 : 1; } $self->writer->write($yaml); my $new_info = { index => 0, indent => $new_indent, info => $info, newline => $newline, column => $column, }; if (($info->{style} || '') eq YAML_FLOW_MAPPING_STYLE) { # $new_info->{type} = 'FLOWMAP'; $new_info->{type} = 'MAP'; } else { $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 }; my $column = $last->{column}; if ($last->{index} == 0) { my $indent = $last->{indent}; my $zero_indent = $last->{zero_indent}; if ($last->{zero_indent}) { $indent .= ' ' x $self->indent; } if ($last->{column}) { $self->writer->write(" {}\n"); } else { $self->writer->write("$indent\{}\n"); } $column = 0; } $last = $stack->[-1]; $last->{column} = $column; if ($last->{type} eq 'SEQ') { } elsif ($last->{type} eq 'MAP') { $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { $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 $writer = $self->writer; 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 $newline = 0; my $zero_indent = 0; if ($last->{type} eq 'DOC') { $newline = $last->{newline}; } else { if ($last->{newline}) { $yaml .= "\n"; $last->{column} = 0; $last->{newline} = 0; } if ($last->{type} eq 'MAPVALUE') { $zero_indent = 1; $newline = 1; } else { $yaml .= $last->{column} ? ' ' : $indent; if ($last->{type} eq 'SEQ') { $new_indent .= ' ' x $self->indent; $yaml .= "-"; } elsif ($last->{type} eq 'MAP') { $new_indent .= ' ' x $self->indent; $yaml .= "?"; $last->{type} = 'COMPLEX'; $zero_indent = 1; } elsif ($last->{type} eq 'COMPLEXVALUE') { $new_indent .= ' ' x $self->indent; $yaml .= ":"; $zero_indent = 1; } $last->{column} = 1; } } if ($props) { $newline = 1; $yaml .= $last->{column} ? ' ' : $indent; $yaml .= $props; } $self->writer->write($yaml); $last->{index}++; my $column = $last->{column}; if (length $yaml) { $column = substr($yaml, -1) eq "\n" ? 0 : 1; } my $new_info = { index => 0, indent => $new_indent, info => $info, zero_indent => $zero_indent, newline => $newline, column => $column, }; if (($info->{style} || '') eq YAML_FLOW_SEQUENCE_STYLE) { $new_info->{type} = 'FLOWSEQ'; } else { $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 }; my $column = $last->{column};; if ($last->{index} == 0) { my $indent = $last->{indent}; my $zero_indent = $last->{zero_indent}; if ($last->{zero_indent}) { $indent .= ' ' x $self->indent; } my $yaml .= $last->{column} ? ' ' : $indent; $yaml .= "[]\n"; $self->writer->write("$yaml"); $column = 0; } $last = $stack->[-1]; $last->{column} = $column; if ($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'; } elsif ($last->{type} eq 'SEQ') { } } 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 $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); my $style = $info->{style}; DEBUG and local $Data::Dumper::Useqq = 1; $value = '' unless defined $value; if (not $style and $value eq '') { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } $style ||= YAML_PLAIN_SCALAR_STYLE; my $first = substr($value, 0, 1); # no control characters anywhere if ($style ne YAML_DOUBLE_QUOTED_SCALAR_STYLE and $value =~ m/[$control_re]/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($style eq 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 eq YAML_LITERAL_SCALAR_STYLE or $style eq YAML_FOLDED_SCALAR_STYLE) { } elsif ($style eq YAML_PLAIN_SCALAR_STYLE) { if ($value =~ m/[$escape_re_without_lb]/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value eq "\n") { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/\n/) { $style = YAML_LITERAL_SCALAR_STYLE; } elsif ($forbidden_first{ $first }) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif (substr($value, 0, 3) =~ m/^---/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif (substr($value, 0, 2) =~ 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}]/) { # TODO exclude ,[]{} in flow collections $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } else { $style = YAML_PLAIN_SCALAR_STYLE; } } my $open_ended = 0; if ($style eq YAML_PLAIN_SCALAR_STYLE) { if ($forbidden_first_plus_space{ $first }) { if (length ($value) == 1 or substr($value, 1, 1) =~ m/^\s/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } } if (($style eq YAML_LITERAL_SCALAR_STYLE or $style eq YAML_FOLDED_SCALAR_STYLE) and $value eq '') { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } if ($style eq YAML_PLAIN_SCALAR_STYLE) { $value =~ s/\n/\n\n/g; } elsif ($style eq 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 eq YAML_LITERAL_SCALAR_STYLE) { DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$value], ['value']); my $indicators = ''; if ($value =~ m/\A\n* +/) { $indicators .= $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 eq 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 $eol = 0; my $indicators = ''; if ($value =~ m/\A\n* +/) { $indicators .= $self->indent; } if ($lines[-1] eq '') { pop @lines; $eol = 1; } else { $indicators .= '-'; } $value = ">$indicators\n"; for my $i (0 .. $#lines) { my $line = $lines[ $i ]; if (length $line) { $value .= "$indent $line\n"; } if ($i != $#lines) { $value .= "\n"; } } } 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 = ''; my $pvalue = $props; if ($props and length $value) { $pvalue .= " $value"; } elsif (length $value) { $pvalue .= $value; } my $multiline = ($style eq YAML_LITERAL_SCALAR_STYLE or $style eq YAML_FOLDED_SCALAR_STYLE); my $newline = 0; my $column = $last->{column}; 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; } } if ($last->{type} eq 'MAP') { if ($props and not length $value) { $pvalue .= ' '; } my $new_event = 'MAPVALUE'; $yaml .= $last->{column} ? ' ' : $indent; if ($multiline) { # oops, a complex key $yaml .= "? "; $new_event = 'COMPLEXVALUE'; } if (not $multiline) { $pvalue .= ":"; } $last->{type} = $new_event; } else { if ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'DOC') { } else { $yaml .= $last->{column} ? ' ' : $indent; if ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; $yaml .= ":"; } elsif ($last->{type} eq 'COMPLEX') { $yaml .= ": "; } elsif ($last->{type} eq 'SEQ') { $yaml .= "-"; } else { die "Unexpected"; } $last->{column} = 1; } if (length $pvalue) { if ($last->{column}) { $pvalue = " $pvalue"; } } if (not $multiline) { $pvalue .= "\n"; } } $yaml .= $pvalue; $column = $last->{column}; $last->{index}++; $last->{newline} = $newline; if (length $yaml) { $column = substr($yaml, -1) eq "\n" ? 0 : 1; } $last->{column} = $column; $self->writer->write($yaml); $self->{open_ended} = $open_ended; } 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 $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 ($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->writer->write("$yaml"); $last->{index}++; my $column = $last->{column}; if (length $yaml) { $column = substr($yaml, -1) eq "\n" ? 0 : 1; } $last->{column} = $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 $column = 0; my $implicit = $info->{implicit}; if ($info->{version_directive}) { if ($self->{open_ended}) { $self->writer->write("...\n"); } $self->writer->write("%YAML $info->{version_directive}\n"); $self->{open_ended} = 0; $implicit = 0; # we need --- } unless ($implicit) { $newline = 1; $self->writer->write("---"); $column = 1; } $self->set_event_stack([ { type => 'DOC', index => 0, indent => '', info => $info, newline => $newline, column => $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->writer->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; } 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 yorself. =item init Initialize =item finish =back =cut schema-perl.pm100644001750001750 543313626002577 16316 0ustar00tinatina000000000000YAML-PP-0.021/examples#!/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; test.event100644001750001750 24713626002577 15776 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v014+STR +DOC --- =VAL :scalar -DOC ... +DOC --- =VAL :scalar -DOC +DOC --- =VAL :scalar -DOC -STR test.event100644001750001750 20113626002577 15771 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v019+STR +DOC --- +MAP =VAL :mapping +MAP =VAL >key\n =VAL : =VAL : =VAL :value +SEQ =VAL :a =VAL :b -SEQ =VAL : -MAP -MAP -DOC -STR test.event100644001750001750 12713626002577 15777 0ustar00tinatina000000000000YAML-PP-0.021/t/valid/v009+STR +DOC +MAP =VAL :a +SEQ =VAL :1 =VAL :2 =VAL : -SEQ =VAL :b =VAL :3 -MAP -DOC -STR generate-grammar.pl100755001750001750 312213626002577 16264 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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; 17.load-complex-keys.t100644001750001750 261013626002577 16147 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; generate-examples.pl100644001750001750 262713626002577 16462 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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; } Highlight.pm100644001750001750 1247413626002577 16061 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Highlight; our $VERSION = '0.021'; # 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 /], ); sub ansicolored { my ($class, $tokens) = @_; 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; } $ansi .= "$highlighted\n"; 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', ); 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}; 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) { my $next = $list[ $i + 1]; if ($next->{name} eq 'EOL') { if ($str =~ m/ \z/ and $name =~ m/^(BLOCK_SCALAR_CONTENT|WS)$/) { $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. Exception.pm100644001750001750 360313626002577 16062 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Exception; our $VERSION = '0.021'; # 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; schema-ixhash.pm100644001750001750 205113626002577 16631 0ustar00tinatina000000000000YAML-PP-0.021/examples#!/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-schema.yaml100644001750001750 3732213626002577 16666 0ustar00tinatina000000000000YAML-PP-0.021/examples--- failsafe: - ['str', 'true', 'true', 'true'] - ['str', 'false', 'false', 'false'] - ['str', 'null', 'null', 'null'] - ['str', '23', '23', '23'] - ['str', '#empty', '', "''"] - ['str', '!!str true', 'true', 'true'] - ['str', '!!str false', 'false', 'false'] - ['str', '!!str null', 'null', 'null'] - ['str', '!!str 23', '23', '23'] - ['str', '!!str #empty', '', "''"] - ['str', '-0', '-0', '-0'] - ['str', '-23', '-23', '-23'] - ['str', '-3.14', '-3.14', '-3.14'] - ['str', '0', '0', '0'] - ['str', '0.0', '0.0', '0.0'] - ['str', '3.14', '3.14', '3.14'] - ['str', '3.3e+3', '3.3e+3', '3.3e+3'] json: - ['str', '#empty', '', "''"] - ['str', '!!str #empty', '', "''"] json_empty_null: - ['null', '#empty', 'null()', "null"] - ['str', '!!str #empty', '', "''"] - ['str', '~', '~', '~'] failsafe, json: - ['str', '010', '010', '010'] - ['str', '07', '07', '07'] - ['str', '00', '00', '00'] - ['str', '-.INF', '-.INF', '-.INF'] - ['str', '-.Inf', '-.Inf', '-.Inf'] - ['str', '-.inf', '-.inf', '-.inf'] - ['str', '+0', '+0', '+0'] - ['str', '+3.14', '+3.14', '+3.14'] - ['str', '+23', '+23', '+23'] - ['str', '.14', '.14', '.14'] - ['str', '.0', '.0', '.0'] - ['str', '.3e3', '.3e3', '.3e3'] - ['str', '.3e+3', '.3e+3', '.3e+3'] - ['str', '.3E-1', '.3E-1', '.3E-1'] - ['str', '+0.3e+3', '+0.3e+3', '+0.3e+3'] - ['str', '+0.3e3', '+0.3e3', '+0.3e3'] - ['str', '0011', '0011', '0011'] - ['str', '001.23', '001.23', '001.23'] - ['str', 'NULL', 'NULL', 'NULL'] - ['str', 'Null', 'Null', 'Null'] - ['str', 'FALSE', 'FALSE', 'FALSE'] - ['str', 'False', 'False', 'False'] - ['str', 'TRUE', 'TRUE', 'TRUE'] - ['str', 'True', 'True', 'True'] - ['str', '~', '~', '~'] - ['str', '.INF', '.INF', '.INF'] - ['str', '.Inf', '.Inf', '.Inf'] - ['str', '.inf', '.inf', '.inf'] - ['str', '+.INF', '+.INF', '+.INF'] - ['str', '+.Inf', '+.Inf', '+.Inf'] - ['str', '+.inf', '+.inf', '+.inf'] - ['str', '.NAN', '.NAN', '.NAN'] - ['str', '.NaN', '.NaN', '.NaN'] - ['str', '.nan', '.nan', '.nan'] - ['str', '0x0', '0x0', '0x0'] - ['str', '0x10', '0x10', '0x10'] - ['str', '0x42', '0x42', '0x42'] - ['str', '0xa', '0xa', '0xa'] - ['str', '!!str ~', '~', '~'] 'json, core': - ['float', '0.3e3', '300.0', '300.0'] - ['float', '!!float 0.3e3', '300.0', '300.0'] - ['str', '!!str 0.3e3', '0.3e3', "'0.3e3'"] core: - ['int', '0011', '11', '11'] - ['int', '!!int 0011', '11', '11'] - ['str', '!!str 0011', '0011', "'0011'"] - ['int', '0o0', '0', '0'] - ['int', '!!int 0o0', '0', '0'] - ['str', '!!str 0o0', '0o0', "'0o0'"] - ['int', '0o7', '7', '7'] - ['int', '!!int 0o7', '7', '7'] - ['str', '!!str 0o7', '0o7', "'0o7'"] - ['int', '0o10', '8', '8'] - ['int', '!!int 0o10', '8', '8'] - ['str', '!!str 0o10', '0o10', "'0o10'"] - ['float', '+0.3e3', '300.0', '300.0'] - ['float', '!!float +0.3e3', '300.0', '300.0'] - ['str', '!!str +0.3e3', '+0.3e3', "'+0.3e3'"] - ['float', '.3e3', '300.0', '300.0'] - ['float', '!!float .3e3', '300.0', '300.0'] - ['str', '!!str .3e3', '.3e3', "'.3e3'"] - ['int', '010', '10', '10'] - ['int', '07', '7', '7'] - ['int', '00', '0', '0'] - ['int', '!!int 07', '7', '7'] 'failsafe, json, core': - ['str', 'y', 'y', "y"] - ['str', 'Y', 'Y', "Y"] - ['str', 'yes', 'yes', "yes"] - ['str', 'Yes', 'Yes', "Yes"] - ['str', 'YES', 'YES', "YES"] - ['str', 'on', 'on', "on"] - ['str', 'On', 'On', "On"] - ['str', 'ON', 'ON', "ON"] - ['str', 'n', 'n', "n"] - ['str', 'N', 'N', "N"] - ['str', 'no', 'no', "no"] - ['str', 'NO', 'NO', "NO"] - ['str', 'off', 'off', "off"] - ['str', 'Off', 'Off', "Off"] - ['str', 'OFF', 'OFF', "OFF"] - ['str', '-0x30', '-0x30', '-0x30'] - ['str', '-0b101', '-0b101', '-0b101'] - ['str', '-0100_200', '-0100_200', '-0100_200'] - ['str', '-190:20:30', '-190:20:30', '-190:20:30'] - ['str', '+0100_200', '+0100_200', '+0100_200'] - ['str', '+0b100', '+0b100', '+0b100'] - ['str', '+190:20:30', '+190:20:30', '+190:20:30'] - ['str', '02_0', '02_0', '02_0'] - ['str', '0b0', '0b0', '0b0'] - ['str', '0b100_101', '0b100_101', '0b100_101'] - ['str', '0x2_0', '0x2_0', '0x2_0'] - ['str', '100_000', '100_000', '100_000'] - ['str', '190:20:30', '190:20:30', '190:20:30'] - ['str', '190:20:30.15', '190:20:30.15', '190:20:30.15'] - ['str', '85.230_15e+03', '85.230_15e+03', '85.230_15e+03'] - ['str', '85_230.15', '85_230.15', '85_230.15'] - ['str', '!!str yes', 'yes', "yes" ] - ['str', '!!str Yes', 'Yes', "Yes" ] - ['str', '!!str YES', 'YES', "YES" ] - ['str', '!!str y', 'y', "y" ] - ['str', '!!str Y', 'Y', "Y" ] failsafe, json, yaml11: - ['str', '0o0', '0o0', '0o0'] - ['str', '0o10', '0o10', '0o10'] - ['str', '0o7', '0o7', '0o7'] 'json, core, yaml11': - ['int', '0', '0', '0'] - ['int', '!!int 0', '0', '0'] - ['str', '!!str 0', '0', "'0'"] - ['int', '-0', '0', '0'] - ['int', '!!int -0', '0', '0'] - ['str', '!!str -0', '-0', "'-0'"] - ['int', '23', '23', '23'] - ['int', '!!int 23', '23', '23'] - ['str', '!!str 23', '23', "'23'"] - ['int', '-23', '-23', '-23'] - ['int', '!!int -23', '-23', '-23'] - ['str', '!!str -23', '-23', "'-23'"] - ['float', '0.0', '0.0', '0.0'] - ['float', '!!float 0.0', '0.0', '0.0'] - ['str', '!!str 0.0', '0.0', "'0.0'"] - ['float', '3.14', '3.14', '3.14'] - ['float', '!!float 3.14', '3.14', '3.14'] - ['str', '!!str 3.14', '3.14', "'3.14'"] - ['float', '-3.14', '-3.14', '-3.14'] - ['float', '!!float -3.14', '-3.14', '-3.14'] - ['str', '!!str -3.14', '-3.14', "'-3.14'"] - ['float', '3.3e+3', '3300', '3300.0'] - ['null', 'null', 'null()', "null"] - ['null', '!!null null', 'null()', 'null'] - ['str', '!!str null', 'null', "'null'"] - ['bool', 'true', 'true()', 'true'] - ['bool', '!!bool true', 'true()', 'true'] - ['str', '!!str true', 'true', "'true'"] - ['bool', 'false', 'false()', 'false'] - ['bool', '!!bool false', 'false()', 'false'] - ['str', '!!str false', 'false', "'false'"] - ['str', '!!str #empty', '', "''"] 'core, yaml11': - ['null', 'Null', 'null()', "null"] - ['null', 'NULL', 'null()', "null"] - ['null', '~', 'null()', "null"] - ['null', '#empty', 'null()', "null"] - ['null', '!!null Null', 'null()', "null"] - ['null', '!!null NULL', 'null()', "null"] - ['null', '!!null ~', 'null()', 'null'] - ['null', '!!null #empty', 'null()', "null"] - ['str', '!!str Null', 'Null', "'Null'"] - ['str', '!!str NULL', 'NULL', "'NULL'"] - ['str', '!!str ~', '~', "'~'"] - ['str', '!!str #empty', '', "''"] - ['null', '!!null', 'null()', 'null'] - ['bool', 'True', 'true()', 'true'] - ['bool', 'TRUE', 'true()', 'true'] - ['bool', '!!bool True', 'true()', 'true'] - ['bool', '!!bool TRUE', 'true()', 'true'] - ['str', '!!str True', 'True', "'True'"] - ['str', '!!str TRUE', 'TRUE', "'TRUE'"] - ['bool', 'False', 'false()', 'false'] - ['bool', 'FALSE', 'false()', 'false'] - ['bool', '!!bool False', 'false()', 'false'] - ['bool', '!!bool FALSE', 'false()', 'false'] - ['str', '!!str False', 'False', "'False'"] - ['str', '!!str FALSE', 'FALSE', "'FALSE'"] - ['int', '0x0', '0', '0'] - ['int', '!!int 0x0', '0', '0'] - ['str', '!!str 0x0', '0x0', "'0x0'"] - ['int', '0x42', '66', '66'] - ['int', '!!int 0x42', '66', '66'] - ['int', '0xa', '10', '10'] - ['int', '!!int 0xa', '10', '10'] - ['str', '!!str 0xa', '0xa', "'0xa'"] - ['int', '0x10', '16', '16'] - ['int', '!!int 0x10', '16', '16'] - ['int', '+0', '0', '0'] - ['int', '!!int +0', '0', '0'] - ['str', '!!str +0', '+0', "'+0'"] - ['int', '+23', '23', '23'] - ['int', '!!int +23', '23', '23'] - ['str', '!!str +23', '+23', "'+23'"] - ['float', '.0', '0.0', '0.0'] - ['float', '!!float .0', '0.0', '0.0'] - ['float', '.14', '0.14', '0.14'] - ['str', '!!str .0', '.0', "'.0'"] - ['float', '+3.14', '3.14', '3.14'] - ['float', '!!float 3.14', '3.14', '3.14'] - ['str', '!!str 3.14', '3.14', "'3.14'"] - ['float', '.3E-1', '0.03', '0.03'] - ['float', '!!float .3E-1', '0.03', '0.03'] - ['str', '!!str .3E-1', '.3E-1', "'.3E-1'"] - ['float', '001.23', '1.23', '1.23'] - ['float', '!!float 001.23', '1.23', '1.23'] - ['str', '!!str 001.23', '001.23', "'001.23'"] - ['float', '!!float 3.3e+3', '3300.0', '3300.0'] - ['str', '!!str 3.3e+3', '3.3e+3', "'3.3e+3'"] - ['float', '+0.3e+3', '300.0', '300.0'] - ['float', '!!float +0.3e+3', '300.0', '300.0'] - ['str', '!!str +0.3e+3', '+0.3e+3', "'+0.3e+3'"] - ['float', '.3e+3', '300.0', '300.0'] - ['float', '!!float .3e+3', '300.0', '300.0'] - ['str', '!!str .3e+3', '.3e+3', "'.3e+3'"] - ['float-inf', '.inf', 'inf()', '.inf'] - ['float-inf', '!!float .inf', 'inf()', '.inf'] - ['str', '!!str .inf', '.inf', "'.inf'"] - ['float-inf', '.Inf', 'inf()', '.inf'] - ['float-inf', '!!float .Inf', 'inf()', '.inf'] - ['str', '!!str .Inf', '.Inf', "'.Inf'"] - ['float-inf', '.INF', 'inf()', '.inf'] - ['float-inf', '!!float .INF', 'inf()', '.inf'] - ['str', '!!str .INF', '.INF', "'.INF'"] - ['float-inf', '+.inf', 'inf()', '.inf'] - ['float-inf', '!!float +.inf', 'inf()', '.inf'] - ['float-inf', '+.Inf', 'inf()', '.inf'] - ['float-inf', '!!float +.Inf', 'inf()', '.inf'] - ['float-inf', '+.INF', 'inf()', '.inf'] - ['float-inf', '!!float +.INF', 'inf()', '.inf'] - ['str', '!!str +.inf', '+.inf', "'+.inf'"] - ['str', '!!str +.Inf', '+.Inf', "'+.Inf'"] - ['str', '!!str +.INF', '+.INF', "'+.INF'"] - ['float-inf', '-.inf', 'inf-neg()', '-.inf'] - ['float-inf', '!!float -.inf', 'inf-neg()', '-.inf'] - ['str', '!!str -.inf', '-.inf', "'-.inf'"] - ['float-inf', '-.Inf', 'inf-neg()', '-.inf'] - ['float-inf', '!!float -.Inf', 'inf-neg()', '-.inf'] - ['str', '!!str -.Inf', '-.Inf', "'-.Inf'"] - ['float-inf', '-.INF', 'inf-neg()', '-.inf'] - ['float-inf', '!!float -.INF', 'inf-neg()', '-.inf'] - ['str', '!!str -.INF', '-.INF', "'-.INF'"] - ['float-nan', '.nan', 'nan()', '.nan'] - ['float-nan', '!!float .nan', 'nan()', '.nan'] - ['str', '!!str .nan', '.nan', "'.nan'"] - ['float-nan', '.NaN', 'nan()', '.nan'] - ['float-nan', '!!float .NaN', 'nan()', '.nan'] - ['str', '!!str .NaN', '.NaN', "'.NaN'"] - ['float-nan', '.NAN', 'nan()', '.nan'] - ['float-nan', '!!float .NAN', 'nan()', '.nan'] - ['str', '!!str .NAN', '.NAN', "'.NAN'"] yaml11: - ['bool', 'y', 'true()', "true"] - ['bool', 'Y', 'true()', "true"] - ['bool', 'yes', 'true()', "true"] - ['bool', 'Yes', 'true()', "true"] - ['bool', 'YES', 'true()', "true"] - ['bool', 'on', 'true()', "true"] - ['bool', 'On', 'true()', "true"] - ['bool', 'ON', 'true()', "true"] - ['bool', 'n', 'false()', "false"] - ['bool', 'N', 'false()', "false"] - ['bool', 'no', 'false()', "false"] - ['bool', 'N', 'false()', "false"] - ['bool', 'NO', 'false()', "false"] - ['bool', 'off', 'false()', "false"] - ['bool', 'Off', 'false()', "false"] - ['bool', 'OFF', 'false()', "false"] - ['bool', '!!bool y', 'true()', "true"] - ['bool', '!!bool Y', 'true()', "true"] - ['bool', '!!bool yes', 'true()', "true"] - ['bool', '!!bool Yes', 'true()', "true"] - ['bool', '!!bool YES', 'true()', "true"] - ['bool', '!!bool on', 'true()', "true"] - ['bool', '!!bool On', 'true()', "true"] - ['bool', '!!bool ON', 'true()', "true"] - ['bool', '!!bool n', 'false()', "false"] - ['bool', '!!bool N', 'false()', "false"] - ['bool', '!!bool no', 'false()', "false"] - ['bool', '!!bool N', 'false()', "false"] - ['bool', '!!bool NO', 'false()', "false"] - ['bool', '!!bool off', 'false()', "false"] - ['bool', '!!bool Off', 'false()', "false"] - ['bool', '!!bool OFF', 'false()', "false"] - ['str', '!!str y', 'y', "'y'" ] - ['str', '!!str Y', 'Y', "'Y'" ] - ['str', '!!str yes', 'yes', "'yes'" ] - ['str', '!!str Yes', 'Yes', "'Yes'" ] - ['str', '!!str YES', 'YES', "'YES'" ] - ['str', '!!str on', 'on', "'on'" ] - ['str', '!!str On', 'On', "'On'" ] - ['str', '!!str ON', 'ON', "'ON'" ] - ['str', '!!str n', 'n', "'n'" ] - ['str', '!!str N', 'N', "'N'" ] - ['str', '!!str no', 'no', "'no'" ] - ['str', '!!str N', 'N', "'N'" ] - ['str', '!!str NO', 'NO', "'NO'" ] - ['str', '!!str off', 'off', "'off'" ] - ['str', '!!str Off', 'Off', "'Off'" ] - ['str', '!!str OFF', 'OFF', "'OFF'" ] - ['int', '00', '0', '0'] - ['int', '!!int 00', '0', '0'] - ['str', '!!str 00', '00', "'00'"] - ['int', '07', '7', '7'] - ['int', '!!int 07', '7', '7'] - ['str', '!!str 07', '07', "'07'"] - ['int', '010', '8', '8'] - ['int', '!!int 010', '8', '8'] - ['str', '!!str 010', '010', "'010'"] - ['int', '02_0', '16', '16'] - ['int', '!!int 02_0', '16', '16'] - ['str', '!!str 02_0', '02_0', "'02_0'"] - ['int', '+0100_200', '32896', '32896'] - ['int', '!!int +0100_200', '32896', '32896'] - ['str', '!!str +0100_200', '+0100_200', "'+0100_200'"] - ['int', '-0100_200', '-32896', '-32896'] - ['int', '!!int -0100_200', '-32896', '-32896'] - ['str', '!!str -0100_200', '-0100_200', "'-0100_200'"] - ['int', '100_000', '100000', '100000'] - ['int', '!!int 100_000', '100000', '100000'] - ['str', '!!str 100_000', '100_000', "'100_000'"] - ['int', '!!int 0011', '9', '9'] - ['int', '0b0', '0', '0'] - ['int', '!!int 0b0', '0', '0'] - ['str', '!!str 0b0', '0b0', "'0b0'"] - ['int', '0b100_101', '37', '37'] - ['int', '!!int 0b100_101', '37', '37'] - ['str', '!!str 0b100_101', '0b100_101', "'0b100_101'"] - ['int', '+0b100', '4', '4'] - ['int', '!!int +0b100', '4', '4'] - ['str', '!!str +0b100', '+0b100', "'+0b100'"] - ['int', '-0b101', '-5', '-5'] - ['int', '!!int -0b101', '-5', '-5'] - ['str', '!!str -0b101', '-0b101', "'-0b101'"] - ['int', '0x2_0', '32', '32'] - ['int', '!!int 0x2_0', '32', '32'] - ['str', '!!str 0x2_0', '0x2_0', "'0x2_0'"] - ['int', '-0x30', '-48', '-48'] - ['int', '!!int -0x30', '-48', '-48'] - ['str', '!!str -0x30', '-0x30', "'-0x30'"] - ['str', '.3e3', '.3e3', '.3e3'] - ['str', '+0.3e3', '+0.3e3', '+0.3e3'] - ['float', '85.230_15e+03', '85230.15', '85230.15'] - ['float', '!!float 85.230_15e+03', '85230.15', '85230.15'] - ['str', '!!str 85.230_15e+03', '85.230_15e+03', "'85.230_15e+03'"] - ['float', '85_230.15', '85230.15', '85230.15'] - ['float', '!!float 85_230.15', '85230.15', '85230.15'] - ['str', '!!str 85_230.15', '85_230.15', "'85_230.15'"] - ['int', '190:20:30', '685230', '685230'] - ['int', '!!int 190:20:30', '685230', '685230'] - ['str', '!!str 190:20:30', '190:20:30', "'190:20:30'"] - ['int', '+190:20:30', '685230', '685230'] - ['int', '!!int +190:20:30', '685230', '685230'] - ['str', '!!str +190:20:30', '+190:20:30', "'+190:20:30'"] - ['int', '-190:20:30', '-685230', '-685230'] - ['int', '!!int -190:20:30', '-685230', '-685230'] - ['str', '!!str -190:20:30', '-190:20:30', "'-190:20:30'"] - ['float', '190:20:30.15', '685230.15', '685230.15'] - ['float', '!!float 190:20:30.15', '685230.15', '685230.15'] - ['str', '!!str 190:20:30.15', '190:20:30.15', "'190:20:30.15'"] - ['int', '0011', '9', '9'] failsafe, yaml11: - ['str', '0.3e3', '0.3e3', '0.3e3'] 'failsafe, json, core, yaml11': - ['str', '" "', ' ', "' '"] - ['str', '"@array"', '@array', "'@array'"] - ['str', '"%percent"', '%percent', "'%percent'"] - ['str', '"`cmd`"', '`cmd`', "'`cmd`'"] - ['str', '"!string"', '!string', "'!string'"] - ['str', '"*string"', '*string', "'*string'"] - ['str', '"string:"', 'string:', "'string:'"] - ['str', '"string "', 'string ', "'string '"] - ['str', '"string\t"', "string\t", '"string\t"'] - ['str', '"string\r"', "string\r", '"string\r"'] - ['str', '"key: val"', 'key: val', "'key: val'"] - ['str', '"-"', '-', "'-'"] - ['str', '"- "', '- ', "'- '"] - ['str', '"-\n"', "-\n", "|\n -"] - ['str', '"-\t"', "-\t", '"-\t"'] - ['str', '"- a"', '- a', "'- a'"] - ['str', '":"', ':', "':'"] - ['str', '"{"', '{', "'{'"] - ['str', '"}"', '}', "'}'"] - ['str', '"["', '[', "'['"] - ['str', '"]"', ']', "']'"] - ['str', '","', ',', "','"] - ['str', '"?"', '?', "'?'"] - ['str', '"? "', '? ', "'? '"] - ['str', '"? a"', '? a', "'? a'"] - ['str', '"#"', '#', "'#'"] - ['str', '"no comment #"', 'no comment #', "'no comment #'"] - ['str', '"# "', '# ', "'# '"] - ['str', '"no #comment"', 'no #comment', "'no #comment'"] - ['str', '"|"', '|', "'|'"] - ['str', '">"', '>', "'>'"] - ['str', '"''"', '''', "''''"] - ['str', '"\""', '"', "'\"'"] - ['str', '"foo\nbar"', "foo\nbar", "|-\n foo\n bar"] - ['str', '"x\n\"y\\z"', "x\n\"y\\z", "|-\n x\n \"y\\z"] - ['str', '"no comment#"', 'no comment#', "no comment#"] - ['str', 'foo\bar', 'foo\bar', 'foo\bar'] - ['str', '^string', '^string', '^string'] - ['str', 'str"ing', 'str"ing', 'str"ing'] 34.emit-scalar-styles.t100644001750001750 317313626002577 16340 0ustar00tinatina000000000000YAML-PP-0.021/t#!/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; 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 = qw/ : " ' | /; 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']); $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; my $data = $yp->load_string($yaml); cmp_ok($data->[0], 'eq', $input, "style $style - $label") or do { diag ">>$yaml<<\n"; diag(Data::Dumper->Dump([$data], ['data'])); diag(Data::Dumper->Dump([$yaml], ['yaml'])); }; } }; } done_testing; test.event100644001750001750 1213626002577 16256 0ustar00tinatina000000000000YAML-PP-0.021/t/invalid/i032+STR +DOC Constructor.pm100644001750001750 2436113626002577 16475 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP# ABSTRACT: Construct data structure from Parser Events use strict; use warnings; package YAML::PP::Constructor; our $VERSION = '0.021'; # VERSION use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ALL PRESERVE_ORDER PRESERVE_SCALAR_STYLE /; use Scalar::Util qw/ reftype /; 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 $preserve = delete $args{preserve} || 0; if ($preserve == PRESERVE_ALL) { $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE; } my $cyclic_refs = delete $args{cyclic_refs} || 'allow'; 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, }, $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 document_start_event { my ($self, $event) = @_; my $stack = $self->stack; if ($event->{version_directive}) { my $version = $event->{version_directive}; 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; if ($self->preserve_order and not tied(%$data)) { tie %$data, 'YAML::PP::Preserve::Hash'; } push @$stack, $ref; if (defined(my $anchor = $event->{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) = @_; 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); } $$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; push @$stack, $ref; if (defined(my $anchor = $event->{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})) { $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); if (defined (my $name = $event->{anchor})) { $self->anchors->{ $name } = { data => $value, finished => 1 }; } my $last = $self->stack->[-1]; if ($self->preserve_scalar_style and not ref $value) { $value = YAML::PP::Preserve::Scalar->new( value => $value, style => $event->{style}, tag => $event->{tag}, ); } 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') { die "Found cyclic ref"; } if ($cyclic_refs eq 'warn') { $anchor = { data => undef }; warn "Found cyclic ref"; } elsif ($cyclic_refs eq 'ignore') { $anchor = { data => undef }; } } } $value = $anchor->{data}; } 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; 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 Representer.pm100644001750001750 1315613626002577 16446 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPuse strict; use warnings; package YAML::PP::Representer; our $VERSION = '0.021'; # 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_ALL PRESERVE_ORDER PRESERVE_SCALAR_STYLE /; use B; sub new { my ($class, %args) = @_; my $preserve = delete $args{preserve} || 0; if ($preserve == PRESERVE_ALL) { $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE; } 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 represent_node { my ($self, $node) = @_; if ($self->preserve_scalar_style) { if (ref $node->{value} eq 'YAML::PP::Preserve::Scalar') { my $value = $node->{value}->value; if ($node->{value}->style != YAML_FOLDED_SCALAR_STYLE) { $node->{style} = $node->{value}->style; } # $node->{tag} = $node->{value}->tag; $node->{value} = $value; } } $node->{reftype} = reftype($node->{value}); if (ref $node->{value}) { $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 }; } } return [ mapping => $node ]; } elsif ($node->{reftype} eq 'ARRAY') { unless (defined $node->{items}) { @{ $node->{items} } = @{ $node->{data} }; } return [ sequence => $node ]; } elsif ($node->{reftype}) { die "Reftype $node->{reftype} not implemented"; } else { unless (defined $node->{items}) { $node->{items} = [$node->{data}]; } return [ scalar => $node ]; } } 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; } } 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); } $node->{data} = $node->{value}; } 1; Writer000755001750001750 013626002577 14700 5ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPFile.pm100644001750001750 345713626002577 16266 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Writeruse strict; use warnings; package YAML::PP::Writer::File; our $VERSION = '0.021'; # 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 Schema000755001750001750 013626002577 14624 5ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPJSON.pm100644001750001750 1360413626002577 16117 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::JSON; our $VERSION = '0.021'; # 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) { $schema->add_representer( class_equals => $schema->bool_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 Schwma: 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 Core.pm100644001750001750 740313626002577 16216 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Core; our $VERSION = '0.021'; # 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) { $schema->add_representer( class_equals => $schema->bool_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 Schwma: 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 Perl.pm100644001750001750 5056513626002577 16257 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Perl; our $VERSION = '0.021'; # 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}; $loadcode ||= 0; my $classes = $args{classes}; my $self = bless { tags => $tags, loadcode => $loadcode, classes => $classes, }, $class; } sub register { my ($self, %args) = @_; my $schema = $args{schema}; my $tags; my $loadcode = 0; my $classes; if (blessed($self)) { $tags = $self->{tags}; $loadcode = $self->{loadcode}; $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; } } $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 = ''; } } 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; } 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; 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; 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} = $self->represent_code($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} = $self->represent_code($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_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); } 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. Typeglobs are not implemented yet. 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, ); 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 =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 object Does the same as C: my $object = YAML::PP::Schema::Perl->object($data, $class); =back =cut include000755001750001750 013626002577 14374 5ustar00tinatina000000000000YAML-PP-0.021/t/datainclude.yaml100644001750001750 7613626002577 17006 0ustar00tinatina000000000000YAML-PP-0.021/t/data/include--- - !include include1.yaml - !include include2.yaml - item3 generate-schema-html.pl100644001750001750 1334613626002577 17066 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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/../examples/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 $key (sort keys %$data) { my @schemas = split m/ *, */, $key; my $examples = $data->{ $key }; for my $example (@$examples) { my ($type, $in, $perl, $out) = @$example; for my $schema (@schemas) { $type =~ s/^float-//; my $perlcode = format_perl($type, $perl); $examples{ $in }->{ $schema } = [ $type, $perl, $out, $perlcode ]; } } } my @keys = qw/ failsafe json core yaml11 /; for my $input (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; } Merge.pm100644001750001750 454413626002577 16370 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Merge; our $VERSION = '0.021'; # 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. =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut include2.yaml100644001750001750 5013626002577 17060 0ustar00tinatina000000000000YAML-PP-0.021/t/data/include--- - include2 - !include include3.yaml include1.yaml100644001750001750 1513626002577 17060 0ustar00tinatina000000000000YAML-PP-0.021/t/data/include--- include1 include3.yaml100644001750001750 1513626002577 17062 0ustar00tinatina000000000000YAML-PP-0.021/t/data/include--- include3 Type000755001750001750 013626002577 14345 5ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PPMergeKey.pm100644001750001750 60113626002577 16530 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Typeuse strict; use warnings; package YAML::PP::Type::MergeKey; our $VERSION = '0.021'; # 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 Binary.pm100644001750001750 503413626002577 16550 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Binary; our $VERSION = '0.021'; # 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 circular2.yaml100644001750001750 4613626002577 17246 0ustar00tinatina000000000000YAML-PP-0.021/t/data/include--- included: !include circular1.yaml circular1.yaml100644001750001750 4613626002577 17245 0ustar00tinatina000000000000YAML-PP-0.021/t/data/include--- included: !include circular2.yaml YAML1_1.pm100644001750001750 1457213626002577 16416 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::YAML1_1; our $VERSION = '0.021'; # 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-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) { $schema->add_representer( class_equals => $schema->bool_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 Include.pm100644001750001750 1454213626002577 16733 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Include; our $VERSION = '0.021'; # 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 => ['JSON', $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 => ['JSON', $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 Failsafe.pm100644001750001750 134513626002577 17037 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Failsafe; our $VERSION = '0.021'; # 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 schema-test-yaml-modules.pl100644001750001750 374013626002577 17674 0ustar00tinatina000000000000YAML-PP-0.021/etc#!/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/../examples/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 $key (sort keys %$data) { my @schemas = split m/ *, */, $key; my $examples = $data->{ $key }; for my $example (@$examples) { my ($type, $in) = @$example; for my $mod (qw/ YAML YAML::XS YAML::Syck /) { my $out = $output{ $in }->{ $mod } ||= {}; my $output; my $load = $mod->can("Load"); my $dump = $mod->can("Dump"); my $data = eval { $load->("--- $in") }; 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'; } Tie000755001750001750 013626002577 15345 5ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/SchemaIxHash.pm100644001750001750 463013626002577 17232 0ustar00tinatina000000000000YAML-PP-0.021/lib/YAML/PP/Schema/Tieuse strict; use warnings; package YAML::PP::Schema::Tie::IxHash; our $VERSION = '0.021'; # 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-schema-modules.yaml100644001750001750 11702413626002577 20352 0ustar00tinatina000000000000YAML-PP-0.021/examples--- '!!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': YAML: dump: ~ type: 'null' YAML::Syck: dump: ~ type: 'null' YAML::XS: dump: ~ type: 'null' '!!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 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 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' external-vars-templates000755001750001750 013626002577 20202 5ustar00tinatina000000000000YAML-PP-0.021/examplesext.pl100644001750001750 311013626002577 21472 0ustar00tinatina000000000000YAML-PP-0.021/examples/external-vars-templates#!/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; } K858000755001750001750 013626002577 20317 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20703 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K858Spec Example 8.6. Empty Scalar Chomping NJ66000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NJ66Multiline plain flow mapping key RXY3000755001750001750 013626002577 20425 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 21016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RXY3Invalid document-end marker in single quoted string UGM3000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UGM3Spec Example 2.27. Invoice BD7L000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BD7LInvalid mapping after sequence SY6V000755001750001750 013626002577 20427 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 21015 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SY6VAnchor before sequence entry on same line BU8L000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BU8LNode Anchor and Tag on Seperate Lines HU3P000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HU3PInvalid Mapping in plain scalar HMK4000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6013626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMK4Spec Example 2.16. Indentation determines scope 2JQS000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2JQSBlock Mapping with Missing Keys 8MK2000755001750001750 013626002577 20341 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8MK2Explicit Non-Specific Tag 4V8U000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4V8UPlain scalar with backslashes CC74000755001750001750 013626002577 20320 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20711 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CC74Spec Example 6.20. Tag Handles 5U3A000755001750001750 013626002577 20335 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5U3ASequence on same Line as Mapping Key 9WXW000755001750001750 013626002577 20436 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 21027 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9WXWSpec Example 6.18. Primary Tag Handle TS54000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2413626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TS54Folded Block Scalar 2XXW000755001750001750 013626002577 20430 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 21015 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2XXWSpec Example 2.25. Unordered Sets CQ3W000755001750001750 013626002577 20375 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CQ3WDouble quoted string without closing quote 7W2P000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7W2PBlock Mapping with Missing Values W9L4000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W9L4Literal block scalar with more spaces in first line XW4D000755001750001750 013626002577 20406 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XW4DVarious Trailing Comments 3ALJ000755001750001750 013626002577 20351 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3ALJBlock Sequence in Block Sequence 54T7000755001750001750 013626002577 20323 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 1513626002577 20710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/54T7Flow Mapping JHB9000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JHB9Spec Example 2.7. Two Documents in a Stream 3MYT000755001750001750 013626002577 20414 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6713626002577 21010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3MYTPlain Scalar looking like key, comment, anchor and tag SU74000755001750001750 013626002577 20362 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU74Anchor and alias as mapping key 4UYU000755001750001750 013626002577 20426 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 21016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4UYUColon in Double Quoted String 9HCY000755001750001750 013626002577 20374 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9HCYNeed document footer before directives 74H7000755001750001750 013626002577 20311 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20674 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/74H7Tags in Implicit Mapping LHL4000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 1413626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LHL4Invalid tag KK5P000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6013626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KK5PVarious combinations of explicit block mappings LE5A000755001750001750 013626002577 20346 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LE5ASpec Example 7.24. Flow Nodes XV9V000755001750001750 013626002577 20434 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 21023 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XV9VSpec Example 6.5. Empty Lines [1.3] F2C7000755001750001750 013626002577 20321 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2113626002577 20703 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F2C7Anchors and Tags J7VC000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7VCEmpty Lines Between Mapping Elements 5MUD000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5MUDColon and adjacent value on next line 2CMS000755001750001750 013626002577 20364 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4313626002577 20752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2CMSInvalid mapping in plain multiline 4FJ6000755001750001750 013626002577 20331 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 20720 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4FJ6Nested implicit complex keys 7MNF000755001750001750 013626002577 20367 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 1613626002577 20755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7MNFMissing colon SKE5000755001750001750 013626002577 20367 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SKE5Anchor before zero indented sequence 6BCT000755001750001750 013626002577 20356 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BCTSpec Example 6.3. Separation Spaces T26H000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T26HSpec Example 8.8. Literal Content [1.3] 93JH000755001750001750 013626002577 20335 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93JHBlock Mappings in Block Sequence S4GJ000755001750001750 013626002577 20367 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4GJInvalid text after block scalar indicator 9CWY000755001750001750 013626002577 20413 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9CWYInvalid scalar at the end of mapping 4ABK000755001750001750 013626002577 20341 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6013626002577 20726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ABKSpec Example 7.17. Flow Mapping Separate Values YD5X000755001750001750 013626002577 20411 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/YD5XSpec Example 2.5. Sequence of Sequences 5KJE000755001750001750 013626002577 20356 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5KJESpec Example 7.13. Flow Sequence 9BXH000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6613626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9BXHMultiline doublequoted flow mapping key without value FH7J000755001750001750 013626002577 20356 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FH7JTags on Empty Scalars HS5T000755001750001750 013626002577 20403 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HS5TSpec Example 7.12. Plain Lines CPZ3000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CPZ3Doublequoted scalar starting with a tab 9MMW000755001750001750 013626002577 20411 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6513626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MMWSpec Example 7.21. Single Pair Implicit Entries [1.3 S98Z000755001750001750 013626002577 20375 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6613626002577 20770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S98ZBlock scalar with more spaces than first content line 6HB6000755001750001750 013626002577 20325 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6HB6Spec Example 6.1. Indentation Spaces R4YG000755001750001750 013626002577 20405 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5613626002577 20777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R4YGSpec Example 8.2. Block Indentation Indicator SR86000755001750001750 013626002577 20362 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2213626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SR86Anchor plus Alias Q5MG000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q5MGTab at beginning of line followed by a flow mapping FUP4000755001750001750 013626002577 20376 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FUP4Flow Sequence in Flow Sequence C2SP000755001750001750 013626002577 20367 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2SPFlow Mapping Key on two lines 93WF000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93WFSpec Example 6.6. Line Folding [1.3] S4JQ000755001750001750 013626002577 20401 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4JQSpec Example 6.28. Non-Specific Tags MZX3000755001750001750 013626002577 20421 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 21010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MZX3Non-Specific Tags on Scalars 87E4000755001750001750 013626002577 20307 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5613626002577 20701 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/87E4Spec Example 7.8. Single Quoted Implicit Keys 26DV000755001750001750 013626002577 20341 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/26DVWhitespace around colon in mappings M5DY000755001750001750 013626002577 20376 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5DYSpec Example 2.11. Mapping between Sequences 5BVJ000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5BVJSpec Example 5.7. Block Scalar Indicators H2RW000755001750001750 013626002577 20402 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 1413626002577 20766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H2RWBlank lines MYW6000755001750001750 013626002577 20422 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2313626002577 21006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MYW6Block Scalar Strip DC7X000755001750001750 013626002577 20365 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DC7XVarious trailing tabs J7PZ000755001750001750 013626002577 20412 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 21001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7PZSpec Example 2.26. Ordered Mappings G4RS000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G4RSSpec Example 2.17. Quoted Scalars 9C9N000755001750001750 013626002577 20342 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 20731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9C9NWrong indented flow sequence 2EBW000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2EBWAllowed characters in keys QLJ7000755001750001750 013626002577 20375 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7613626002577 20771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QLJ7Tag shorthand used in documents but only defined in the first 4HVU000755001750001750 013626002577 20406 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4HVUWrong indendation in Sequence DWX9000755001750001750 013626002577 20413 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 21000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DWX9Spec Example 8.8. Literal Content 3R3P000755001750001750 013626002577 20347 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3R3PSingle block sequence with anchor 7Z25000755001750001750 013626002577 20327 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7Z25Bare document after document end marker PBJ2000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5713626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PBJ2Spec Example 2.3. Mapping Scalars to Sequences JY7Z000755001750001750 013626002577 20423 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 21012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JY7ZTrailing content that looks like a mapping G5U8000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G5U8Plain dashes in flow sequence 4CQQ000755001750001750 013626002577 20370 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4CQQSpec Example 2.18. Multi-line Flow Scalars 4ZYM000755001750001750 013626002577 20423 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 21006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ZYMSpec Example 6.4. Line Prefixes 5LLU000755001750001750 013626002577 20401 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7013626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5LLUBlock scalar with wrong indented line after spaces only 6BFJ000755001750001750 013626002577 20347 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BFJMapping, key and flow sequence item anchors L94M000755001750001750 013626002577 20345 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L94MTags in Explicit Mapping DMG6000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DMG6Wrong indendation in Map EB22000755001750001750 013626002577 20312 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20703 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EB22Missing document-end marker before directive 6JTT000755001750001750 013626002577 20407 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 21000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JTTFlow sequence without closing bracket LQZ7000755001750001750 013626002577 20415 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5613626002577 21007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LQZ7Spec Example 7.4. Double Quoted Implicit Keys ZL4Z000755001750001750 013626002577 20423 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2713626002577 21013 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZL4ZInvalid nested mapping HRE5000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5713626002577 20756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HRE5Double quoted scalar with escaped single quote ZH7C000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2313626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZH7CAnchors in Mapping 4GC6000755001750001750 013626002577 20323 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20712 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4GC6Spec Example 7.7. Single Quoted Characters TL85000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TL85Spec Example 6.8. Flow Folding M7NX000755001750001750 013626002577 20411 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3013626002577 20773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7NXNested flow collections X8DW000755001750001750 013626002577 20412 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 21002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X8DWExplicit key and value seperated by comment SU5Z000755001750001750 013626002577 20426 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6513626002577 21020 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU5ZComment without whitespace after doublequoted scalar Q8AD000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6213626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q8ADSpec Example 7.5. Double Quoted Line Breaks [1.3] ZWK4000755001750001750 013626002577 20417 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6513626002577 21011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZWK4Key with anchor after missing explicit mapping value 6WPF000755001750001750 013626002577 20402 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WPFSpec Example 6.8. Flow Folding [1.3] WZ62000755001750001750 013626002577 20370 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/WZ62Spec Example 7.2. Empty Content ZK9H000755001750001750 013626002577 20405 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZK9HNested top level flow mapping 6M2F000755001750001750 013626002577 20332 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20717 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6M2FAliases in Explicit Block Mapping J9HZ000755001750001750 013626002577 20404 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 20775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J9HZSpec Example 2.9. Single Document with Two Comments LX3P000755001750001750 013626002577 20406 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LX3PImplicit Flow Mapping Key on one line X4QW000755001750001750 013626002577 20423 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7013626002577 21011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X4QWComment without whitespace after block scalar indicator RHX7000755001750001750 013626002577 20410 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RHX7YAML directive without document end marker KZN9000755001750001750 013626002577 20413 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6013626002577 21000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KZN9Spec Example 7.21. Single Pair Implicit Entries 7TMG000755001750001750 013626002577 20376 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7TMGComment in flow sequence before comma MXS3000755001750001750 013626002577 20412 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MXS3Flow Mapping in Block Sequence F3CP000755001750001750 013626002577 20353 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F3CPNested flow collections on one line C4HZ000755001750001750 013626002577 20370 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C4HZSpec Example 2.24. Global Tags FRK4000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5613626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FRK4Spec Example 7.3. Completely Empty Flow Nodes P2EQ000755001750001750 013626002577 20367 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6313626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2EQInvalid sequene item on same line as previous item Q88A000755001750001750 013626002577 20341 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q88ASpec Example 7.23. Flow Content 236B000755001750001750 013626002577 20274 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20662 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/236BInvalid value after mapping 6PBE000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6113626002577 20742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6PBEZero-indented sequences in explicit mapping keys ZF4X000755001750001750 013626002577 20413 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 21004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZF4XSpec Example 2.6. Mapping of Mappings 2AUY000755001750001750 013626002577 20400 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2713626002577 20770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2AUYTags in Block Sequence RZP5000755001750001750 013626002577 20420 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZP5Various Trailing Comments [1.3] 52DL000755001750001750 013626002577 20326 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20711 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/52DLExplicit Non-Specific Tag [1.3] AZW3000755001750001750 013626002577 20404 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2513626002577 20772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZW3Lookahead test cases J5UC000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J5UCMultiple Pair Block Mapping D88J000755001750001750 013626002577 20335 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D88JFlow Sequence in Block Mapping DHP8000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 1613626002577 20751 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DHP8Flow Sequence Q9WF000755001750001750 013626002577 20406 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q9WFSpec Example 6.12. Separation Spaces L9U5000755001750001750 013626002577 20356 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L9U5Spec Example 7.11. Plain Implicit Keys 8XDJ000755001750001750 013626002577 20375 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XDJComment in plain multiline value 5GBF000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20733 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5GBFSpec Example 6.5. Empty Lines U44R000755001750001750 013626002577 20356 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U44RBad indentation in mapping (2) 8UDB000755001750001750 013626002577 20362 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8UDBSpec Example 7.14. Flow Sequence Entries 2SXE000755001750001750 013626002577 20401 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2SXEAnchors With Colon in Name DBG4000755001750001750 013626002577 20340 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DBG4Spec Example 7.10. Plain Characters CML9000755001750001750 013626002577 20364 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CML9Missing comma in flow 55WF000755001750001750 013626002577 20346 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/55WFInvalid escape in double quoted string 9JBA000755001750001750 013626002577 20345 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9JBAInvalid comment after end of flow sequence 6JWB000755001750001750 013626002577 20370 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2713626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JWBTags for Block Objects 96L6000755001750001750 013626002577 20320 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 10113626002577 20721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/96L6Spec Example 2.14. In the folded scalars, newlines become spaces M29M000755001750001750 013626002577 20344 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2513626002577 20732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M29MLiteral Block Scalar HMQ5000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4313626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMQ5Spec Example 6.23. Node Properties KMK3000755001750001750 013626002577 20365 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2113626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KMK3Block Submapping SF5V000755001750001750 013626002577 20403 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SF5VDuplicate YAML directive U3XV000755001750001750 013626002577 20425 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 21014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3XVNode and Mapping Key Anchors U3C3000755001750001750 013626002577 20335 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3C3Spec Example 6.16. “TAG” directive 2LFX000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2LFXSpec Example 6.13. Reserved Directives [1.3] GDY7000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GDY7Comment that looks like a mapping key M5C3000755001750001750 013626002577 20327 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20720 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5C3Spec Example 8.21. Block Scalar Nodes 8XYN000755001750001750 013626002577 20426 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 21016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XYNAnchor with unicode character LP6E000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LP6EWhitespace After Scalars in Flow 9KBC000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KBCMapping starting at --- line 3HFZ000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3HFZInvalid content after document end marker 6FWR000755001750001750 013626002577 20404 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2213626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6FWRBlock Scalar Keep 36F6000755001750001750 013626002577 20304 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20676 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/36F6Multiline plain scalar with empty line S9E8000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S9E8Spec Example 5.3. Block Structure Indicators W4TN000755001750001750 013626002577 20414 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 21006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W4TNSpec Example 9.5. Directives Documents AB8U000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7213626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AB8USequence entry that looks like two with wrong indentation PRH3000755001750001750 013626002577 20374 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PRH3Spec Example 7.9. Single Quoted Lines CVW2000755001750001750 013626002577 20401 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CVW2Invalid comment after comma 6LVF000755001750001750 013626002577 20375 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6LVFSpec Example 6.13. Reserved Directives AVM7000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 1513626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AVM7Empty Stream K4SU000755001750001750 013626002577 20406 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K4SUMultiple Entry Block Sequence R52L000755001750001750 013626002577 20344 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R52LNested flow mapping sequence and mappings H7J7000755001750001750 013626002577 20337 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H7J7Node anchor not indented XLQ9000755001750001750 013626002577 20415 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6213626002577 21004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XLQ9Multiline scalar that looks like a YAML directive PUW8000755001750001750 013626002577 20423 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 21011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PUW8Document start on last line DFF7000755001750001750 013626002577 20346 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DFF7Spec Example 7.16. Flow Mapping Entries 7LBH000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7LBHMultiline double quoted implicit keys Y2GN000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Y2GNAnchor with colon in the middle 6CK3000755001750001750 013626002577 20326 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6CK3Spec Example 6.26. Tag Shorthands 57H4000755001750001750 013626002577 20307 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20675 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/57H4Spec Example 8.22. Block Collection Nodes 9DXL000755001750001750 013626002577 20400 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9DXLSpec Example 9.6. Stream [1.3] K3WX000755001750001750 013626002577 20414 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 21005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K3WXColon and adjacent value after comment on next line A6F9000755001750001750 013626002577 20325 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 20715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A6F9Spec Example 8.4. Chomping Final Line Break 77H8000755001750001750 013626002577 20315 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20702 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/77H8Spec Example 2.23. Various Explicit Tags HWV9000755001750001750 013626002577 20415 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2413626002577 21002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HWV9Document-end marker 6VJK000755001750001750 013626002577 20400 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 12513626002577 21007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6VJKSpec Example 2.15. Folded newlines are preserved for "more indented" and blank lines S7BG000755001750001750 013626002577 20362 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3013626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S7BGColon followed by comma U9NS000755001750001750 013626002577 20416 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6013626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U9NSSpec Example 2.8. Play by Play Feed from a Game 4MUZ000755001750001750 013626002577 20417 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 21007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4MUZFlow mapping colon on line after key NHX8000755001750001750 013626002577 20405 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NHX8Empty Lines at End of Document 5C5M000755001750001750 013626002577 20331 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5C5MSpec Example 7.15. Flow Mappings 7BMT000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4313626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BMTNode and Mapping Key Anchors [1.3] BF9H000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BF9HTrailing comment in multiline plain scalar P2AD000755001750001750 013626002577 20346 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2ADSpec Example 8.1. Block Scalar Header GT5M000755001750001750 013626002577 20374 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3013626002577 20756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GT5MNode anchor in sequence X38W000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3013626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X38WAliases in Flow Objects D9TU000755001750001750 013626002577 20405 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D9TUSingle Pair Block Mapping Q4CL000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q4CLTrailing content after quoted value 8CWC000755001750001750 013626002577 20364 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8CWCPlain mapping key ending with colon UT92000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UT92Spec Example 9.4. Explicit Documents ZVH3000755001750001750 013626002577 20412 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 21001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZVH3Wrong indented sequence item 5NYZ000755001750001750 013626002577 20425 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 21014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5NYZSpec Example 6.9. Separated Comment 6WLZ000755001750001750 013626002577 20422 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 21012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WLZSpec Example 6.18. Primary Tag Handle [1.3] N782000755001750001750 013626002577 20316 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N782Invalid document markers in flow style CXX2000755001750001750 013626002577 20404 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CXX2Mapping with anchor on document start line G7JE000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3013626002577 20736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G7JEMultiline implicit keys FTA2000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7613626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FTA2Single block sequence with anchor and explicit document start KSS4000755001750001750 013626002577 20404 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2413626002577 20771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KSS4Scalars on --- line ZXT5000755001750001750 013626002577 20432 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 21023 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZXT5Implicit key followed by newline and adjacent value RTP8000755001750001750 013626002577 20415 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4313626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RTP8Spec Example 9.2. Document Markers 98YD000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/98YDSpec Example 5.5. Comment Indicator JS2J000755001750001750 013626002577 20370 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JS2JSpec Example 6.29. Node Anchors 753E000755001750001750 013626002577 20303 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20666 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/753EBlock Scalar Strip [1.3] 65WH000755001750001750 013626002577 20351 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/65WHSingle Entry Block Sequence C2DT000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6013626002577 20741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2DTSpec Example 7.18. Flow Mapping Adjacent Values 8KB6000755001750001750 013626002577 20332 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5713626002577 20725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8KB6Multiline plain flow mapping key without value K527000755001750001750 013626002577 20310 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 20701 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K527Spec Example 6.6. Line Folding 229Q000755001750001750 013626002577 20315 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20707 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/229QSpec Example 2.4. Sequence of Mappings 9FMG000755001750001750 013626002577 20362 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9FMGMulti-level Mapping Indent QB6E000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QB6EWrong indented multiline quoted scalar S4T7000755001750001750 013626002577 20361 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2513626002577 20747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4T7Document with footer CUP7000755001750001750 013626002577 20376 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CUP7Spec Example 5.6. Node Property Indicators 9SHH000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SHHSpec Example 5.8. Quoted Scalar Indicators GH63000755001750001750 013626002577 20327 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20716 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GH63Mixed Block Mapping (explicit to implicit) DK4H000755001750001750 013626002577 20352 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK4HImplicit key followed by newline TD5N000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TD5NInvalid scalar after sequence ZCZ6000755001750001750 013626002577 20414 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZCZ6Invalid mapping in plain single line value FQ7F000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FQ7FSpec Example 2.1. Sequence of Scalars CN3R000755001750001750 013626002577 20365 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CN3RVarious location of anchors in flow sequence BEC7000755001750001750 013626002577 20340 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BEC7Spec Example 6.14. “YAML” directive W5VH000755001750001750 013626002577 20411 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W5VHAllowed characters in alias KS4U000755001750001750 013626002577 20406 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KS4UInvalid item after end of flow sequence Z9M4000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z9M4Spec Example 6.22. Global Tag Prefix D83L000755001750001750 013626002577 20332 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 20721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D83LBlock scalar indicator order SYW4000755001750001750 013626002577 20426 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 21017 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SYW4Spec Example 2.2. Mapping Scalars to Scalars G992000755001750001750 013626002577 20312 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20675 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G992Spec Example 8.9. Folded Scalar DK3J000755001750001750 013626002577 20353 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7713626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK3JZero indented block scalar with line that looks like a comment P76L000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P76LSpec Example 6.19. Secondary Tag Handle CT4Q000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5613626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CT4QSpec Example 7.20. Single Pair Explicit Entry FBC9000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FBC9Allowed characters in plain scalars 6KGN000755001750001750 013626002577 20365 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6KGNAnchor for empty node EW3V000755001750001750 013626002577 20404 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3513626002577 20773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EW3VWrong indendation in mapping NP9H000755001750001750 013626002577 20376 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 20766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NP9HSpec Example 7.5. Double Quoted Line Breaks 33X3000755001750001750 013626002577 20320 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 20710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/33X3Three explicit integers in a block sequence B3HG000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B3HGSpec Example 8.9. Folded Scalar [1.3] 6S55000755001750001750 013626002577 20322 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6S55Invalid scalar at the end of sequence UDR7000755001750001750 013626002577 20401 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDR7Spec Example 5.4. Flow Collection Indicators 9J7A000755001750001750 013626002577 20332 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9J7ASimple Mapping Indent Z67P000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 20756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z67PSpec Example 8.21. Block Scalar Nodes [1.3] A2M4000755001750001750 013626002577 20323 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A2M4Spec Example 6.2. Indentation Indicators F8F9000755001750001750 013626002577 20334 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F8F9Spec Example 8.5. Chomping Trailing Lines F6MC000755001750001750 013626002577 20353 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7513626002577 20746 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F6MCMore indented lines at the beginning of folded block scalars 7A4E000755001750001750 013626002577 20320 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20711 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7A4ESpec Example 7.6. Double Quoted Lines SBG9000755001750001750 013626002577 20364 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SBG9Flow Sequence in Flow Mapping M7A3000755001750001750 013626002577 20327 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7A3Spec Example 9.3. Bare Documents 565N000755001750001750 013626002577 20315 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2113626002577 20677 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/565NConstruct Binary 6XDY000755001750001750 013626002577 20412 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6XDYTwo document start markers 6SLA000755001750001750 013626002577 20365 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6SLAAllowed characters in quoted mapping key 9U5K000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9U5KSpec Example 2.12. Compact Nested Mapping EXG3000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EXG3Three dashes and content without space [1.3] 4JVG000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4JVGScalar value with two anchors 27NA000755001750001750 013626002577 20327 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20720 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/27NASpec Example 5.9. Directive Indicator 9KAX000755001750001750 013626002577 20374 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KAXVarious combinations of tags and anchors T5N4000755001750001750 013626002577 20352 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T5N4Spec Example 8.7. Literal Scalar [1.3] 9TFX000755001750001750 013626002577 20412 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 21002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9TFXSpec Example 7.6. Double Quoted Lines [1.3] 5TYM000755001750001750 013626002577 20416 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 21005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TYMSpec Example 6.21. Local Tag Prefix 62EZ000755001750001750 013626002577 20346 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6713626002577 20742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/62EZInvalid block mapping key on same line as previous key W42U000755001750001750 013626002577 20361 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5613626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W42USpec Example 8.15. Block Sequence Entry Types S3PD000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6213626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S3PDSpec Example 8.18. Implicit Block Mapping Entries JQ4R000755001750001750 013626002577 20400 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JQ4RSpec Example 8.14. Block Sequence BS4K000755001750001750 013626002577 20363 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4313626002577 20751 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BS4KComment between plain scalar lines 35KP000755001750001750 013626002577 20342 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/35KPTags for Root Objects QT73000755001750001750 013626002577 20356 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QT73Comment and document-end marker RZT7000755001750001750 013626002577 20426 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 21014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZT7Spec Example 2.28. Log File 6JQW000755001750001750 013626002577 20407 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6713626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JQWSpec Example 2.13. In literals, newlines are preserved CTN5000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CTN5Flow sequence with invalid extra comma T833000755001750001750 013626002577 20321 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5013626002577 20705 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T833Flow mapping missing a separating comma 5TRB000755001750001750 013626002577 20374 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TRBInvalid document-start marker in doublequoted tring JDH8000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7513626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JDH8Plain Scalar looking like key, comment, anchor and tag [1.3] T4YY000755001750001750 013626002577 20431 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5413626002577 21021 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T4YYSpec Example 7.9. Single Quoted Lines [1.3] G9HC000755001750001750 013626002577 20352 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G9HCInvalid anchor in zero indented sequence 3GZX000755001750001750 013626002577 20413 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 21003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3GZXSpec Example 7.1. Alias Nodes D49Q000755001750001750 013626002577 20341 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4613626002577 20732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D49QMultiline single quoted implicit keys RLU9000755001750001750 013626002577 20413 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2013626002577 20774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RLU9Sequence Indent 9YRD000755001750001750 013626002577 20407 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3613626002577 20777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9YRDMultiline Scalar at Top Level V55R000755001750001750 013626002577 20361 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V55RAliases in Block Sequence 7FWL000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7FWLSpec Example 6.24. Verbatim Tags K54U000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K54UTab after document header NB6Z000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5713626002577 20772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NB6ZMultiline plain value with tabs on empty lines 735Y000755001750001750 013626002577 20327 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20716 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/735YSpec Example 8.20. Block Node Types RR7F000755001750001750 013626002577 20400 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5313626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RR7FMixed Block Mapping (implicit to explicit) 4H7K000755001750001750 013626002577 20335 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6113626002577 20723 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4H7KFlow sequence with invalid extra closing bracket V9D5000755001750001750 013626002577 20347 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5213626002577 20735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V9D5Spec Example 8.19. Compact Block Mappings A984000755001750001750 013626002577 20305 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20673 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A984Multiline Scalar in Mapping P94K000755001750001750 013626002577 20347 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P94KSpec Example 6.11. Multi-Line Comments 7BUB000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 11413626002577 20764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BUBSpec Example 2.10. Node for “Sammy Sosa” appears twice in this document 7ZZ5000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2713626002577 20767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7ZZ5Empty flow collections 4QFQ000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6413626002577 20764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4QFQSpec Example 8.2. Block Indentation Indicator [1.3] 5WE3000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6213626002577 20732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5WE3Spec Example 8.17. Explicit Block Mapping Entries MJS9000755001750001750 013626002577 20402 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MJS9Spec Example 6.7. Block Folding 9MAG000755001750001750 013626002577 20355 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6213626002577 20744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MAGFlow sequence with invalid comma at the beginning NAT4000755001750001750 013626002577 20366 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NAT4Various empty or newline only quoted strings B63P000755001750001750 013626002577 20332 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20717 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B63PDirective without document 82AN000755001750001750 013626002577 20330 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4713626002577 20722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/82ANThree dashes and content without space 6H3V000755001750001750 013626002577 20346 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3413626002577 20734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6H3VBackslashes in singlequotes AZ63000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6113626002577 20731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZ63Sequence With Same Indentation as Parent Mapping M9B4000755001750001750 013626002577 20333 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20717 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M9B4Spec Example 8.7. Literal Scalar H3Z8000755001750001750 013626002577 20354 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2013626002577 20735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H3Z8Literal unicode 7T8X000755001750001750 013626002577 20372 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 7213626002577 20762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7T8XSpec Example 8.10. Folded Lines - 8.13. Final Empty Lines E76Z000755001750001750 013626002577 20353 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/E76ZAliases in Implicit Block Mapping 4EJS000755001750001750 013626002577 20365 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4EJSInvalid tabs as indendation in a mapping FP8R000755001750001750 013626002577 20377 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FP8RZero indented block scalar 8G76000755001750001750 013626002577 20313 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4113626002577 20677 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8G76Spec Example 6.10. Comment Lines QF4Y000755001750001750 013626002577 20403 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5513626002577 20774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QF4YSpec Example 7.19. Single Pair Flow Mappings SSW6000755001750001750 013626002577 20422 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 6113626002577 21010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SSW6Spec Example 7.7. Single Quoted Characters [1.3] 4Q9F000755001750001750 013626002577 20343 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4Q9FFolded Block Scalar [1.3] TE2A000755001750001750 013626002577 20353 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4213626002577 20740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TE2ASpec Example 8.16. Block Mappings 6ZKB000755001750001750 013626002577 20374 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 20757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6ZKBSpec Example 9.6. Stream N4JP000755001750001750 013626002577 20373 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3313626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N4JPBad indentation in mapping EHF6000755001750001750 013626002577 20350 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 2613626002577 20737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EHF6Tags for Flow Objects PW8X000755001750001750 013626002577 20426 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3113626002577 21011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PW8XAnchors on Empty Scalars UDM2000755001750001750 013626002577 20367 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3213626002577 20753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDM2Plain URL in flow mapping 8QBE000755001750001750 013626002577 20357 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4013626002577 20742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8QBEBlock Sequence in Block Mapping 9SA2000755001750001750 013626002577 20336 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 5113626002577 20723 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SA2Multiline double quoted flow mapping key JTV5000755001750001750 013626002577 20410 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4513626002577 21000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JTV5Block Mapping with Multiline Scalars J3BT000755001750001750 013626002577 20362 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4313626002577 20750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J3BTSpec Example 5.12. Tabs and Spaces 3UYS000755001750001750 013626002577 20423 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 3713626002577 21014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3UYSEscaped slash in double quotes EX5H000755001750001750 013626002577 20371 5ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data===100644001750001750 4413626002577 20760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EX5HMultiline Scalar at Top Level [1.3] ext.yaml100644001750001750 20113626002577 21777 0ustar00tinatina000000000000YAML-PP-0.021/examples/external-vars-templates--- filename: !external /argv/0 env.LANG: !external /env/LANG argv: !external /argv path: !template "${/config/prefix}/bin/perl" error100644001750001750 013626002577 21547 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RXY3error100644001750001750 013626002577 21472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BD7Lerror100644001750001750 013626002577 21551 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SY6Verror100644001750001750 013626002577 21521 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HU3Perror100644001750001750 013626002577 21457 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5U3Aerror100644001750001750 013626002577 21517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CQ3Werror100644001750001750 013626002577 21501 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W9L4error100644001750001750 013626002577 21504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU74error100644001750001750 013626002577 21516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9HCYerror100644001750001750 013626002577 21505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LHL4error100644001750001750 013626002577 21506 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2CMSerror100644001750001750 013626002577 21511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7MNFerror100644001750001750 013626002577 21511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4GJerror100644001750001750 013626002577 21535 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9CWYerror100644001750001750 013626002577 21517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S98Zerror100644001750001750 013626002577 21504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SR86error100644001750001750 013626002577 21511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2SPerror100644001750001750 013626002577 21464 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9C9Nerror100644001750001750 013626002577 21517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QLJ7error100644001750001750 013626002577 21530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4HVUerror100644001750001750 013626002577 21545 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JY7Zerror100644001750001750 013626002577 21523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5LLUerror100644001750001750 013626002577 21477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DMG6error100644001750001750 013626002577 21434 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EB22error100644001750001750 013626002577 21531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JTTerror100644001750001750 013626002577 21545 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZL4Zerror100644001750001750 013626002577 21505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HRE5error100644001750001750 013626002577 21550 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU5Zerror100644001750001750 013626002577 21545 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X4QWerror100644001750001750 013626002577 21532 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RHX7error100644001750001750 013626002577 21511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2EQerror100644001750001750 013626002577 21416 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/236Berror100644001750001750 013626002577 21517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XDJerror100644001750001750 013626002577 21500 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U44Rerror100644001750001750 013626002577 21506 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CML9error100644001750001750 013626002577 21470 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/55WFerror100644001750001750 013626002577 21467 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9JBAerror100644001750001750 013626002577 21525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SF5Verror100644001750001750 013626002577 21514 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GDY7error100644001750001750 013626002577 21472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KBCerror100644001750001750 013626002577 21514 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3HFZerror100644001750001750 013626002577 21523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CVW2error100644001750001750 013626002577 21461 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H7J7error100644001750001750 013626002577 21476 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7LBHerror100644001750001750 013626002577 21472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BF9Herror100644001750001750 013626002577 21516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GT5Merror100644001750001750 013626002577 21505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q4CLerror100644001750001750 013626002577 21534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZVH3error100644001750001750 013626002577 21440 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N782error100644001750001750 013626002577 21526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CXX2error100644001750001750 013626002577 21476 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G7JEerror100644001750001750 013626002577 21554 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZXT5error100644001750001750 013626002577 21477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QB6Eerror100644001750001750 013626002577 21474 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK4Herror100644001750001750 013626002577 21514 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TD5Nerror100644001750001750 013626002577 21536 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZCZ6error100644001750001750 013626002577 21530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KS4Uerror100644001750001750 013626002577 21526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EW3Verror100644001750001750 013626002577 21444 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6S55error100644001750001750 013626002577 21514 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4JVGerror100644001750001750 013626002577 21470 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/62EZerror100644001750001750 013626002577 21505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BS4Kerror100644001750001750 013626002577 21513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CTN5error100644001750001750 013626002577 21443 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T833error100644001750001750 013626002577 21516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TRBerror100644001750001750 013626002577 21474 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G9HCerror100644001750001750 013626002577 21463 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D49Qerror100644001750001750 013626002577 21457 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4H7Kerror100644001750001750 013626002577 21477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MAGerror100644001750001750 013626002577 21454 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B63Perror100644001750001750 013626002577 21507 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4EJSerror100644001750001750 013626002577 21515 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N4JPin.yaml100644001750001750 3613626002577 21710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K858strip: >- clip: > keep: |+ in.json100644001750001750 6013626002577 21714 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K858{ "strip": "", "clip": "", "keep": "\n" } in.yaml100644001750001750 6513626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NJ66--- - { single line: value} - { multi line: value} in.json100644001750001750 11213626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NJ66[ { "single line": "value" }, { "multi line": "value" } ] in.yaml100644001750001750 1413626002577 22012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RXY3--- ' ... ' in.yaml100644001750001750 120413626002577 22022 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UGM3--- ! 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. in.json100644001750001750 147313626002577 22041 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UGM3{ "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." } in.yaml100644001750001750 3313626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BD7L- item1 - item2 invalid: x in.yaml100644001750001750 3113626002577 22013 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SY6V&anchor - sequence entry in.yaml100644001750001750 3313626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BU8Lkey: &anchor !!map a: b in.json100644001750001750 4013626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BU8L{ "key": { "a": "b" } } in.yaml100644001750001750 3513626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HU3Pkey: word1 word2 no: key in.yaml100644001750001750 21213626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMK4name: Mark McGwire accomplishment: > Mark set a major league home run record in 1998. stats: | 65 Home Runs 0.278 Batting Average in.json100644001750001750 23313626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMK4{ "name": "Mark McGwire", "accomplishment": "Mark set a major league home run record in 1998.\n", "stats": "65 Home Runs\n0.278 Batting Average\n" } in.yaml100644001750001750 1013626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2JQS: a : b in.yaml100644001750001750 413626002577 21705 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8MK2! a in.json100644001750001750 413626002577 21714 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8MK2"a" in.yaml100644001750001750 4113626002577 21753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4V8U--- plain\value\with\backslashes in.json100644001750001750 4213626002577 21763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4V8U"plain\\value\\with\\backslashes" in.yaml100644001750001750 6413626002577 21712 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CC74%TAG !e! tag:example.com,2000:app/ --- !e!foo "bar" in.yaml100644001750001750 2213626002577 21721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5U3Akey: - a - b in.yaml100644001750001750 12213626002577 22043 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9WXW# Private !foo "bar" ... # Global %TAG ! tag:example.com,2000:app/ --- !foo "bar" in.yaml100644001750001750 2613626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TS54> ab cd ef gh in.json100644001750001750 2413626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TS54"ab cd\nef\n\ngh\n" in.yaml100644001750001750 21113626002577 22034 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2XXW# Sets are represented as a # Mapping where each key is # associated with a null value --- !!set ? Mark McGwire ? Sammy Sosa ? Ken Griff in.yaml100644001750001750 4013626002577 21761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CQ3W--- key: "missing closing quote in.yaml100644001750001750 1313626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7W2P? a ? b c: in.json100644001750001750 5213626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7W2P{ "a": null, "b": null, "c": null } in.yaml100644001750001750 10713626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W9L4--- block scalar: | more spaces at the beginning are invalid in.yaml100644001750001750 23613626002577 22021 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XW4Da: "double quotes" # lala b: plain value # lala c : #lala d ? # lala - seq1 : # lala - #lala seq2 e: &node # lala - x: y block: > # lala abcde in.yaml100644001750001750 3113626002577 21735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3ALJ- - s1_i1 - s1_i2 - s2 in.json100644001750001750 5513626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3ALJ[ [ "s1_i1", "s1_i2" ], "s2" ] in.yaml100644001750001750 2513626002577 21712 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/54T7{foo: you, bar: far} in.json100644001750001750 4313626002577 21721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/54T7{ "foo": "you", "bar": "far" } in.yaml100644001750001750 20213626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JHB9# Ranking of 1998 home runs --- - Mark McGwire - Sammy Sosa - Ken Griffey # Team ranking --- - Chicago Cubs - St Louis Cardinals in.json100644001750001750 14313626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JHB9[ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] [ "Chicago Cubs", "St Louis Cardinals" ] in.yaml100644001750001750 2013626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3MYTk:#foo &a !t s in.json100644001750001750 2113626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3MYT"k:#foo &a !t s" in.yaml100644001750001750 4713626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU74key1: &alias value1 &b *alias : value2 in.yaml100644001750001750 2213626002577 22012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4UYU"foo: bar\": baz" in.json100644001750001750 2213626002577 22021 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4UYU"foo: bar\": baz" in.yaml100644001750001750 7313626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9HCY!foo "bar" %TAG ! tag:example.com,2000:app/ --- !foo "bar" in.yaml100644001750001750 7613626002577 21706 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/74H7!!str a: b c: !!int 42 e: !!str f g: h !!int 23: !!bool false in.json100644001750001750 10113626002577 21722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/74H7{ "a": "b", "c": 42, "e": "f", "g": "h", "23": false } in.yaml100644001750001750 3113626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LHL4--- !invalid{}tag scalar in.yaml100644001750001750 17413626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KK5Pcomplex1: ? - a complex2: ? - a : b complex3: ? - a : > b complex4: ? > a : complex5: ? - a : - b in.yaml100644001750001750 6213626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LE5A- !!str "a" - 'b' - &anchor "c" - *anchor - !!str in.json100644001750001750 4513626002577 21746 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LE5A[ "a", "b", "c", "c", "" ] in.yaml100644001750001750 11713626002577 22045 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XV9VFolding: "Empty line as a line feed" Chomping: | Clipped empty lines in.json100644001750001750 12513626002577 22053 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XV9V{ "Folding": "Empty line\nas a line feed", "Chomping": "Clipped empty lines\n" } in.yaml100644001750001750 5713626002577 21715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F2C7 - &a !!str a - !!int 2 - !!int &c 4 - &d d in.json100644001750001750 3313626002577 21716 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F2C7[ "a", 2, 4, "d" ] in.yaml100644001750001750 1413626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7VC1: 2 3: 4 in.json100644001750001750 2713626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7VC{ "1": 2, "3": 4 } in.yaml100644001750001750 2513626002577 21761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5MUD--- { "foo" :bar } in.json100644001750001750 2313626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5MUD{ "foo": "bar" } in.yaml100644001750001750 2613626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2CMSthis is invalid: x in.yaml100644001750001750 4513626002577 21722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4FJ6--- [ [ a, [ [[b,c]]: d, e]]: 23 ] in.yaml100644001750001750 3013626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7MNFtop1: key1: val1 top2 in.yaml100644001750001750 3213626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SKE5--- seq: &anchor - a - b in.json100644001750001750 4413626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SKE5{ "seq": [ "a", "b" ] } in.yaml100644001750001750 3413626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BCT- foo: bar - - baz - baz in.json100644001750001750 7313626002577 21757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BCT[ { "foo": "bar" }, [ "baz", "baz" ] ] in.yaml100644001750001750 5713626002577 21737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T26H--- | literal text # Comment in.json100644001750001750 3313626002577 21740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T26H"\n\nliteral\n \n\ntext\n" in.yaml100644001750001750 6113626002577 21724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93JH - key: value key2: value2 - key3: value3 in.json100644001750001750 12313626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93JH[ { "key": "value", "key2": "value2" }, { "key3": "value3" } ] in.yaml100644001750001750 4713626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4GJ--- folded: > first line second line in.yaml100644001750001750 3713626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9CWYkey: - item1 - item2 invalid in.yaml100644001750001750 11213626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ABK{ unquoted : "separate", http://foo.com, omitted value:, : omitted key, } in.yaml100644001750001750 12413626002577 22020 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/YD5X- [name , hr, avg ] - [Mark McGwire, 65, 0.278] - [Sammy Sosa , 63, 0.288] in.json100644001750001750 21013626002577 22023 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/YD5X[ [ "name", "hr", "avg" ], [ "Mark McGwire", 65, 0.278 ], [ "Sammy Sosa", 63, 0.288 ] ] in.yaml100644001750001750 4013626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5KJE- [ one, two, ] - [three ,four] in.json100644001750001750 10213626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5KJE[ [ "one", "two" ], [ "three", "four" ] ] in.yaml100644001750001750 6713626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9BXH--- - { "single line", a: b} - { "multi line", a: b} in.json100644001750001750 14013626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9BXH[ { "single line": null, "a": "b" }, { "multi line": null, "a": "b" } ] in.yaml100644001750001750 6313626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FH7J- !!str - !!null : a b: !!str - !!str : !!null in.yaml100644001750001750 5613626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HS5T1st non-empty 2nd non-empty 3rd non-empty in.json100644001750001750 5513626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HS5T"1st non-empty\n2nd non-empty 3rd non-empty" in.yaml100644001750001750 2413626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CPZ3--- tab: "\tstring" in.json100644001750001750 3013626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CPZ3{ "tab": "\tstring" } in.yaml100644001750001750 11113626002577 22014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MMW- [ YAML : separate ] - [ : empty key entry ] - [ "JSON like":adjacent ] in.yaml100644001750001750 5213626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S98Zempty block scalar: > # comment in.yaml100644001750001750 45513626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6HB6 # 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. in.json100644001750001750 23313626002577 21744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6HB6{ "Not indented": { "By one space": "By four\n spaces\n", "Flow style": [ "By two", "Also by two", "Still by two" ] } } in.yaml100644001750001750 10513626002577 22013 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R4YG- | detected - > # detected - |1 explicit - > detected in.json100644001750001750 11613626002577 22024 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R4YG[ "detected\n", "\n\n# detected\n", " explicit\n", "\t\ndetected\n" ] in.yaml100644001750001750 3313626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SR86key1: &a value key2: &b *a in.yaml100644001750001750 413626002577 21735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q5MG {} in.json100644001750001750 313626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q5MG{} in.yaml100644001750001750 1413626002577 21763 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FUP4[a, [b, c]] in.json100644001750001750 4413626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FUP4[ "a", [ "b", "c" ] ] in.yaml100644001750001750 1213626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2SP[23 ]: 42 in.yaml100644001750001750 4413626002577 21740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93WF--- >- trimmed as space in.json100644001750001750 3013626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93WF"trimmed\n\n\nas space" in.yaml100644001750001750 6713626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4JQ# Assuming conventional resolution: - "12" - 12 - ! 12 in.json100644001750001750 3113626002577 21774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4JQ[ "12", 12, "12" ] in.yaml100644001750001750 10613626002577 22030 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MZX3- plain - "double quoted" - 'single quoted' - > block - plain again in.json100644001750001750 12213626002577 22035 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MZX3[ "plain", "double quoted", "single quoted", "block\n", "plain again" ] in.yaml100644001750001750 7313626002577 21701 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/87E4'implicit block key' : [ 'implicit flow key' : value, ] in.json100644001750001750 12113626002577 21722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/87E4{ "implicit block key": [ { "implicit flow key": "value" } ] } in.yaml100644001750001750 30113626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/26DV"top1" : "key1" : &alias1 scalar1 'top2' : 'key2' : &alias2 scalar2 top3: &node3 *alias1 : scalar3 top4: *alias2 : scalar4 top5 : scalar5 top6: &anchor6 'key6' : scalar6 in.json100644001750001750 34113626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/26DV{ "top1": { "key1": "scalar1" }, "top2": { "key2": "scalar2" }, "top3": { "scalar1": "scalar3" }, "top4": { "scalar2": "scalar4" }, "top5": "scalar5", "top6": { "key6": "scalar6" } } in.yaml100644001750001750 21613626002577 22007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5DY? - Detroit Tigers - Chicago cubs : - 2001-07-23 ? [ New York Yankees, Atlanta Braves ] : [ 2001-07-02, 2001-08-12, 2001-08-14 ] in.yaml100644001750001750 6113626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5BVJliteral: | some text folded: > some text in.json100644001750001750 7313626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5BVJ{ "literal": "some\ntext\n", "folded": "some text\n" } in.yaml100644001750001750 6413626002577 21774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H2RWfoo: 1 bar: 2 text: | a b c d in.json100644001750001750 7513626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H2RW{ "foo": 1, "bar": 2, "text": "a\n \nb\n\nc\n\nd\n" } in.yaml100644001750001750 1713626002577 22012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MYW6|- ab ... in.json100644001750001750 513626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MYW6"ab" in.yaml100644001750001750 3213626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DC7Xa: b seq: - a c: d #X in.json100644001750001750 6313626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DC7X{ "a": "b", "seq": [ "a" ], "c": "d" } in.yaml100644001750001750 23713626002577 22026 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7PZ# 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 in.json100644001750001750 13713626002577 22034 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7PZ[ { "Mark McGwire": 65 }, { "Sammy Sosa": 63 }, { "Ken Griffy": 58 } ] in.yaml100644001750001750 26113626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G4RSunicode: "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: '|\-*-/|' in.json100644001750001750 31313626002577 22015 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G4RS{ "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": "|\\-*-/|" } in.yaml100644001750001750 2413626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9C9N--- flow: [a, b, c] in.yaml100644001750001750 17713626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2EBWa!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~: safe ?foo: safe question mark :foo: safe colon -foo: safe dash this is#not: a comment in.json100644001750001750 24713626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2EBW{ "a!\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~": "safe", "?foo": "safe question mark", ":foo": "safe colon", "-foo": "safe dash", "this is#not": "a comment" } in.yaml100644001750001750 13513626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QLJ7%TAG !prefix! tag:example.com,2011: --- !prefix!A a: b --- !prefix!B c: d --- !prefix!C e: f in.yaml100644001750001750 4413626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4HVUkey: - ok - also ok - wrong in.yaml100644001750001750 5313626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DWX9| literal text # Comment in.json100644001750001750 3313626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DWX9"\n\nliteral\n \n\ntext\n" in.yaml100644001750001750 1613626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3R3P&sequence - a in.json100644001750001750 1213626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3R3P[ "a" ] in.yaml100644001750001750 3313626002577 21715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7Z25--- scalar1 ... key: value in.json100644001750001750 3713626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7Z25"scalar1" { "key": "value" } in.yaml100644001750001750 20513626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PBJ2american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves in.json100644001750001750 25613626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PBJ2{ "american": [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], "national": [ "New York Mets", "Chicago Cubs", "Atlanta Braves" ] } in.yaml100644001750001750 10213626002577 22026 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JY7Zkey1: "quoted1" key2: "quoted2" no key: nor value key3: "quoted3" in.yaml100644001750001750 1513626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G5U8--- - [-, -] in.json100644001750001750 3513626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G5U8[ [ "-", "-" ] ] in.yaml100644001750001750 13513626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4CQQplain: This unquoted scalar spans many lines. quoted: "So does this quoted scalar.\n" in.json100644001750001750 14513626002577 22011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4CQQ{ "plain": "This unquoted scalar spans many lines.", "quoted": "So does this quoted scalar.\n" } in.yaml100644001750001750 10613626002577 22032 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ZYMplain: text lines quoted: "text lines" block: | text lines in.json100644001750001750 12513626002577 22042 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ZYM{ "plain": "text lines", "quoted": "text lines", "block": "text\n \tlines\n" } in.yaml100644001750001750 4213626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5LLUblock scalar: > invalid in.yaml100644001750001750 5313626002577 21737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BFJ--- &mapping &key [ &item a, b, c ]: value in.yaml100644001750001750 4313626002577 21734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L94M? !!str a : !!int 47 ? c : !!str d in.json100644001750001750 3213626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L94M{ "a": 47, "c": "d" } in.yaml100644001750001750 2713626002577 21746 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DMG6key: ok: 1 wrong: 2 in.yaml100644001750001750 5413626002577 21703 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EB22--- scalar1 # comment %YAML 1.2 --- scalar2 in.yaml100644001750001750 2213626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JTT--- [ [ a, b, c ] in.yaml100644001750001750 7313626002577 22007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LQZ7"implicit block key" : [ "implicit flow key" : value, ] in.json100644001750001750 12113626002577 22030 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LQZ7{ "implicit block key": [ { "implicit flow key": "value" } ] } in.yaml100644001750001750 1613626002577 22012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZL4Z--- a: 'b': c in.yaml100644001750001750 3713626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HRE5--- double: "quoted \' scalar" in.yaml100644001750001750 2013626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZH7C&a a: b c: &d d in.json100644001750001750 3313626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZH7C{ "a": "b", "c": "d" } in.yaml100644001750001750 2613626002577 21713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4GC6'here''s to "quotes"' in.json100644001750001750 2713626002577 21723 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4GC6"here's to \"quotes\"" in.yaml100644001750001750 3413626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TL85" foo bar baz " in.json100644001750001750 2213626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TL85" foo\nbar\nbaz " in.yaml100644001750001750 5413626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7NX--- { a: [ b, c, { d: [e, f] } ] } in.json100644001750001750 13513626002577 22031 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7NX{ "a": [ "b", "c", { "d": [ "e", "f" ] } ] } in.yaml100644001750001750 3413626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X8DW--- ? key # comment : value in.json100644001750001750 2513626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X8DW{ "key": "value" } in.yaml100644001750001750 3613626002577 22017 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU5Zkey: "value"# invalid comment in.yaml100644001750001750 10213626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q8AD--- "folded to a space, to a line feed, or \ \ non-content" in.json100644001750001750 7213626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q8AD"folded to a space,\nto a line feed, or \t \tnon-content" in.yaml100644001750001750 3213626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZWK4--- a: 1 ? b &anchor c: 3 in.json100644001750001750 4413626002577 22016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZWK4{ "a": 1, "b": null, "c": 3 } in.yaml100644001750001750 4013626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WPF--- " foo bar baz " in.json100644001750001750 2213626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WPF" foo\nbar\nbaz " in.yaml100644001750001750 4213626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/WZ62{ foo : !!str, !!str : bar, } in.json100644001750001750 3513626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/WZ62{ "foo": "", "": "bar" } in.yaml100644001750001750 3213626002577 21772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZK9H{ key: [[[ value ]]] } in.json100644001750001750 7713626002577 22012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZK9H{ "key": [ [ [ "value" ] ] ] } in.yaml100644001750001750 2313626002577 21717 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6M2F? &a a : &b b : *a in.json100644001750001750 3213626002577 21726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6M2F{ "a": "b", "": "a" } in.yaml100644001750001750 16313626002577 22016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J9HZ--- hr: # 1998 hr ranking - Mark McGwire - Sammy Sosa rbi: # 1998 rbi ranking - Sammy Sosa - Ken Griffey in.json100644001750001750 15313626002577 22024 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J9HZ{ "hr": [ "Mark McGwire", "Sammy Sosa" ], "rbi": [ "Sammy Sosa", "Ken Griffey" ] } in.yaml100644001750001750 1613626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LX3P[flow]: block in.yaml100644001750001750 3313626002577 22011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X4QWblock: ># comment scalar in.yaml100644001750001750 3513626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RHX7--- key: value %YAML 1.2 --- in.yaml100644001750001750 11213626002577 22017 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KZN9- [ YAML : separate ] - [ : empty key entry ] - [ {JSON: like}:adjacent ] in.yaml100644001750001750 3713626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7TMG--- [ word1 # comment , word2] in.json100644001750001750 3113626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7TMG[ "word1", "word2" ] in.yaml100644001750001750 1113626002577 21774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MXS3- {a: b} in.json100644001750001750 3113626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MXS3[ { "a": "b" } ] in.yaml100644001750001750 4213626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F3CP--- { a: [b, c, { d: [e, f] } ] } in.json100644001750001750 13513626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F3CP{ "a": [ "b", "c", { "d": [ "e", "f" ] } ] } in.yaml100644001750001750 45213626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C4HZ%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. in.yaml100644001750001750 3013626002577 21751 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FRK4{ ? foo :, : bar, } in.yaml100644001750001750 3013626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2EQ--- - { y: z }- invalid in.yaml100644001750001750 4613626002577 21733 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q88A- [ a, b ] - { a: b } - "a" - 'b' - c in.json100644001750001750 11013626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q88A[ [ "a", "b" ], { "a": "b" }, "a", "b", "c" ] in.yaml100644001750001750 2313626002577 21661 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/236Bfoo: bar invalid in.yaml100644001750001750 3013626002577 21737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6PBE--- ? - a - b : - c - d in.yaml100644001750001750 12013626002577 22016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZF4XMark McGwire: {hr: 65, avg: 0.278} Sammy Sosa: { hr: 63, avg: 0.288 } in.json100644001750001750 16113626002577 22032 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZF4X{ "Mark McGwire": { "hr": 65, "avg": 0.278 }, "Sammy Sosa": { "hr": 63, "avg": 0.288 } } in.yaml100644001750001750 4113626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2AUY - !!str a - b - !!int 42 - d in.json100644001750001750 3613626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2AUY[ "a", "b", 42, "d" ] in.yaml100644001750001750 23513626002577 22032 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZP5a: "double quotes" # lala b: plain value # lala c : #lala d ? # lala - seq1 : # lala - #lala seq2 e: &node # lala - x: y block: > # lala abcde in.yaml100644001750001750 1013626002577 21707 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/52DL--- ! a in.json100644001750001750 413626002577 21701 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/52DL"a" in.yaml100644001750001750 4013626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZW3- bla"keks: foo - bla]keks: foo in.json100644001750001750 10213626002577 22016 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZW3[ { "bla\"keks": "foo" }, { "bla]keks": "foo" } ] in.yaml100644001750001750 3613626002577 21757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J5UCfoo: blue bar: arrr baz: jazz in.json100644001750001750 6613626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J5UC{ "foo": "blue", "bar": "arrr", "baz": "jazz" } in.yaml100644001750001750 1213626002577 21720 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D88Ja: [b, c] in.json100644001750001750 4213626002577 21732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D88J{ "a": [ "b", "c" ] } in.yaml100644001750001750 1713626002577 21753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DHP8[foo, bar, 42] in.json100644001750001750 3313626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DHP8[ "foo", "bar", 42 ] in.yaml100644001750001750 14113626002577 22014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q9WF{ first: Sammy, last: Sosa }: # Statistics: hr: # Home runs 65 avg: # Average 0.278 in.yaml100644001750001750 6713626002577 21753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L9U5implicit block key : [ implicit flow key : value, ] in.json100644001750001750 12113626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L9U5{ "implicit block key": [ { "implicit flow key": "value" } ] } in.yaml100644001750001750 3213626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XDJkey: word1 # xxx word2 in.yaml100644001750001750 12313626002577 21751 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5GBFFolding: "Empty line as a line feed" Chomping: | Clipped empty lines in.json100644001750001750 12513626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5GBF{ "Folding": "Empty line\nas a line feed", "Chomping": "Clipped empty lines\n" } in.yaml100644001750001750 6213626002577 21746 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U44Rmap: key1: "quoted1" key2: "bad indentation" in.yaml100644001750001750 13113626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8UDB[ "double quoted", 'single quoted', plain text, [ nested ], single: pair, ] in.json100644001750001750 15513626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8UDB[ "double quoted", "single quoted", "plain text", [ "nested" ], { "single": "pair" } ] in.yaml100644001750001750 3513626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2SXE&a: key: &a value foo: *a: in.json100644001750001750 4513626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2SXE{ "key": "value", "foo": "key" } in.yaml100644001750001750 33213626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DBG4# 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 ] in.json100644001750001750 30613626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DBG4[ "::vector", ": - ()", "Up, up, and away!", -123, "http://example.com/foo#bar", [ "::vector", ": - ()", "Up, up and away!", -123, "http://example.com/foo#bar" ] ] in.yaml100644001750001750 3613626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CML9key: [ word1 # xxx word2 ] in.yaml100644001750001750 1113626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/55WF--- "\." in.yaml100644001750001750 3113626002577 21731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9JBA--- [ a, b, c, ]#invalid in.yaml100644001750001750 6613626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JWBfoo: !!seq - !!str a - !!map key: !!str value in.json100644001750001750 7513626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JWB{ "foo": [ "a", { "key": "value" } ] } in.yaml100644001750001750 7713626002577 21716 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/96L6--- > Mark McGwire's year was crippled by a knee injury. in.json100644001750001750 6713626002577 21724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/96L6"Mark McGwire's year was crippled by a knee injury.\n" in.yaml100644001750001750 3213626002577 21731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M29Ma: | ab cd ef ... in.json100644001750001750 3413626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M29M{ "a": "ab\n\ncd\nef\n" } in.yaml100644001750001750 5313626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMQ5!!str &a1 "foo": !!str bar &a2 baz : *a1 in.json100644001750001750 4313626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMQ5{ "foo": "bar", "baz": "foo" } in.yaml100644001750001750 2513626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KMK3foo: bar: 1 baz: 2 in.json100644001750001750 5413626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KMK3{ "foo": { "bar": 1 }, "baz": 2 } in.yaml100644001750001750 3013626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SF5V%YAML 1.2 %YAML 1.2 --- in.yaml100644001750001750 27613626002577 22044 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3XV--- 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 in.json100644001750001750 33213626002577 22044 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3XV{ "top1": { "key1": "one" }, "top2": { "key2": "two" }, "top3": { "key3": "three" }, "top4": { "key4": "four" }, "top5": { "key5": "five" }, "top6": "six", "top7": "seven" } in.yaml100644001750001750 6313626002577 21726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3C3%TAG !yaml! tag:yaml.org,2002: --- !yaml!str "foo" in.json100644001750001750 613626002577 21712 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3C3"foo" in.yaml100644001750001750 11413626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2LFX%FOO bar baz # Should be ignored # with a warning. --- "foo" in.json100644001750001750 613626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2LFX"foo" in.yaml100644001750001750 3713626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GDY7key: value this is #not a: key in.yaml100644001750001750 6013626002577 21715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5C3literal: |2 value folded: !foo >1 value in.json100644001750001750 6213626002577 21726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5C3{ "literal": "value\n", "folded": "value\n" } in.yaml100644001750001750 3313626002577 22014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XYN--- - &😁 unicode anchor in.json100644001750001750 2713626002577 22026 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XYN[ "unicode anchor" ] in.yaml100644001750001750 10613626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LP6E- [a, b , c ] - { "a" : b , c : 'd' , e : "f" } - [ ] in.json100644001750001750 13613626002577 22007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LP6E[ [ "a", "b", "c" ], { "a": "b", "c": "d", "e": "f" }, [] ] in.yaml100644001750001750 4213626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KBC--- key1: value1 key2: value2 in.yaml100644001750001750 3313626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3HFZ--- key: value ... invalid in.yaml100644001750001750 2413626002577 21772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6FWR--- |+ ab ... in.json100644001750001750 1413626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6FWR"ab\n\n \n" in.yaml100644001750001750 2413626002577 21672 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/36F6--- plain: a b c in.json100644001750001750 3013626002577 21676 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/36F6{ "plain": "a b\nc" } in.yaml100644001750001750 7613626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S9E8sequence: - one - two mapping: ? sky : blue sea : green in.json100644001750001750 14713626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S9E8{ "sequence": [ "one", "two" ], "mapping": { "sky": "blue", "sea": "green" } } in.yaml100644001750001750 7513626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W4TN%YAML 1.2 --- | %!PS-Adobe-2.0 ... %YAML 1.2 --- # Empty ... in.json100644001750001750 3013626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W4TN"%!PS-Adobe-2.0\n" null in.yaml100644001750001750 4513626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AB8U- single multiline - sequence entry in.json100644001750001750 5213626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AB8U[ "single multiline - sequence entry" ] in.yaml100644001750001750 6213626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PRH3' 1st non-empty 2nd non-empty 3rd non-empty ' in.json100644001750001750 5713626002577 21777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PRH3" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 3113626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CVW2--- [ a, b, c,#invalid ] in.yaml100644001750001750 11413626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6LVF%FOO bar baz # Should be ignored # with a warning. --- "foo" in.json100644001750001750 613626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6LVF"foo" in.yaml100644001750001750 013626002577 21732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AVM7in.json100644001750001750 013626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AVM7in.yaml100644001750001750 2113626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K4SU- foo - bar - 42 in.json100644001750001750 3313626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K4SU[ "foo", "bar", 42 ] in.yaml100644001750001750 7313626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R52L--- { top1: [item1, {key2: value2}, item3], top2: value2 } in.json100644001750001750 14513626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R52L{ "top1": [ "item1", { "key2": "value2" }, "item3" ], "top2": "value2" } in.yaml100644001750001750 2513626002577 21726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H7J7key: &x !!map a: b in.yaml100644001750001750 2513626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XLQ9--- scalar %YAML 1.2 in.json100644001750001750 2313626002577 22011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XLQ9"scalar %YAML 1.2" in.yaml100644001750001750 1513626002577 22011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PUW8--- a: b --- in.json100644001750001750 2413626002577 22020 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PUW8{ "a": "b" } null in.yaml100644001750001750 5213626002577 21735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DFF7{ ? explicit: entry, implicit: entry, ? } in.yaml100644001750001750 2413626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7LBH"a\nb": 1 "c d": 1 in.yaml100644001750001750 3013626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Y2GN--- key: &an:chor value in.json100644001750001750 2513626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Y2GN{ "key": "value" } in.yaml100644001750001750 12013626002577 21731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6CK3%TAG !e! tag:example.com,2000:app/ --- - !local foo - !!str bar - !e!tag%21 baz in.yaml100644001750001750 10313626002577 21713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/57H4sequence: !!seq - entry - !!seq - nested mapping: !!map foo: bar in.json100644001750001750 14513626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/57H4{ "sequence": [ "entry", [ "nested" ] ], "mapping": { "foo": "bar" } } in.yaml100644001750001750 7613626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9DXLMapping: Document --- # Empty ... %YAML 1.2 --- matches %: 20 in.json100644001750001750 6713626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9DXL{ "Mapping": "Document" } null { "matches %": 20 } in.yaml100644001750001750 3713626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K3WX--- { "foo" # comment :bar } in.json100644001750001750 2313626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K3WX{ "foo": "bar" } in.yaml100644001750001750 6013626002577 21713 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A6F9strip: |- text clip: | text keep: |+ text in.json100644001750001750 7613626002577 21731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A6F9{ "strip": "text", "clip": "text\n", "keep": "text\n" } in.yaml100644001750001750 41013626002577 21722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/77H8--- not-date: !!str 2002-04-28 picture: !!binary | R0lGODlhDAAMAIQAAP//9/X 17unp5WZmZgAAAOfn515eXv Pz7Y6OjuDg4J+fn5OTk6enp 56enmleECcgggoBADs= application specific tag: !something | The semantics of the tag above may be different for different documents. in.yaml100644001750001750 413626002577 21761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HWV9... in.json100644001750001750 013626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HWV9in.yaml100644001750001750 17013626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6VJK> Sammy Sosa completed another fine season with great stats. 63 Home Runs 0.288 Batting Average What a year! in.json100644001750001750 17213626002577 22021 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6VJK"Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" in.yaml100644001750001750 1113626002577 21744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S7BG--- - :, in.json100644001750001750 1313626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S7BG[ ":," ] in.yaml100644001750001750 17513626002577 22033 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U9NS--- time: 20:03:20 player: Sammy Sosa action: strike (miss) ... --- time: 20:03:47 player: Sammy Sosa action: grand slam ... in.json100644001750001750 23513626002577 22037 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U9NS{ "time": "20:03:20", "player": "Sammy Sosa", "action": "strike (miss)" } { "time": "20:03:47", "player": "Sammy Sosa", "action": "grand slam" } in.yaml100644001750001750 2013626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4MUZ{"foo" : "bar"} in.json100644001750001750 2313626002577 22013 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4MUZ{ "foo": "bar" } in.yaml100644001750001750 513626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NHX8: in.json100644001750001750 1713626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NHX8{ "": null } in.yaml100644001750001750 7413626002577 21724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5C5M- { one : two , three: four , } - {five: six,seven : eight} in.json100644001750001750 14313626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5C5M[ { "one": "two", "three": "four" }, { "five": "six", "seven": "eight" } ] in.yaml100644001750001750 27213626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BMT--- 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 in.json100644001750001750 33213626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BMT{ "top1": { "key1": "one" }, "top2": { "key2": "two" }, "top3": { "key3": "three" }, "top4": { "key4": "four" }, "top5": { "key5": "five" }, "top6": "six", "top7": "seven" } in.yaml100644001750001750 5713626002577 21744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BF9H--- plain: a b # end of scalar c in.yaml100644001750001750 21713626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2AD- | # Empty header↓ literal - >1 # Indentation indicator↓ folded - |+ # Chomping indicator↓ keep - >1- # Both indicators↓ strip in.json100644001750001750 7313626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2AD[ "literal\n", " folded\n", "keep\n\n", " strip" ] in.yaml100644001750001750 2613626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GT5M- item1 &node - item2 in.yaml100644001750001750 4513626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X38W{ &a [a, &b b]: *b, *a : [c, *b, d]} in.yaml100644001750001750 1113626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D9TUfoo: bar in.json100644001750001750 2313626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D9TU{ "foo": "bar" } in.yaml100644001750001750 10113626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q4CLkey1: "quoted1" key2: "quoted2" trailing content key3: "quoted3" in.yaml100644001750001750 4613626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8CWC--- key ends with two colons::: value in.json100644001750001750 5413626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8CWC{ "key ends with two colons::": "value" } in.yaml100644001750001750 5313626002577 21753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UT92--- { matches % : 20 } ... --- # Empty ... in.json100644001750001750 3313626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UT92{ "matches %": 20 } null in.yaml100644001750001750 2613626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZVH3- key: value - item1 in.yaml100644001750001750 3213626002577 22012 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5NYZkey: # Comment value in.json100644001750001750 2513626002577 22023 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5NYZ{ "key": "value" } in.yaml100644001750001750 12613626002577 22033 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WLZ# Private --- !foo "bar" ... # Global %TAG ! tag:example.com,2000:app/ --- !foo "bar" in.yaml100644001750001750 1613626002577 21705 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N782[ --- , ... ] in.yaml100644001750001750 2113626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CXX2--- &anchor a: b in.yaml100644001750001750 2013626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G7JEa\nb: 1 c d: 1 in.yaml100644001750001750 2213626002577 21740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FTA2--- &sequence - a in.json100644001750001750 1213626002577 21746 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FTA2[ "a" ] in.yaml100644001750001750 4213626002577 21772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KSS4--- "quoted string" --- &node foo in.json100644001750001750 2613626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KSS4"quoted string" "foo" in.yaml100644001750001750 2313626002577 22017 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZXT5[ "key" :value ] in.yaml100644001750001750 4413626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RTP8%YAML 1.2 --- Document ... # Suffix in.json100644001750001750 1313626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RTP8"Document" in.yaml100644001750001750 2013626002577 21737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/98YD# Comment only. in.json100644001750001750 013626002577 21724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/98YDin.yaml100644001750001750 7313626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JS2JFirst occurrence: &anchor Value Second occurrence: *anchor in.json100644001750001750 10213626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JS2J{ "First occurrence": "Value", "Second occurrence": "Value" } in.yaml100644001750001750 2313626002577 21670 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/753E--- |- ab ... in.json100644001750001750 513626002577 21657 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/753E"ab" in.yaml100644001750001750 613626002577 21717 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/65WH- foo in.json100644001750001750 1413626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/65WH[ "foo" ] in.yaml100644001750001750 6213626002577 21744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2DT{ "adjacent":value, "readable": value, "empty": } in.json100644001750001750 10213626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2DT{ "adjacent": "value", "readable": "value", "empty": null } in.yaml100644001750001750 6313626002577 21723 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8KB6--- - { single line, a: b} - { multi line, a: b} in.json100644001750001750 14013626002577 21746 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8KB6[ { "single line": null, "a": "b" }, { "multi line": null, "a": "b" } ] in.yaml100644001750001750 4013626002577 21674 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K527>- trimmed as space in.json100644001750001750 3013626002577 21702 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K527"trimmed\n\n\nas space" in.yaml100644001750001750 13613626002577 21727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/229Q- name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 in.json100644001750001750 21113626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/229Q[ { "name": "Mark McGwire", "hr": 65, "avg": 0.278 }, { "name": "Sammy Sosa", "hr": 63, "avg": 0.288 } ] in.yaml100644001750001750 4413626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9FMGa: b: c: d e: f: g h: i in.json100644001750001750 13613626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9FMG{ "a": { "b": { "c": "d" }, "e": { "f": "g" } }, "h": "i" } in.yaml100644001750001750 2413626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QB6E--- quoted: "a b c" in.yaml100644001750001750 1513626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4T7aaa: bbb ... in.json100644001750001750 2313626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4T7{ "aaa": "bbb" } in.yaml100644001750001750 5613626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CUP7anchored: !local &anchor value alias: *anchor in.json100644001750001750 5613626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CUP7{ "anchored": "value", "alias": "value" } in.yaml100644001750001750 3613626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SHHsingle: 'text' double: "text" in.json100644001750001750 5313626002577 21772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SHH{ "single": "text", "double": "text" } in.yaml100644001750001750 2013626002577 21711 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GH63? a : 13 1.5: d in.json100644001750001750 3413626002577 21725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GH63{ "a": 13, "1.5": "d" } in.yaml100644001750001750 2613626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK4H--- [ key : value ] in.yaml100644001750001750 3013626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TD5N- item1 - item2 invalid in.yaml100644001750001750 1313626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZCZ6a: b: c: d in.yaml100644001750001750 5213626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FQ7F- Mark McGwire - Sammy Sosa - Ken Griffey in.json100644001750001750 6613626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FQ7F[ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] in.yaml100644001750001750 7113626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CN3R&flowseq [ a: b, &c c: d, { &e e: f }, &g { g: h } ] in.json100644001750001750 13313626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CN3R[ { "a": "b" }, { "c": "d" }, { "e": "f" }, { "g": "h" } ] in.yaml100644001750001750 10113626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BEC7%YAML 1.3 # Attempt parsing # with a warning --- "foo" in.json100644001750001750 613626002577 21715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BEC7"foo" in.yaml100644001750001750 5313626002577 22001 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W5VHa: &:@*!$": scalar a b: *:@*!$": in.json100644001750001750 5113626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W5VH{ "a": "scalar a", "b": "scalar a" } in.yaml100644001750001750 4313626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KS4U--- [ sequence item ] invalid item in.yaml100644001750001750 6613626002577 21757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z9M4%TAG !e! tag:example.com,2000:app/ --- - !e!foo "bar" in.yaml100644001750001750 10413626002577 21737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D83L- |2- explicit indent and chomp - |-2 chomp and explicit indent in.json100644001750001750 10113626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D83L[ "explicit indent and chomp", "chomp and explicit indent" ] in.yaml100644001750001750 12013626002577 22031 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SYW4hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In in.json100644001750001750 5513626002577 22027 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SYW4{ "hr": 65, "avg": 0.278, "rbi": 147 } in.yaml100644001750001750 2213626002577 21676 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G992> folded text in.json100644001750001750 2013626002577 21703 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G992"folded text\n" in.yaml100644001750001750 3713626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK3J--- > line1 # no comment line3 in.json100644001750001750 3513626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK3J"line1 # no comment line3\n" in.yaml100644001750001750 11213626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P76L%TAG !! tag:example.com,2000:app/ --- !!int 1 - 3 # Interval, not integer in.yaml100644001750001750 2513626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CT4Q[ ? foo bar : baz ] in.json100644001750001750 4113626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CT4Q[ { "foo bar": "baz" } ] in.yaml100644001750001750 22413626002577 21753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FBC9safe: a!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ safe question mark: ?foo safe colon: :foo safe dash: -foo in.json100644001750001750 26213626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FBC9{ "safe": "a!\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~ !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~", "safe question mark": "?foo", "safe colon": ":foo", "safe dash": "-foo" } in.yaml100644001750001750 3213626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6KGN--- a: &anchor b: *anchor in.json100644001750001750 3513626002577 21764 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6KGN{ "a": null, "b": null } in.yaml100644001750001750 1713626002577 21774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EW3Vk1: v1 k2: v2 in.yaml100644001750001750 7713626002577 21774 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NP9H"folded to a space, to a line feed, or \ \ non-content" in.json100644001750001750 7213626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NP9H"folded to a space,\nto a line feed, or \t \tnon-content" in.yaml100644001750001750 4413626002577 21710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/33X3--- - !!int 1 - !!int -2 - !!int 33 in.json100644001750001750 2413626002577 21715 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/33X3[ 1, -2, 33 ] in.yaml100644001750001750 2613626002577 21733 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B3HG--- > folded text in.json100644001750001750 2013626002577 21734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B3HG"folded text\n" in.yaml100644001750001750 3413626002577 21711 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6S55key: - bar - baz invalid in.yaml100644001750001750 7313626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDR7sequence: [ one, two, ] mapping: { sky: blue, sea: green } in.json100644001750001750 14713626002577 22024 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDR7{ "sequence": [ "one", "two" ], "mapping": { "sky": "blue", "sea": "green" } } in.yaml100644001750001750 2013626002577 21714 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9J7Afoo: bar: baz in.json100644001750001750 4413626002577 21731 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9J7A{ "foo": { "bar": "baz" } } in.yaml100644001750001750 5313626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z67Pliteral: |2 value folded: !foo >1 value in.json100644001750001750 6213626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z67P{ "literal": "value\n", "folded": "value\n" } in.yaml100644001750001750 3413626002577 21712 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A2M4? a : - b - - c - d in.json100644001750001750 7313626002577 21724 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A2M4{ "a": [ "b", [ "c", "d" ] ] } in.yaml100644001750001750 23013626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F8F9 # Strip # Comments: strip: |- # text # Clip # comments: clip: | # text # Keep # comments: keep: |+ # text # Trail # comments. in.json100644001750001750 10613626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F8F9{ "strip": "# text", "clip": "# text\n", "keep": "# text\n\n" } in.yaml100644001750001750 11013626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F6MC--- a: >2 more indented regular b: >2 more indented regular in.json100644001750001750 11713626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F6MC{ "a": " more indented\nregular\n", "b": "\n\n more indented\nregular\n" } in.yaml100644001750001750 6213626002577 21710 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7A4E" 1st non-empty 2nd non-empty 3rd non-empty " in.json100644001750001750 5713626002577 21723 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7A4E" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 2713626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SBG9{a: [b, c], [d, e]: f} in.yaml100644001750001750 11213626002577 21733 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7A3Bare document ... # No document ... | %!PS-Adobe-2.0 # Not the first line in.json100644001750001750 7013626002577 21725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7A3"Bare document" "%!PS-Adobe-2.0 # Not the first line\n" in.yaml100644001750001750 117413626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/565Ncanonical: !!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. in.yaml100644001750001750 1013626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6XDY--- --- in.json100644001750001750 1213626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6XDYnull null in.yaml100644001750001750 7213626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6SLA"foo\nbar:baz\tx \\$%^&*()x": 23 'x\ny:z\tx $%^&*()x': 24 in.json100644001750001750 10513626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6SLA{ "foo\nbar:baz\tx \\$%^&*()x": 23, "x\\ny:z\\tx $%^&*()x": 24 } in.yaml100644001750001750 20713626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9U5K--- # Products purchased - item : Super Hoop quantity: 1 - item : Basketball quantity: 4 - item : Big Shoes quantity: 1 in.json100644001750001750 24113626002577 21773 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9U5K[ { "item": "Super Hoop", "quantity": 1 }, { "item": "Basketball", "quantity": 4 }, { "item": "Big Shoes", "quantity": 1 } ] in.yaml100644001750001750 2313626002577 21753 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EXG3--- ---word1 word2 in.json100644001750001750 2113626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EXG3"---word1 word2" in.yaml100644001750001750 6613626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4JVGtop1: &node1 &k1 key1: val1 top2: &node2 &v2 val2 in.yaml100644001750001750 2313626002577 21714 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/27NA%YAML 1.2 --- text in.json100644001750001750 713626002577 21705 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/27NA"text" in.yaml100644001750001750 33313626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KAX--- &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 in.json100644001750001750 20713626002577 22014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KAX"scalar1" "scalar2" "scalar3" { "key5": "value4" } { "a6": 1, "b6": 2 } { "key8": "value7" } { "key10": "value9" } "value11" in.yaml100644001750001750 3013626002577 21735 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T5N4--- | literal text in.json100644001750001750 2413626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T5N4"literal\n\ttext\n" in.yaml100644001750001750 6613626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9TFX--- " 1st non-empty 2nd non-empty 3rd non-empty " in.json100644001750001750 5713626002577 22015 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9TFX" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 14513626002577 22030 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TYM%TAG !m! !my- --- # Bulb here !m!light fluorescent ... %TAG !m! !my- --- # Color here !m!light green in.yaml100644001750001750 3113626002577 21732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/62EZ--- x: { y: z }in: valid in.yaml100644001750001750 13413626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W42U- # Empty - | block node - - one # Compact - two # sequence - one: two # Compact mapping in.json100644001750001750 12513626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W42U[ null, "block node\n", [ "one", "two" ], { "one": "two" } ] in.yaml100644001750001750 7613626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S3PDplain key: in-line value : # Both empty "quoted key": - entry in.json100644001750001750 12213626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S3PD{ "plain key": "in-line value", "": null, "quoted key": [ "entry" ] } in.yaml100644001750001750 5013626002577 21765 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JQ4Rblock sequence: - one - two : three in.json100644001750001750 11213626002577 22013 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JQ4R{ "block sequence": [ "one", { "two": "three" } ] } in.yaml100644001750001750 2713626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BS4Kword1 # comment word2 in.yaml100644001750001750 6413626002577 21734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/35KP--- !!map ? a : b --- !!seq - !!str c --- !!str d e in.json100644001750001750 3713626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/35KP{ "a": "b" } [ "c" ] "d e" in.yaml100644001750001750 1613626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QT73# comment ... in.json100644001750001750 013626002577 21725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QT73in.yaml100644001750001750 63313626002577 22042 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZT7--- 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 in.json100644001750001750 101313626002577 22062 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZT7{ "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" } ] } in.yaml100644001750001750 5413626002577 22000 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JQW# ASCII Art --- | \//||\/|| // || ||__ in.json100644001750001750 3513626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JQW"\\//||\\/||\n// || ||__\n" in.yaml100644001750001750 2313626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CTN5--- [ a, b, c, , ] in.yaml100644001750001750 3013626002577 21704 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T833--- { foo: 1 bar: 2 } in.yaml100644001750001750 1413626002577 21761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TRB--- " --- " in.yaml100644001750001750 2413626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JDH8--- k:#foo &a !t s in.json100644001750001750 2113626002577 21747 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JDH8"k:#foo &a !t s" in.yaml100644001750001750 6613626002577 22025 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T4YY--- ' 1st non-empty 2nd non-empty 3rd non-empty ' in.json100644001750001750 5713626002577 22034 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T4YY" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 3113626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G9HC--- seq: &anchor - a - b in.yaml100644001750001750 15413626002577 22025 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3GZXFirst occurrence: &anchor Foo Second occurrence: *anchor Override anchor: &anchor Bar Reuse anchor: *anchor in.json100644001750001750 16313626002577 22034 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3GZX{ "First occurrence": "Foo", "Second occurrence": "Foo", "Override anchor": "Bar", "Reuse anchor": "Bar" } in.yaml100644001750001750 2413626002577 21727 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D49Q'a\nb': 1 'c d': 1 in.yaml100644001750001750 2613626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RLU9foo: - 42 bar: - 44 in.json100644001750001750 6113626002577 22011 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RLU9{ "foo": [ 42 ], "bar": [ 44 ] } in.yaml100644001750001750 1713626002577 21777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9YRDa b c d e in.json100644001750001750 1513626002577 22004 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9YRD"a b c d\ne" in.yaml100644001750001750 3013626002577 21744 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V55R- &a a - &b b - *a - *b in.json100644001750001750 3713626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V55R[ "a", "b", "a", "b" ] in.yaml100644001750001750 5513626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7FWL! foo : ! baz in.yaml100644001750001750 1313626002577 21734 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K54U--- scalar in.json100644001750001750 1113626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K54U"scalar" in.yaml100644001750001750 3713626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NB6Zkey: value with tabs in.json100644001750001750 4013626002577 21772 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NB6Z{ "key": "value with\ntabs" } in.yaml100644001750001750 11513626002577 21736 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/735Y- "flow in block" - > Block scalar - !!map # Block collection foo : bar in.json100644001750001750 10413626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/735Y[ "flow in block", "Block scalar\n", { "foo": "bar" } ] in.yaml100644001750001750 2013626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RR7Fa: 4.2 ? 23 : d in.json100644001750001750 3413626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RR7F{ "23": "d", "a": 4.2 } in.yaml100644001750001750 2213626002577 21721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4H7K--- [ a, b, c ] ] in.yaml100644001750001750 5613626002577 21742 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V9D5- sun: yellow - ? earth: blue : moon: white in.yaml100644001750001750 2213626002577 21671 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A984a: b c d: e f in.json100644001750001750 3713626002577 21706 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A984{ "a": "b c", "d": "e f" } in.yaml100644001750001750 5413626002577 21740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P94Kkey: # Comment # lines value in.json100644001750001750 2513626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P94K{ "key": "value" } in.yaml100644001750001750 17713626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BUB--- hr: - Mark McGwire # Following node labeled SS - &SS Sammy Sosa rbi: - *SS # Subsequent occurrence - Ken Griffey in.json100644001750001750 15313626002577 21777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BUB{ "hr": [ "Mark McGwire", "Sammy Sosa" ], "rbi": [ "Sammy Sosa", "Ken Griffey" ] } in.yaml100644001750001750 7213626002577 21770 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7ZZ5--- nested sequences: - - - [] - - - {} key1: [] key2: {} in.json100644001750001750 21313626002577 22014 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7ZZ5{ "nested sequences": [ [ [ [] ] ], [ [ {} ] ] ], "key1": [], "key2": {} } in.yaml100644001750001750 10213626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4QFQ- | detected - > # detected - |1 explicit - > detected in.json100644001750001750 11213626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4QFQ[ "detected\n", "\n\n# detected\n", " explicit\n", "detected\n" ] in.yaml100644001750001750 13613626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5WE3? explicit key # Empty value ? | block key : - one # Explicit compact - two # block value in.json100644001750001750 11013626002577 21754 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5WE3{ "explicit key": null, "block key\n": [ "one", "two" ] } in.yaml100644001750001750 3213626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MJS9> foo bar baz in.json100644001750001750 3213626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MJS9"foo \n\n\t bar\n\nbaz\n" in.yaml100644001750001750 2213626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MAG--- [ , a, b, c ] in.yaml100644001750001750 12613626002577 21777 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NAT4--- a: ' ' b: ' ' c: " " d: " " e: ' ' f: " " g: ' ' h: " " in.json100644001750001750 15313626002577 22006 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NAT4{ "a": " ", "b": " ", "c": " ", "d": " ", "e": "\n", "f": "\n", "g": "\n\n", "h": "\n\n" } in.yaml100644001750001750 1613626002577 21721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B63P%YAML 1.2 ... in.yaml100644001750001750 1713626002577 21720 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/82AN---word1 word2 in.json100644001750001750 2113626002577 21722 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/82AN"---word1 word2" in.yaml100644001750001750 2213626002577 21732 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6H3V'foo: bar\': baz' in.json100644001750001750 3313626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6H3V{ "foo: bar\\": "baz'" } in.yaml100644001750001750 2013626002577 21725 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZ631: - 2 - 3 4: 5 in.json100644001750001750 5013626002577 21737 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZ63{ "1": [ 2, 3 ], "4": 5 } in.yaml100644001750001750 2413626002577 21721 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M9B4| literal text in.json100644001750001750 2413626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M9B4"literal\n\ttext\n" in.yaml100644001750001750 4313626002577 21743 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H3Z8--- wanted: love ♥ and peace ☮ in.json100644001750001750 5113626002577 21751 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H3Z8{ "wanted": "love ♥ and peace ☮" } in.yaml100644001750001750 13013626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7T8X> folded line next line * bullet * list * lines last line # Comment in.json100644001750001750 11513626002577 22010 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7T8X"\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n" in.yaml100644001750001750 2313626002577 21740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/E76Z&a a: &b b *a : *b in.json100644001750001750 1713626002577 21752 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/E76Z{ "a": "b" } in.yaml100644001750001750 2613626002577 21755 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4EJS--- a: b: c: value in.yaml100644001750001750 3013626002577 21762 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FP8R--- > line1 line2 line3 in.json100644001750001750 2613626002577 21776 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FP8R"line1 line2 line3\n" in.yaml100644001750001750 2213626002577 21677 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8G76 # Comment in.json100644001750001750 013626002577 21662 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8G76in.yaml100644001750001750 1513626002577 21771 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QF4Y[ foo: bar ] in.json100644001750001750 3513626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QF4Y[ { "foo": "bar" } ] in.yaml100644001750001750 3213626002577 22007 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SSW6--- 'here''s to "quotes"' in.json100644001750001750 2713626002577 22022 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SSW6"here's to \"quotes\"" in.yaml100644001750001750 3213626002577 21730 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4Q9F--- > ab cd ef gh in.json100644001750001750 2413626002577 21740 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4Q9F"ab cd\nef\n\ngh\n" in.yaml100644001750001750 3313626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TE2Ablock mapping: key: value in.json100644001750001750 6013626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TE2A{ "block mapping": { "key": "value" } } in.yaml100644001750001750 6513626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6ZKBDocument --- # Empty ... %YAML 1.2 --- matches %: 20 in.json100644001750001750 4613626002577 21775 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6ZKB"Document" null { "matches %": 20 } in.yaml100644001750001750 6013626002577 21761 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N4JPmap: key1: "quoted1" key2: "bad indentation" in.yaml100644001750001750 4513626002577 21741 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EHF6!!map { k: !!seq [ a, !!str b] } in.json100644001750001750 4213626002577 21745 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EHF6{ "k": [ "a", "b" ] } in.yaml100644001750001750 10113626002577 22030 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PW8X- &a - a - &a : a b: &b - &c : &a - ? &d - ? &e : &a in.yaml100644001750001750 3613626002577 21760 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDM2- { url: http://example.org } in.json100644001750001750 5413626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDM2[ { "url": "http://example.org" } ] in.yaml100644001750001750 2713626002577 21750 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8QBEkey: - item1 - item2 in.json100644001750001750 5413626002577 21757 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8QBE{ "key": [ "item1", "item2" ] } in.yaml100644001750001750 7113626002577 21726 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SA2--- - { "single line": value} - { "multi line": value} in.json100644001750001750 11213626002577 21751 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SA2[ { "single line": "value" }, { "multi line": "value" } ] in.yaml100644001750001750 3713626002577 22002 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JTV5? a true : null d ? e 42 in.json100644001750001750 5113626002577 22005 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JTV5{ "a true": "null d", "e 42": null } in.yaml100644001750001750 14013626002577 21767 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J3BT# Tabs and spaces quoted: "Quoted " block: | void main() { printf("Hello, world!\n"); } in.json100644001750001750 13613626002577 22003 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J3BT{ "quoted": "Quoted \t", "block": "void main() {\n\tprintf(\"Hello, world!\\n\");\n}\n" } in.yaml100644001750001750 2613626002577 22013 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3UYSescaped slash: "a\/b" in.json100644001750001750 3513626002577 22022 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3UYS{ "escaped slash": "a/b" } in.yaml100644001750001750 2313626002577 21756 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EX5H--- a b c d e in.json100644001750001750 1513626002577 21766 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EX5H"a b c d\ne" out.yaml100644001750001750 4213626002577 22106 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K858strip: "" clip: "" keep: |2+ ... out.yaml100644001750001750 5513626002577 22136 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NJ66--- - single line: value - multi line: value out.yaml100644001750001750 77313626002577 22215 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UGM3--- ! 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. out.yaml100644001750001750 3213626002577 22160 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BU8Lkey: &anchor !!map a: b out.yaml100644001750001750 21013626002577 22167 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMK4name: Mark McGwire accomplishment: > Mark set a major league home run record in 1998. stats: | 65 Home Runs 0.278 Batting Average out.yaml100644001750001750 4113626002577 22154 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4V8U--- plain\value\with\backslashes out.yaml100644001750001750 5213626002577 22110 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CC74--- ! "bar" out.yaml100644001750001750 7113626002577 22227 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9WXW!foo "bar" ... --- ! "bar" out.yaml100644001750001750 2713626002577 22151 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TS54> ab cd ef gh out.yaml100644001750001750 5713626002577 22225 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2XXW--- !!set Mark McGwire: Sammy Sosa: Ken Griff: out.yaml100644001750001750 1113626002577 22142 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7W2Pa: b: c: out.yaml100644001750001750 13213626002577 22215 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XW4Da: "double quotes" b: plain value c: d ? - seq1 : - seq2 e: &node - x: y block: > abcde out.yaml100644001750001750 2213626002577 22110 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/54T7foo: you bar: far out.yaml100644001750001750 12613626002577 22166 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JHB9--- - Mark McGwire - Sammy Sosa - Ken Griffey --- - Chicago Cubs - St Louis Cardinals out.yaml100644001750001750 2313626002577 22202 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3MYTk:#foo &a !t s ... out.yaml100644001750001750 7613626002577 22107 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/74H7!!str a: b c: !!int 42 e: !!str f g: h !!int 23: !!bool false out.yaml100644001750001750 20013626002577 22175 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KK5Pcomplex1: ? - a : complex2: ? - a : b complex3: ? - a : > b complex4: ? > a : complex5: ? - a : - b out.yaml100644001750001750 11013626002577 22237 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XV9VFolding: "Empty line\nas a line feed" Chomping: | Clipped empty lines out.yaml100644001750001750 5313626002577 22112 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F2C7- &a !!str a - !!int 2 - &c !!int 4 - &d d out.yaml100644001750001750 1213626002577 22155 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7VC1: 2 3: 4 out.yaml100644001750001750 1713626002577 22163 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5MUD--- "foo": bar out.yaml100644001750001750 11113626002577 22135 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4FJ6--- - ? - a - - ? - - b - c : d - e : 23 out.yaml100644001750001750 3113626002577 22154 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SKE5--- seq: &anchor - a - b out.yaml100644001750001750 3313626002577 22145 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BCT- foo: bar - - baz - baz out.yaml100644001750001750 3313626002577 22132 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T26H"\n\nliteral\n \n\ntext\n" out.yaml100644001750001750 5313626002577 22126 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93JH- key: value key2: value2 - key3: value3 out.yaml100644001750001750 12013626002577 22145 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ABKunquoted: "separate" http://foo.com: null omitted value: null null: omitted key out.yaml100644001750001750 13213626002577 22220 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/YD5X- - name - hr - avg - - Mark McGwire - 65 - 0.278 - - Sammy Sosa - 63 - 0.288 out.yaml100644001750001750 4313626002577 22146 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5KJE- - one - two - - three - four out.yaml100644001750001750 6313626002577 22164 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9BXH--- - "single line": a: b - "multi line": a: b out.yaml100644001750001750 6113626002577 22146 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FH7J- !!str - !!null : a b: !!str - !!str : !!null out.yaml100644001750001750 5713626002577 22200 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HS5T'1st non-empty 2nd non-empty 3rd non-empty' out.yaml100644001750001750 2413626002577 22166 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CPZ3--- tab: "\tstring" out.yaml100644001750001750 16313626002577 22140 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6HB6Not indented: By one space: | By four spaces Flow style: - By two - Also by two - Still by two out.yaml100644001750001750 10713626002577 22216 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R4YG- | detected - >2 # detected - |2 explicit - "\t\ndetected\n" out.yaml100644001750001750 313626002577 22135 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q5MG{} out.yaml100644001750001750 2013626002577 22161 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FUP4- a - - b - c out.yaml100644001750001750 3713626002577 22143 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93WF--- >- trimmed as space out.yaml100644001750001750 2313626002577 22167 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4JQ- "12" - 12 - ! 12 out.yaml100644001750001750 6313626002577 22101 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/87E4'implicit block key': - 'implicit flow key': value out.yaml100644001750001750 25613626002577 22157 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/26DV"top1": "key1": &alias1 scalar1 'top2': 'key2': &alias2 scalar2 top3: &node3 *alias1 : scalar3 top4: *alias2 : scalar4 top5: scalar5 top6: &anchor6 'key6': scalar6 out.yaml100644001750001750 21013626002577 22202 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5DY? - Detroit Tigers - Chicago cubs : - 2001-07-23 ? - New York Yankees - Atlanta Braves : - 2001-07-02 - 2001-08-12 - 2001-08-14 out.yaml100644001750001750 5713626002577 22163 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5BVJliteral: | some text folded: > some text out.yaml100644001750001750 5313626002577 22173 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H2RWfoo: 1 bar: 2 text: "a\n \nb\n\nc\n\nd\n" out.yaml100644001750001750 1413626002577 22210 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MYW6|- ab ... out.yaml100644001750001750 2313626002577 22153 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DC7Xa: b seq: - a c: d out.yaml100644001750001750 10013626002577 22214 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7PZ--- !!omap - Mark McGwire: 65 - Sammy Sosa: 63 - Ken Griffy: 58 out.yaml100644001750001750 25413626002577 22213 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G4RSunicode: "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: '|\-*-/|' out.yaml100644001750001750 17713626002577 22177 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2EBWa!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~: safe ?foo: safe question mark :foo: safe colon -foo: safe dash this is#not: a comment out.yaml100644001750001750 3313626002577 22202 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DWX9"\n\nliteral\n \n\ntext\n" out.yaml100644001750001750 1613626002577 22137 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3R3P&sequence - a out.yaml100644001750001750 3313626002577 22116 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7Z25--- scalar1 ... key: value out.yaml100644001750001750 17113626002577 22167 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PBJ2american: - Boston Red Sox - Detroit Tigers - New York Yankees national: - New York Mets - Chicago Cubs - Atlanta Braves out.yaml100644001750001750 2413626002577 22137 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G5U8--- - - '-' - '-' out.yaml100644001750001750 12613626002577 22202 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4CQQplain: This unquoted scalar spans many lines. quoted: "So does this quoted scalar.\n" out.yaml100644001750001750 10113626002577 22226 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ZYMplain: text lines quoted: "text lines" block: "text\n \tlines\n" out.yaml100644001750001750 5613626002577 22143 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BFJ--- &mapping ? &key - &item a - b - c : value out.yaml100644001750001750 3513626002577 22136 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L94M!!str a: !!int 47 c: !!str d out.yaml100644001750001750 6313626002577 22207 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LQZ7"implicit block key": - "implicit flow key": value out.yaml100644001750001750 2213626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TL85" foo\nbar\nbaz " out.yaml100644001750001750 4013626002577 22176 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7NX--- a: - b - c - d: - e - f out.yaml100644001750001750 1713626002577 22203 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X8DW--- key: value out.yaml100644001750001750 7213626002577 22147 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q8AD"folded to a space,\nto a line feed, or \t \tnon-content" out.yaml100644001750001750 3113626002577 22204 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZWK4--- a: 1 b: &anchor c: 3 out.yaml100644001750001750 2213626002577 22167 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WPF" foo\nbar\nbaz " out.yaml100644001750001750 2713626002577 22162 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/WZ62foo: !!str !!str : bar out.yaml100644001750001750 2113626002577 22171 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZK9Hkey: - - - value out.yaml100644001750001750 2013626002577 22115 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6M2F&a a: &b b : *a out.yaml100644001750001750 10413626002577 22212 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J9HZ--- hr: - Mark McGwire - Sammy Sosa rbi: - Sammy Sosa - Ken Griffey out.yaml100644001750001750 2113626002577 22172 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LX3P? - flow : block out.yaml100644001750001750 2413626002577 22165 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7TMG--- - word1 - word2 out.yaml100644001750001750 713626002577 22162 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MXS3- a: b out.yaml100644001750001750 4013626002577 22140 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F3CP--- a: - b - c - d: - e - f out.yaml100644001750001750 46313626002577 22206 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C4HZ--- ! - ! center: &ORIGIN x: 73 y: 129 radius: 7 - ! start: *ORIGIN finish: x: 89 y: 102 - ! start: *ORIGIN color: 0xFFEEBB text: Pretty vector drawing. out.yaml100644001750001750 4313626002577 22131 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q88A- - a - b - a: b - "a" - 'b' - c out.yaml100644001750001750 10613626002577 22223 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZF4XMark McGwire: hr: 65 avg: 0.278 Sammy Sosa: hr: 63 avg: 0.288 out.yaml100644001750001750 3513626002577 22171 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2AUY- !!str a - b - !!int 42 - d out.yaml100644001750001750 13213626002577 22227 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZP5a: "double quotes" b: plain value c: d ? - seq1 : - seq2 e: &node - x: y block: > abcde out.yaml100644001750001750 1013626002577 22110 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/52DL--- ! a out.yaml100644001750001750 1313626002577 22122 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D88Ja: - b - c out.yaml100644001750001750 2113626002577 22147 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DHP8- foo - bar - 42 out.yaml100644001750001750 6213626002577 22177 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q9WF? first: Sammy last: Sosa : hr: 65 avg: 0.278 out.yaml100644001750001750 5713626002577 22153 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L9U5implicit block key: - implicit flow key: value out.yaml100644001750001750 11013626002577 22146 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5GBFFolding: "Empty line\nas a line feed" Chomping: | Clipped empty lines out.yaml100644001750001750 11313626002577 22170 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8UDB- "double quoted" - 'single quoted' - plain text - - nested - single: pair out.yaml100644001750001750 3313626002577 22170 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2SXE&a: key: &a value foo: *a: out.yaml100644001750001750 24713626002577 22156 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DBG4- ::vector - ": - ()" - Up, up, and away! - -123 - http://example.com/foo#bar - - ::vector - ": - ()" - "Up, up and away!" - -123 - http://example.com/foo#bar out.yaml100644001750001750 6013626002577 22157 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JWBfoo: !!seq - !!str a - !!map key: !!str value out.yaml100644001750001750 7313626002577 22113 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/96L6--- > Mark McGwire's year was crippled by a knee injury. out.yaml100644001750001750 3113626002577 22131 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M29Ma: | ab cd ef ... out.yaml100644001750001750 5013626002577 22160 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMQ5&a1 !!str "foo": !!str bar &a2 baz: *a1 out.yaml100644001750001750 25413626002577 22241 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3XV--- 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 out.yaml100644001750001750 2013626002577 22120 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3C3--- !!str "foo" out.yaml100644001750001750 1213626002577 22157 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2LFX--- "foo" out.yaml100644001750001750 5213626002577 22117 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5C3literal: | value folded: !foo > value out.yaml100644001750001750 3313626002577 22215 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XYN--- - &😁 unicode anchor out.yaml100644001750001750 6213626002577 22157 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LP6E- - a - b - c - "a": b c: 'd' e: "f" - [] out.yaml100644001750001750 2013626002577 22167 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6FWR"ab\n\n \n" ... out.yaml100644001750001750 2613626002577 22075 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/36F6--- plain: 'a b c' out.yaml100644001750001750 7013626002577 22140 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S9E8sequence: - one - two mapping: sky: blue sea: green out.yaml100644001750001750 4313626002577 22204 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W4TN--- | %!PS-Adobe-2.0 ... --- ... out.yaml100644001750001750 4413626002577 22150 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AB8U- single multiline - sequence entry out.yaml100644001750001750 6113626002577 22164 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PRH3' 1st non-empty 2nd non-empty 3rd non-empty ' out.yaml100644001750001750 1213626002577 22161 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6LVF--- "foo" out.yaml100644001750001750 6613626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R52L--- top1: - item1 - key2: value2 - item3 top2: value2 out.yaml100644001750001750 3113626002577 22202 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XLQ9--- scalar %YAML 1.2 ... out.yaml100644001750001750 2113626002577 22207 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PUW8--- a: b --- ... out.yaml100644001750001750 4213626002577 22135 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DFF7explicit: entry implicit: entry : out.yaml100644001750001750 3013626002577 22163 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Y2GN--- key: &an:chor value out.yaml100644001750001750 10513626002577 22116 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/57H4sequence: !!seq - entry - !!seq - nested mapping: !!map foo: bar out.yaml100644001750001750 1713626002577 22205 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K3WX--- "foo": bar out.yaml100644001750001750 5713626002577 22122 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A6F9strip: |- text clip: | text keep: | text out.yaml100644001750001750 41513626002577 22130 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/77H8--- not-date: !!str 2002-04-28 picture: !!binary | R0lGODlhDAAMAIQAAP//9/X 17unp5WZmZgAAAOfn515eXv Pz7Y6OjuDg4J+fn5OTk6enp 56enmleECcgggoBADs= application specific tag: !something | The semantics of the tag above may be different for different documents. out.yaml100644001750001750 013626002577 22156 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HWV9out.yaml100644001750001750 17313626002577 22214 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6VJK> Sammy Sosa completed another fine season with great stats. 63 Home Runs 0.288 Batting Average What a year! out.yaml100644001750001750 1113626002577 22145 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S7BG--- - :, out.yaml100644001750001750 6413626002577 22124 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5C5M- one: two three: four - five: six seven: eight out.yaml100644001750001750 25413626002577 22205 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BMT--- 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 out.yaml100644001750001750 7113626002577 22137 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2AD- | literal - >2 folded - |+ keep - >2- strip out.yaml100644001750001750 4713626002577 22165 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X38W? &a - a - &b b : *b *a : - c - *b - d out.yaml100644001750001750 5013626002577 22152 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8CWC--- 'key ends with two colons::': value out.yaml100644001750001750 3613626002577 22155 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UT92--- matches %: 20 ... --- ... out.yaml100644001750001750 1313626002577 22212 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5NYZkey: value out.yaml100644001750001750 7513626002577 22217 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WLZ--- !foo "bar" ... --- ! "bar" out.yaml100644001750001750 2213626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FTA2--- &sequence - a out.yaml100644001750001750 4613626002577 22177 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KSS4--- "quoted string" --- &node foo ... out.yaml100644001750001750 2113626002577 22201 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RTP8--- Document ... out.yaml100644001750001750 013626002577 22116 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/98YDout.yaml100644001750001750 2013626002577 22066 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/753E--- |- ab ... out.yaml100644001750001750 5513626002577 22147 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2DT"adjacent": value "readable": value "empty": out.yaml100644001750001750 5713626002577 22127 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8KB6--- - single line: a: b - multi line: a: b out.yaml100644001750001750 3313626002577 22077 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K527>- trimmed as space out.yaml100644001750001750 12413626002577 22125 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/229Q- name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 out.yaml100644001750001750 5613626002577 22172 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CUP7anchored: &anchor !local value alias: *anchor out.yaml100644001750001750 1513626002577 22116 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GH63a: 13 1.5: d out.yaml100644001750001750 6013626002577 22154 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CN3R&flowseq - a: b - &c c: d - &e e: f - &g g: h out.yaml100644001750001750 1213626002577 22124 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BEC7--- "foo" out.yaml100644001750001750 5413626002577 22155 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z9M4--- - ! "bar" out.yaml100644001750001750 10213626002577 22136 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D83L- |- explicit indent and chomp - |- chomp and explicit indent out.yaml100644001750001750 3313626002577 22215 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SYW4hr: 65 avg: 0.278 rbi: 147 out.yaml100644001750001750 2013626002577 22075 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G992> folded text out.yaml100644001750001750 4113626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK3J--- > line1 # no comment line3 out.yaml100644001750001750 5213626002577 22140 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P76L--- ! 1 - 3 out.yaml100644001750001750 1713626002577 22164 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CT4Q- foo bar: baz out.yaml100644001750001750 21713626002577 22156 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FBC9safe: a!"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ !"#$%&'()*+,-./09:;<=>?@AZ[\]^_`az{|}~ safe question mark: ?foo safe colon: :foo safe dash: -foo out.yaml100644001750001750 3213626002577 22153 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6KGN--- a: &anchor b: *anchor out.yaml100644001750001750 7213626002577 22170 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NP9H"folded to a space,\nto a line feed, or \t \tnon-content" out.yaml100644001750001750 4413626002577 22111 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/33X3--- - !!int 1 - !!int -2 - !!int 33 out.yaml100644001750001750 2013626002577 22126 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B3HG> folded text out.yaml100644001750001750 7013626002577 22171 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDR7sequence: - one - two mapping: sky: blue sea: green out.yaml100644001750001750 5213626002577 22156 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z67Pliteral: | value folded: !foo > value out.yaml100644001750001750 2313626002577 22111 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A2M4a: - b - - c - d out.yaml100644001750001750 7313626002577 22127 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F8F9strip: |- # text clip: | # text keep: |+ # text ... out.yaml100644001750001750 5713626002577 22115 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7A4E" 1st non-empty\n2nd non-empty 3rd non-empty " out.yaml100644001750001750 3313626002577 22153 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SBG9a: - b - c ? - d - e : f out.yaml100644001750001750 1013626002577 22174 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6XDY--- --- out.yaml100644001750001750 7513626002577 22162 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6SLA? "foo\nbar:baz\tx \\$%^&*()x" : 23 'x\ny:z\tx $%^&*()x': 24 out.yaml100644001750001750 14613626002577 22171 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9U5K--- - item: Super Hoop quantity: 1 - item: Basketball quantity: 4 - item: Big Shoes quantity: 1 out.yaml100644001750001750 2113626002577 22152 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EXG3'---word1 word2' out.yaml100644001750001750 1113626002577 22112 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/27NA--- text out.yaml100644001750001750 33313626002577 22206 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KAX--- &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 out.yaml100644001750001750 2413626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T5N4"literal\n\ttext\n" out.yaml100644001750001750 5713626002577 22207 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9TFX" 1st non-empty\n2nd non-empty 3rd non-empty " out.yaml100644001750001750 5613626002577 22155 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W42U- - | block node - - one - two - one: two out.yaml100644001750001750 4313626002577 22170 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JQ4Rblock sequence: - one - two: three out.yaml100644001750001750 6113626002577 22132 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/35KP--- !!map a: b --- !!seq - !!str c --- !!str d e out.yaml100644001750001750 013626002577 22117 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QT73out.yaml100644001750001750 60113626002577 22236 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZT7--- 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 out.yaml100644001750001750 4013626002577 22174 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JQW--- | \//||\/|| // || ||__ out.yaml100644001750001750 3113626002577 22142 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JDH8--- "k:#foo &a !t s" ... out.yaml100644001750001750 6113626002577 22221 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T4YY' 1st non-empty 2nd non-empty 3rd non-empty ' out.yaml100644001750001750 2413626002577 22202 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RLU9foo: - 42 bar: - 44 out.yaml100644001750001750 1713626002577 22200 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9YRD'a b c d e' out.yaml100644001750001750 2413626002577 22166 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7FWL!!str foo: !bar baz out.yaml100644001750001750 1713626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K54U--- scalar ... out.yaml100644001750001750 3213626002577 22165 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NB6Zkey: 'value with tabs' out.yaml100644001750001750 7013626002577 22117 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/735Y- "flow in block" - > Block scalar - !!map foo: bar out.yaml100644001750001750 1513626002577 22167 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RR7Fa: 4.2 23: d out.yaml100644001750001750 1613626002577 22075 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A984a: b c d: e f out.yaml100644001750001750 1313626002577 22134 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P94Kkey: value out.yaml100644001750001750 10113626002577 22162 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BUB--- hr: - Mark McGwire - &SS Sammy Sosa rbi: - *SS - Ken Griffey out.yaml100644001750001750 7213626002577 22171 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7ZZ5--- nested sequences: - - - [] - - - {} key1: [] key2: {} out.yaml100644001750001750 5613626002577 22137 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5WE3explicit key: ? | block key : - one - two out.yaml100644001750001750 3213626002577 22170 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MJS9"foo \n\n\t bar\n\nbaz\n" out.yaml100644001750001750 2113626002577 22114 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/82AN'---word1 word2' out.yaml100644001750001750 2213626002577 22133 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6H3V'foo: bar\': baz' out.yaml100644001750001750 2413626002577 22122 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M9B4| literal text out.yaml100644001750001750 5313626002577 22145 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H3Z8--- wanted: "love \u2665 and peace \u262E" out.yaml100644001750001750 12013626002577 22176 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7T8X> folded line next line * bullet * list * lines last line out.yaml100644001750001750 2313626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/E76Z&a a: &b b *a : *b out.yaml100644001750001750 3213626002577 22165 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FP8R--- > line1 line2 line3 out.yaml100644001750001750 013626002577 22054 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8G76out.yaml100644001750001750 1313626002577 22170 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QF4Y- foo: bar out.yaml100644001750001750 3213626002577 22210 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SSW6--- 'here''s to "quotes"' out.yaml100644001750001750 3313626002577 22132 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4Q9F--- > ab cd ef gh out.yaml100644001750001750 3413626002577 22143 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TE2Ablock mapping: key: value out.yaml100644001750001750 3513626002577 22141 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EHF6!!map k: !!seq - a - !!str b out.yaml100644001750001750 6513626002577 22222 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PW8X- &a - a - &a : a b: &b - &c : &a - &d : - &e : &a out.yaml100644001750001750 3213626002577 22155 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDM2- url: http://example.org out.yaml100644001750001750 2513626002577 22147 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8QBEkey: - item1 - item2 out.yaml100644001750001750 6113626002577 22126 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SA2--- - "single line": value - "multi line": value out.yaml100644001750001750 2513626002577 22200 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JTV5a true: null d e 42: out.yaml100644001750001750 11713626002577 22174 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J3BTquoted: "Quoted \t" block: | void main() { printf("Hello, world!\n"); } out.yaml100644001750001750 2513626002577 22213 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3UYSescaped slash: "a/b" out.yaml100644001750001750 1713626002577 22162 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EX5H'a b c d e' emit.yaml100644001750001750 3613626002577 22264 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T26H--- | literal text emit.yaml100644001750001750 5513626002577 22324 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H2RWfoo: 1 bar: 2 text: | a b c d emit.yaml100644001750001750 3213626002577 22330 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DWX9| literal text emit.yaml100644001750001750 10113626002577 22355 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ZYMplain: text lines quoted: "text lines" block: | text lines emit.yaml100644001750001750 7613626002577 22302 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q8AD--- "folded to a space,\nto a line feed, or \t \tnon-content" emit.yaml100644001750001750 2613626002577 22322 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WPF--- " foo\nbar\nbaz " emit.yaml100644001750001750 3413626002577 22273 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6PBE--- ? - a - b : - c - d emit.yaml100644001750001750 1213626002577 22306 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2LFX--- "foo" emit.yaml100644001750001750 2413626002577 22322 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6FWR--- | ab ... emit.yaml100644001750001750 6113626002577 22313 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PRH3' 1st non-empty 2nd non-empty 3rd non-empty ' emit.yaml100644001750001750 6613626002577 22324 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9DXLMapping: Document --- ... %YAML 1.2 --- matches %: 20 emit.yaml100644001750001750 1513626002577 22335 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4MUZ"foo": "bar" emit.yaml100644001750001750 213626002577 22277 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NHX8: emit.yaml100644001750001750 7513626002577 22346 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WLZ--- !foo "bar" ... --- ! "bar" emit.yaml100644001750001750 4213626002577 22322 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KSS4--- "quoted string" --- &node foo lex.token100644001750001750 25113626002577 22333 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FQ7FSEQ-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 emit.yaml100644001750001750 2413626002577 22261 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B3HG--- > folded text emit.yaml100644001750001750 11013626002577 22305 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F6MC--- a: >2 more indented regular b: >2 more indented regular emit.yaml100644001750001750 7213626002577 22250 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7A3Bare document ... | %!PS-Adobe-2.0 # Not the first line emit.yaml100644001750001750 2513626002577 22305 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EXG3--- '---word1 word2' emit.yaml100644001750001750 3013626002577 22265 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T5N4--- | literal text emit.yaml100644001750001750 6313626002577 22333 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9TFX--- " 1st non-empty\n2nd non-empty 3rd non-empty " emit.yaml100644001750001750 6113626002577 22310 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S3PDplain key: in-line value : "quoted key": - entry emit.yaml100644001750001750 6513626002577 22354 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T4YY--- ' 1st non-empty 2nd non-empty 3rd non-empty ' emit.yaml100644001750001750 10313626002577 22327 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4QFQ- | detected - >2 # detected - |2 explicit - > detected emit.yaml100644001750001750 10713626002577 22326 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NAT4--- a: ' ' b: ' ' c: " " d: " " e: ' ' f: "\n" g: ' ' h: "\n\n" emit.yaml100644001750001750 5513626002577 22316 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6ZKBDocument --- ... %YAML 1.2 --- matches %: 20 emit.yaml100644001750001750 1713626002577 22311 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EX5H--- a b c d e test.event100644001750001750 12713626002577 22461 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K858+STR +DOC +MAP =VAL :strip =VAL > =VAL :clip =VAL > =VAL :keep =VAL |\n -MAP -DOC -STR test.event100644001750001750 16113626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NJ66+STR +DOC --- +SEQ +MAP =VAL :single line =VAL :value -MAP +MAP =VAL :multi line =VAL :value -MAP -SEQ -DOC -STR test.event100644001750001750 1613626002577 22544 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RXY3+STR +DOC --- test.event100644001750001750 140313626002577 22553 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UGM3+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 test.event100644001750001750 4713626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BD7L+STR +DOC +SEQ =VAL :item1 =VAL :item2 test.event100644001750001750 513626002577 22524 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SY6V+STR test.event100644001750001750 14213626002577 22531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BU8L+STR +DOC +MAP =VAL :key +MAP &anchor =VAL :a =VAL :b -MAP -MAP -DOC -STR test.event100644001750001750 3113626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HU3P+STR +DOC +MAP =VAL :key test.event100644001750001750 30213626002577 22520 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMK4+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 test.event100644001750001750 7413626002577 22522 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2JQS+STR +DOC +MAP =VAL : =VAL :a =VAL : =VAL :b -MAP -DOC -STR test.event100644001750001750 4013626002577 22455 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8MK2+STR +DOC =VAL :a -DOC -STR test.event100644001750001750 7613626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4V8U+STR +DOC --- =VAL :plain\\value\\with\\backslashes -DOC -STR test.event100644001750001750 10113626002577 22452 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CC74+STR +DOC --- =VAL "bar -DOC -STR test.event100644001750001750 3113626002577 22451 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5U3A+STR +DOC +MAP =VAL :key test.event100644001750001750 14013626002577 22573 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9WXW+STR +DOC =VAL "bar -DOC ... +DOC --- =VAL "bar -DOC -STR test.event100644001750001750 5413626002577 22500 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TS54+STR +DOC =VAL >ab cd\nef\n\ngh\n -DOC -STR test.event100644001750001750 20313626002577 22565 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2XXW+STR +DOC --- +MAP =VAL :Mark McGwire =VAL : =VAL :Sammy Sosa =VAL : =VAL :Ken Griff =VAL : -MAP -DOC -STR test.event100644001750001750 3513626002577 22515 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CQ3W+STR +DOC --- +MAP =VAL :key test.event100644001750001750 11313626002577 22514 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7W2P+STR +DOC +MAP =VAL :a =VAL : =VAL :b =VAL : =VAL :c =VAL : -MAP -DOC -STR test.event100644001750001750 4613626002577 22501 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W9L4+STR +DOC --- +MAP =VAL :block scalar test.event100644001750001750 33213626002577 22546 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XW4D+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 test.event100644001750001750 11113626002577 22504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3ALJ+STR +DOC +SEQ +SEQ =VAL :s1_i1 =VAL :s1_i2 -SEQ =VAL :s2 -SEQ -DOC -STR test.event100644001750001750 10613626002577 22462 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/54T7+STR +DOC +MAP =VAL :foo =VAL :you =VAL :bar =VAL :far -MAP -DOC -STR test.event100644001750001750 23413626002577 22515 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JHB9+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 test.event100644001750001750 5113626002577 22532 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3MYT+STR +DOC =VAL :k:#foo &a !t s -DOC -STR test.event100644001750001750 5613626002577 22505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU74+STR +DOC +MAP =VAL :key1 =VAL &alias :value1 test.event100644001750001750 5113626002577 22544 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4UYU+STR +DOC =VAL "foo: bar": baz -DOC -STR test.event100644001750001750 3313626002577 22512 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9HCY+STR +DOC =VAL "bar test.event100644001750001750 35513626002577 22456 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/74H7+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 test.event100644001750001750 1613626002577 22502 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LHL4+STR +DOC --- test.event100644001750001750 43713626002577 22540 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KK5P+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 test.event100644001750001750 20213626002577 22502 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LE5A+STR +DOC +SEQ =VAL "a =VAL 'b =VAL &anchor "c =ALI *anchor =VAL : -SEQ -DOC -STR test.event100644001750001750 17013626002577 22574 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XV9V+STR +DOC +MAP =VAL :Folding =VAL "Empty line\nas a line feed =VAL :Chomping =VAL |Clipped empty lines\n -MAP -DOC -STR test.event100644001750001750 21713626002577 22463 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F2C7+STR +DOC +SEQ =VAL &a :a =VAL :2 =VAL &c :4 =VAL &d :d -SEQ -DOC -STR test.event100644001750001750 7613626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7VC+STR +DOC +MAP =VAL :1 =VAL :2 =VAL :3 =VAL :4 -MAP -DOC -STR test.event100644001750001750 6613626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5MUD+STR +DOC --- +MAP =VAL "foo =VAL :bar -MAP -DOC -STR test.event100644001750001750 1213626002577 22477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2CMS+STR +DOC test.event100644001750001750 21713626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4FJ6+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 test.event100644001750001750 7213626002577 22510 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7MNF+STR +DOC +MAP =VAL :top1 +MAP =VAL :key1 =VAL :val1 -MAP test.event100644001750001750 11613626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SKE5+STR +DOC --- +MAP =VAL :seq +SEQ &anchor =VAL :a =VAL :b -SEQ -MAP -DOC -STR test.event100644001750001750 13213626002577 22514 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BCT+STR +DOC +SEQ +MAP =VAL :foo =VAL :bar -MAP +SEQ =VAL :baz =VAL :baz -SEQ -SEQ -DOC -STR test.event100644001750001750 6713626002577 22470 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T26H+STR +DOC --- =VAL |\n\nliteral\n \n\ntext\n -DOC -STR test.event100644001750001750 17013626002577 22475 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93JH+STR +DOC +SEQ +MAP =VAL :key =VAL :value =VAL :key2 =VAL :value2 -MAP +MAP =VAL :key3 =VAL :value3 -MAP -SEQ -DOC -STR test.event100644001750001750 4013626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4GJ+STR +DOC --- +MAP =VAL :folded test.event100644001750001750 7313626002577 22535 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9CWY+STR +DOC +MAP =VAL :key +SEQ =VAL :item1 =VAL :item2 -SEQ test.event100644001750001750 21413626002577 22500 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ABK+STR +DOC +MAP =VAL :unquoted =VAL "separate =VAL :http://foo.com =VAL : =VAL :omitted value =VAL : =VAL : =VAL :omitted key -MAP -DOC -STR test.event100644001750001750 25013626002577 22550 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/YD5X+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 test.event100644001750001750 13513626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5KJE+STR +DOC +SEQ +SEQ =VAL :one =VAL :two -SEQ +SEQ =VAL :three =VAL :four -SEQ -SEQ -DOC -STR test.event100644001750001750 20713626002577 22533 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9BXH+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 test.event100644001750001750 33713626002577 22523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FH7J+STR +DOC +SEQ =VAL : +MAP =VAL : =VAL :a =VAL :b =VAL : -MAP +MAP =VAL : =VAL : -MAP -SEQ -DOC -STR test.event100644001750001750 10513626002577 22541 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HS5T+STR +DOC =VAL :1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 7313626002577 22521 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CPZ3+STR +DOC --- +MAP =VAL :tab =VAL "\tstring -MAP -DOC -STR test.event100644001750001750 26013626002577 22551 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MMW+STR +DOC +SEQ +SEQ +MAP =VAL :YAML =VAL :separate -MAP -SEQ +SEQ +MAP =VAL : =VAL :empty key entry -MAP -SEQ +SEQ +MAP =VAL "JSON like =VAL :adjacent -MAP -SEQ -SEQ -DOC -STR test.event100644001750001750 5013626002577 22512 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S98Z+STR +DOC +MAP =VAL :empty block scalar test.event100644001750001750 26513626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6HB6+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 test.event100644001750001750 15513626002577 22550 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R4YG+STR +DOC +SEQ =VAL |detected\n =VAL >\n\n# detected\n =VAL | explicit\n =VAL >\t\ndetected\n -SEQ -DOC -STR test.event100644001750001750 6413626002577 22504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SR86+STR +DOC +MAP =VAL :key1 =VAL &a :value =VAL :key2 test.event100644001750001750 3613626002577 22512 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q5MG+STR +DOC +MAP -MAP -DOC -STR test.event100644001750001750 10013626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FUP4+STR +DOC +SEQ =VAL :a +SEQ =VAL :b =VAL :c -SEQ -SEQ -DOC -STR test.event100644001750001750 3013626002577 22502 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2SP+STR +DOC +SEQ =VAL :23 test.event100644001750001750 6413626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/93WF+STR +DOC --- =VAL >trimmed\n\n\nas space -DOC -STR test.event100644001750001750 7513626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4JQ+STR +DOC +SEQ =VAL "12 =VAL :12 =VAL :12 -SEQ -DOC -STR test.event100644001750001750 16213626002577 22562 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MZX3+STR +DOC +SEQ =VAL :plain =VAL "double quoted =VAL 'single quoted =VAL >block\n =VAL :plain again -SEQ -DOC -STR test.event100644001750001750 15713626002577 22454 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/87E4+STR +DOC +MAP =VAL 'implicit block key +SEQ +MAP =VAL 'implicit flow key =VAL :value -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 50113626002577 22477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/26DV+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 test.event100644001750001750 33613626002577 22542 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5DY+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 test.event100644001750001750 13613626002577 22530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5BVJ+STR +DOC +MAP =VAL :literal =VAL |some\ntext\n =VAL :folded =VAL >some text\n -MAP -DOC -STR test.event100644001750001750 15013626002577 22540 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H2RW+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 test.event100644001750001750 4113626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MYW6+STR +DOC =VAL |ab -DOC ... -STR test.event100644001750001750 13213626002577 22523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DC7X+STR +DOC +MAP =VAL :a =VAL :b =VAL :seq +SEQ =VAL :a -SEQ =VAL :c =VAL :d -MAP -DOC -STR test.event100644001750001750 25113626002577 22552 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J7PZ+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 test.event100644001750001750 37413626002577 22545 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G4RS+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 test.event100644001750001750 5313626002577 22462 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9C9N+STR +DOC --- +MAP =VAL :flow +SEQ =VAL :a test.event100644001750001750 32513626002577 22521 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2EBW+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 test.event100644001750001750 11713626002577 22536 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QLJ7+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- test.event100644001750001750 7213626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4HVU+STR +DOC +MAP =VAL :key +SEQ =VAL :ok =VAL :also ok -SEQ test.event100644001750001750 6313626002577 22534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DWX9+STR +DOC =VAL |\n\nliteral\n \n\ntext\n -DOC -STR test.event100644001750001750 6013626002577 22465 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3R3P+STR +DOC +SEQ &sequence =VAL :a -SEQ -DOC -STR test.event100644001750001750 12413626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7Z25+STR +DOC --- =VAL :scalar1 -DOC ... +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 31513626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PBJ2+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 test.event100644001750001750 10113626002577 22555 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JY7Z+STR +DOC +MAP =VAL :key1 =VAL "quoted1 =VAL :key2 =VAL "quoted2 test.event100644001750001750 7413626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G5U8+STR +DOC --- +SEQ +SEQ =VAL :- =VAL :- -SEQ -SEQ -DOC -STR test.event100644001750001750 21013626002577 22523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4CQQ+STR +DOC +MAP =VAL :plain =VAL :This unquoted scalar spans many lines. =VAL :quoted =VAL "So does this quoted scalar.\n -MAP -DOC -STR test.event100644001750001750 17413626002577 22567 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4ZYM+STR +DOC +MAP =VAL :plain =VAL :text lines =VAL :quoted =VAL "text lines =VAL :block =VAL |text\n \tlines\n -MAP -DOC -STR test.event100644001750001750 5113626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5LLU+STR +DOC +MAP =VAL :block scalar =VAL > test.event100644001750001750 14413626002577 22510 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6BFJ+STR +DOC --- +MAP &mapping +SEQ &key =VAL &item :a =VAL :b =VAL :c -SEQ =VAL :value -MAP -DOC -STR test.event100644001750001750 20713626002577 22506 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L94M+STR +DOC +MAP =VAL :a =VAL :47 =VAL :c =VAL :d -MAP -DOC -STR test.event100644001750001750 6413626002577 22477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DMG6+STR +DOC +MAP =VAL :key +MAP =VAL :ok =VAL :1 -MAP test.event100644001750001750 4113626002577 22427 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EB22+STR +DOC --- =VAL :scalar1 -DOC test.event100644001750001750 6513626002577 22532 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JTT+STR +DOC --- +SEQ +SEQ =VAL :a =VAL :b =VAL :c -SEQ test.event100644001750001750 15713626002577 22562 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LQZ7+STR +DOC +MAP =VAL "implicit block key +SEQ +MAP =VAL "implicit flow key =VAL :value -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 4313626002577 22542 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZL4Z+STR +DOC --- +MAP =VAL :a =VAL 'b test.event100644001750001750 4013626002577 22477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HRE5+STR +DOC --- +MAP =VAL :double test.event100644001750001750 10413626002577 22530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZH7C+STR +DOC +MAP =VAL &a :a =VAL :b =VAL :c =VAL &d :d -MAP -DOC -STR test.event100644001750001750 5513626002577 22445 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4GC6+STR +DOC =VAL 'here's to "quotes" -DOC -STR test.event100644001750001750 5213626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TL85+STR +DOC =VAL " foo\nbar\nbaz -DOC -STR test.event100644001750001750 16013626002577 22550 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7NX+STR +DOC --- +MAP =VAL :a +SEQ =VAL :b =VAL :c +MAP =VAL :d +SEQ =VAL :e =VAL :f -SEQ -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 7013626002577 22531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X8DW+STR +DOC --- +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 4513626002577 22547 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SU5Z+STR +DOC +MAP =VAL :key =VAL "value test.event100644001750001750 12613626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q8AD+STR +DOC --- =VAL "folded to a space,\nto a line feed, or \t \tnon-content -DOC -STR test.event100644001750001750 13113626002577 22554 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZWK4+STR +DOC --- +MAP =VAL :a =VAL :1 =VAL :b =VAL : =VAL &anchor :c =VAL :3 -MAP -DOC -STR test.event100644001750001750 5613626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WPF+STR +DOC --- =VAL " foo\nbar\nbaz -DOC -STR test.event100644001750001750 16013626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/WZ62+STR +DOC +MAP =VAL :foo =VAL : =VAL : =VAL :bar -MAP -DOC -STR test.event100644001750001750 12213626002577 22542 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZK9H+STR +DOC +MAP =VAL :key +SEQ +SEQ +SEQ =VAL :value -SEQ -SEQ -SEQ -MAP -DOC -STR test.event100644001750001750 10313626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6M2F+STR +DOC +MAP =VAL &a :a =VAL &b :b =VAL : =ALI *a -MAP -DOC -STR test.event100644001750001750 22013626002577 22540 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J9HZ+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 test.event100644001750001750 7713626002577 22534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LX3P+STR +DOC +MAP +SEQ =VAL :flow -SEQ =VAL :block -MAP -DOC -STR test.event100644001750001750 3313626002577 22541 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X4QW+STR +DOC +MAP =VAL :block test.event100644001750001750 5113626002577 22526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RHX7+STR +DOC --- +MAP =VAL :key =VAL :value test.event100644001750001750 30013626002577 22546 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KZN9+STR +DOC +SEQ +SEQ +MAP =VAL :YAML =VAL :separate -MAP -SEQ +SEQ +MAP =VAL : =VAL :empty key entry -MAP -SEQ +SEQ +MAP +MAP =VAL :JSON =VAL :like -MAP =VAL :adjacent -MAP -SEQ -SEQ -DOC -STR test.event100644001750001750 7213626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7TMG+STR +DOC --- +SEQ =VAL :word1 =VAL :word2 -SEQ -DOC -STR test.event100644001750001750 7013626002577 22531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MXS3+STR +DOC +SEQ +MAP =VAL :a =VAL :b -MAP -SEQ -DOC -STR test.event100644001750001750 16013626002577 22512 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F3CP+STR +DOC --- +MAP =VAL :a +SEQ =VAL :b =VAL :c +MAP =VAL :d +SEQ =VAL :e =VAL :f -SEQ -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 70613626002577 22535 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C4HZ+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 test.event100644001750001750 10013626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FRK4+STR +DOC +MAP =VAL :foo =VAL : =VAL : =VAL :bar -MAP -DOC -STR test.event100644001750001750 5513626002577 22511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2EQ+STR +DOC --- +SEQ +MAP =VAL :y =VAL :z -MAP test.event100644001750001750 15213626002577 22501 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q88A+STR +DOC +SEQ +SEQ =VAL :a =VAL :b -SEQ +MAP =VAL :a =VAL :b -MAP =VAL "a =VAL 'b =VAL :c -SEQ -DOC -STR test.event100644001750001750 4313626002577 22413 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/236B+STR +DOC +MAP =VAL :foo =VAL :bar test.event100644001750001750 12613626002577 22515 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6PBE+STR +DOC --- +MAP +SEQ =VAL :a =VAL :b -SEQ +SEQ =VAL :c =VAL :d -SEQ -MAP -DOC -STR test.event100644001750001750 24613626002577 22557 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZF4X+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 test.event100644001750001750 15713626002577 22545 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2AUY+STR +DOC +SEQ =VAL :a =VAL :b =VAL :42 =VAL :d -SEQ -DOC -STR test.event100644001750001750 33213626002577 22560 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZP5+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 test.event100644001750001750 4413626002577 22446 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/52DL+STR +DOC --- =VAL :a -DOC -STR test.event100644001750001750 14413626002577 22545 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZW3+STR +DOC +SEQ +MAP =VAL :bla"keks =VAL :foo -MAP +MAP =VAL :bla]keks =VAL :foo -MAP -SEQ -DOC -STR test.event100644001750001750 13513626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J5UC+STR +DOC +MAP =VAL :foo =VAL :blue =VAL :bar =VAL :arrr =VAL :baz =VAL :jazz -MAP -DOC -STR test.event100644001750001750 10013626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D88J+STR +DOC +MAP =VAL :a +SEQ =VAL :b =VAL :c -SEQ -MAP -DOC -STR test.event100644001750001750 7313626002577 22505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DHP8+STR +DOC +SEQ =VAL :foo =VAL :bar =VAL :42 -SEQ -DOC -STR test.event100644001750001750 21013626002577 22541 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q9WF+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 test.event100644001750001750 15713626002577 22523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/L9U5+STR +DOC +MAP =VAL :implicit block key +SEQ +MAP =VAL :implicit flow key =VAL :value -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 4513626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XDJ+STR +DOC +MAP =VAL :key =VAL :word1 test.event100644001750001750 17013626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5GBF+STR +DOC +MAP =VAL :Folding =VAL "Empty line\nas a line feed =VAL :Chomping =VAL |Clipped empty lines\n -MAP -DOC -STR test.event100644001750001750 6713626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U44R+STR +DOC +MAP =VAL :map +MAP =VAL :key1 =VAL "quoted1 test.event100644001750001750 22013626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8UDB+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 test.event100644001750001750 11613626002577 22541 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2SXE+STR +DOC +MAP =VAL &a: :key =VAL &a :value =VAL :foo =ALI *a: -MAP -DOC -STR test.event100644001750001750 34713626002577 22506 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DBG4+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 test.event100644001750001750 5213626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CML9+STR +DOC +MAP =VAL :key +SEQ =VAL :word1 test.event100644001750001750 1613626002577 22465 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/55WF+STR +DOC --- test.event100644001750001750 6013626002577 22463 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9JBA+STR +DOC --- +SEQ =VAL :a =VAL :b =VAL :c -SEQ test.event100644001750001750 27213626002577 22533 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JWB+STR +DOC +MAP =VAL :foo +SEQ =VAL :a +MAP =VAL :key =VAL :value -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 12313626002577 22456 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/96L6+STR +DOC --- =VAL >Mark McGwire's year was crippled by a knee injury.\n -DOC -STR test.event100644001750001750 7713626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M29M+STR +DOC +MAP =VAL :a =VAL |ab\n\ncd\nef\n -MAP -DOC ... -STR test.event100644001750001750 17513626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HMQ5+STR +DOC +MAP =VAL &a1 "foo =VAL :bar =VAL &a2 :baz =ALI *a1 -MAP -DOC -STR test.event100644001750001750 12613626002577 22526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KMK3+STR +DOC +MAP =VAL :foo +MAP =VAL :bar =VAL :1 -MAP =VAL :baz =VAL :2 -MAP -DOC -STR test.event100644001750001750 513626002577 22500 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SF5V+STR test.event100644001750001750 53013626002577 22565 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3XV+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 test.event100644001750001750 7213626002577 22456 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U3C3+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 4213626002577 22511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/2LFX+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 4513626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GDY7+STR +DOC +MAP =VAL :key =VAL :value test.event100644001750001750 13413626002577 22467 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M5C3+STR +DOC +MAP =VAL :literal =VAL |value\n =VAL :folded =VAL >value\n -MAP -DOC -STR test.event100644001750001750 7513626002577 22552 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8XYN+STR +DOC --- +SEQ =VAL &😁 :unicode anchor -SEQ -DOC -STR test.event100644001750001750 20413626002577 22524 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/LP6E+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 test.event100644001750001750 1613626002577 22467 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KBC+STR +DOC --- test.event100644001750001750 6713626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3HFZ+STR +DOC --- +MAP =VAL :key =VAL :value -MAP -DOC ... test.event100644001750001750 5413626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6FWR+STR +DOC --- =VAL |ab\n\n \n -DOC ... -STR test.event100644001750001750 7313626002577 22426 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/36F6+STR +DOC --- +MAP =VAL :plain =VAL :a b\nc -MAP -DOC -STR test.event100644001750001750 21613626002577 22511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S9E8+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 test.event100644001750001750 11413626002577 22552 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W4TN+STR +DOC --- =VAL |%!PS-Adobe-2.0\n -DOC ... +DOC --- =VAL : -DOC ... -STR test.event100644001750001750 10613626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AB8U+STR +DOC +SEQ =VAL :single multiline - sequence entry -SEQ -DOC -STR test.event100644001750001750 10713626002577 22534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PRH3+STR +DOC =VAL ' 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 5313626002577 22521 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CVW2+STR +DOC --- +SEQ =VAL :a =VAL :b =VAL :c test.event100644001750001750 4213626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6LVF+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 1213626002577 22505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AVM7+STR -STR test.event100644001750001750 7313626002577 22530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K4SU+STR +DOC +SEQ =VAL :foo =VAL :bar =VAL :42 -SEQ -DOC -STR test.event100644001750001750 21113626002577 22500 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/R52L+STR +DOC --- +MAP =VAL :top1 +SEQ =VAL :item1 +MAP =VAL :key2 =VAL :value2 -MAP =VAL :item3 -SEQ =VAL :top2 =VAL :value2 -MAP -DOC -STR test.event100644001750001750 4313626002577 22456 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H7J7+STR +DOC +MAP =VAL :key =VAL &x : test.event100644001750001750 5713626002577 22541 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/XLQ9+STR +DOC --- =VAL :scalar %YAML 1.2 -DOC -STR test.event100644001750001750 10713626002577 22563 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PUW8+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- =VAL : -DOC -STR test.event100644001750001750 14213626002577 22505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DFF7+STR +DOC +MAP =VAL :explicit =VAL :entry =VAL :implicit =VAL :entry =VAL : =VAL : -MAP -DOC -STR test.event100644001750001750 4213626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7LBH+STR +DOC +MAP =VAL "a\nb =VAL :1 test.event100644001750001750 10113626002577 22531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Y2GN+STR +DOC --- +MAP =VAL :key =VAL &an:chor :value -MAP -DOC -STR test.event100644001750001750 20113626002577 22461 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6CK3+STR +DOC --- +SEQ =VAL :foo =VAL :bar =VAL :baz -SEQ -DOC -STR test.event100644001750001750 31613626002577 22451 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/57H4+STR +DOC +MAP =VAL :sequence +SEQ =VAL :entry +SEQ =VAL :nested -SEQ -SEQ =VAL :mapping +MAP =VAL :foo =VAL :bar -MAP -MAP -DOC -STR test.event100644001750001750 20513626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9DXL+STR +DOC +MAP =VAL :Mapping =VAL :Document -MAP -DOC +DOC --- =VAL : -DOC ... +DOC --- +MAP =VAL :matches % =VAL :20 -MAP -DOC -STR test.event100644001750001750 6613626002577 22540 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K3WX+STR +DOC --- +MAP =VAL "foo =VAL :bar -MAP -DOC -STR test.event100644001750001750 14513626002577 22467 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A6F9+STR +DOC +MAP =VAL :strip =VAL |text =VAL :clip =VAL |text\n =VAL :keep =VAL |text\n -MAP -DOC -STR test.event100644001750001750 55113626002577 22460 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/77H8+STR +DOC --- +MAP =VAL :not-date =VAL :2002-04-28 =VAL :picture =VAL |R0lGODlhDAAMAIQAAP//9/X\n17unp5WZmZgAAAOfn515eXv\nPz7Y6OjuDg4J+fn5OTk6enp\n56enmleECcgggoBADs=\n =VAL :application specific tag =VAL |The semantics of the tag\nabove may be different for\ndifferent documents.\n -MAP -DOC -STR test.event100644001750001750 1213626002577 22530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/HWV9+STR -STR test.event100644001750001750 22213626002577 22536 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6VJK+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 test.event100644001750001750 5313626002577 22502 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S7BG+STR +DOC --- +SEQ =VAL ::, -SEQ -DOC -STR test.event100644001750001750 36113626002577 22560 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/U9NS+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 test.event100644001750001750 6213626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4MUZ+STR +DOC +MAP =VAL "foo =VAL "bar -MAP -DOC -STR test.event100644001750001750 5413626002577 22526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NHX8+STR +DOC +MAP =VAL : =VAL : -MAP -DOC -STR test.event100644001750001750 21213626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5C5M+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 test.event100644001750001750 53013626002577 22531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BMT+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 test.event100644001750001750 5113626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BF9H+STR +DOC --- +MAP =VAL :plain =VAL :a b test.event100644001750001750 13213626002577 22504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P2AD+STR +DOC +SEQ =VAL |literal\n =VAL > folded\n =VAL |keep\n\n =VAL > strip -SEQ -DOC -STR test.event100644001750001750 3313626002577 22512 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GT5M+STR +DOC +SEQ =VAL :item1 test.event100644001750001750 16013626002577 22530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/X38W+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 test.event100644001750001750 6213626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D9TU+STR +DOC +MAP =VAL :foo =VAL :bar -MAP -DOC -STR test.event100644001750001750 10113626002577 22515 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Q4CL+STR +DOC +MAP =VAL :key1 =VAL "quoted1 =VAL :key2 =VAL "quoted2 test.event100644001750001750 11713626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8CWC+STR +DOC --- +MAP =VAL :key ends with two colons:: =VAL :value -MAP -DOC -STR test.event100644001750001750 13013626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UT92+STR +DOC --- +MAP =VAL :matches % =VAL :20 -MAP -DOC ... +DOC --- =VAL : -DOC ... -STR test.event100644001750001750 5713626002577 22536 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZVH3+STR +DOC +SEQ +MAP =VAL :key =VAL :value -MAP test.event100644001750001750 6413626002577 22547 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5NYZ+STR +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 14413626002577 22563 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6WLZ+STR +DOC --- =VAL "bar -DOC ... +DOC --- =VAL "bar -DOC -STR test.event100644001750001750 1713626002577 22436 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N782+STR +DOC +SEQ test.event100644001750001750 1613626002577 22523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CXX2+STR +DOC --- test.event100644001750001750 4313626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G7JE+STR +DOC +MAP =VAL :a\\nb =VAL :1 test.event100644001750001750 6413626002577 22476 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FTA2+STR +DOC --- +SEQ &sequence =VAL :a -SEQ -DOC -STR test.event100644001750001750 11213626002577 22540 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KSS4+STR +DOC --- =VAL "quoted string -DOC +DOC --- =VAL &node :foo -DOC -STR test.event100644001750001750 3113626002577 22546 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZXT5+STR +DOC +SEQ =VAL "key test.event100644001750001750 5313626002577 22535 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RTP8+STR +DOC --- =VAL :Document -DOC ... -STR test.event100644001750001750 1213626002577 22470 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/98YD+STR -STR test.event100644001750001750 15613626002577 22534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JS2J+STR +DOC +MAP =VAL :First occurrence =VAL &anchor :Value =VAL :Second occurrence =ALI *anchor -MAP -DOC -STR test.event100644001750001750 4513626002577 22424 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/753E+STR +DOC --- =VAL |ab -DOC ... -STR test.event100644001750001750 5013626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/65WH+STR +DOC +SEQ =VAL :foo -SEQ -DOC -STR test.event100644001750001750 14713626002577 22520 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/C2DT+STR +DOC +MAP =VAL "adjacent =VAL :value =VAL "readable =VAL :value =VAL "empty =VAL : -MAP -DOC -STR test.event100644001750001750 20713626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8KB6+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 test.event100644001750001750 6013626002577 22426 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K527+STR +DOC =VAL >trimmed\n\n\nas space -DOC -STR test.event100644001750001750 27413626002577 22462 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/229Q+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 test.event100644001750001750 20413626002577 22520 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9FMG+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 test.event100644001750001750 4013626002577 22471 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QB6E+STR +DOC --- +MAP =VAL :quoted test.event100644001750001750 6613626002577 22505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S4T7+STR +DOC +MAP =VAL :aaa =VAL :bbb -MAP -DOC ... -STR test.event100644001750001750 14313626002577 22536 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CUP7+STR +DOC +MAP =VAL :anchored =VAL &anchor :value =VAL :alias =ALI *anchor -MAP -DOC -STR test.event100644001750001750 11613626002577 22533 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SHH+STR +DOC +MAP =VAL :single =VAL 'text =VAL :double =VAL "text -MAP -DOC -STR test.event100644001750001750 10113626002577 22461 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/GH63+STR +DOC +MAP =VAL :a =VAL :13 =VAL :1.5 =VAL :d -MAP -DOC -STR test.event100644001750001750 3513626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK4H+STR +DOC --- +SEQ =VAL :key test.event100644001750001750 4713626002577 22515 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TD5N+STR +DOC +SEQ =VAL :item1 =VAL :item2 test.event100644001750001750 2713626002577 22535 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/ZCZ6+STR +DOC +MAP =VAL :a test.event100644001750001750 12413626002577 22522 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FQ7F+STR +DOC +SEQ =VAL :Mark McGwire =VAL :Sammy Sosa =VAL :Ken Griffey -SEQ -DOC -STR test.event100644001750001750 23013626002577 22522 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CN3R+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 test.event100644001750001750 4213626002577 22456 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BEC7+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 13613626002577 22553 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W5VH+STR +DOC +MAP =VAL :a =VAL &:@*!$": :scalar a =VAL :b =ALI *:@*!$": -MAP -DOC -STR test.event100644001750001750 5413626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/KS4U+STR +DOC --- +SEQ =VAL :sequence item -SEQ test.event100644001750001750 11313626002577 22520 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z9M4+STR +DOC --- +SEQ =VAL "bar -SEQ -DOC -STR test.event100644001750001750 13613626002577 22474 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D83L+STR +DOC +SEQ =VAL |explicit indent and chomp =VAL |chomp and explicit indent -SEQ -DOC -STR test.event100644001750001750 13213626002577 22564 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SYW4+STR +DOC +MAP =VAL :hr =VAL :65 =VAL :avg =VAL :0.278 =VAL :rbi =VAL :147 -MAP -DOC -STR test.event100644001750001750 5013626002577 22427 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G992+STR +DOC =VAL >folded text\n -DOC -STR test.event100644001750001750 7113626002577 22473 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/DK3J+STR +DOC --- =VAL >line1 # no comment line3\n -DOC -STR test.event100644001750001750 10313626002577 22504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P76L+STR +DOC --- =VAL :1 - 3 -DOC -STR test.event100644001750001750 10013626002577 22524 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CT4Q+STR +DOC +SEQ +MAP =VAL :foo bar =VAL :baz -MAP -SEQ -DOC -STR test.event100644001750001750 33313626002577 22504 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FBC9+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 test.event100644001750001750 11613626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6KGN+STR +DOC --- +MAP =VAL :a =VAL &anchor : =VAL :b =ALI *anchor -MAP -DOC -STR test.event100644001750001750 3013626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EW3V+STR +DOC +MAP =VAL :k1 test.event100644001750001750 12213626002577 22533 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NP9H+STR +DOC =VAL "folded to a space,\nto a line feed, or \t \tnon-content -DOC -STR test.event100644001750001750 20413626002577 22456 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/33X3+STR +DOC --- +SEQ =VAL :1 =VAL :-2 =VAL :33 -SEQ -DOC -STR test.event100644001750001750 5413626002577 22464 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B3HG+STR +DOC --- =VAL >folded text\n -DOC -STR test.event100644001750001750 6213626002577 22442 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6S55+STR +DOC +MAP =VAL :key +SEQ =VAL :bar =VAL :baz test.event100644001750001750 21613626002577 22542 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDR7+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 test.event100644001750001750 10613626002577 22471 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9J7A+STR +DOC +MAP =VAL :foo +MAP =VAL :bar =VAL :baz -MAP -MAP -DOC -STR test.event100644001750001750 13413626002577 22526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/Z67P+STR +DOC +MAP =VAL :literal =VAL |value\n =VAL :folded =VAL >value\n -MAP -DOC -STR test.event100644001750001750 12213626002577 22460 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A2M4+STR +DOC +MAP =VAL :a +SEQ =VAL :b +SEQ =VAL :c =VAL :d -SEQ -SEQ -MAP -DOC -STR test.event100644001750001750 15513626002577 22477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F8F9+STR +DOC +MAP =VAL :strip =VAL |# text =VAL :clip =VAL |# text\n =VAL :keep =VAL |# text\n\n -MAP -DOC -STR test.event100644001750001750 16613626002577 22520 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/F6MC+STR +DOC --- +MAP =VAL :a =VAL > more indented\nregular\n =VAL :b =VAL >\n\n more indented\nregular\n -MAP -DOC -STR test.event100644001750001750 10713626002577 22460 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7A4E+STR +DOC =VAL " 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 14213626002577 22523 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SBG9+STR +DOC +MAP =VAL :a +SEQ =VAL :b =VAL :c -SEQ +SEQ =VAL :d =VAL :e -SEQ =VAL :f -MAP -DOC -STR test.event100644001750001750 14213626002577 22466 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M7A3+STR +DOC =VAL :Bare document -DOC ... +DOC =VAL |%!PS-Adobe-2.0 # Not the first line\n -DOC -STR test.event100644001750001750 131713626002577 22501 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/565N+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 test.event100644001750001750 6413626002577 22534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6XDY+STR +DOC --- =VAL : -DOC +DOC --- =VAL : -DOC -STR test.event100644001750001750 15413626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6SLA+STR +DOC +MAP =VAL "foo\nbar:baz\tx \\$%^&*()x =VAL :23 =VAL 'x\\ny:z\\tx $%^&*()x =VAL :24 -MAP -DOC -STR test.event100644001750001750 33013626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9U5K+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 test.event100644001750001750 5513626002577 22510 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EXG3+STR +DOC --- =VAL :---word1 word2 -DOC -STR test.event100644001750001750 12013626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4JVG+STR +DOC +MAP =VAL :top1 +MAP &node1 =VAL &k1 :key1 =VAL :val1 -MAP =VAL :top2 test.event100644001750001750 4313626002577 22446 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/27NA+STR +DOC --- =VAL :text -DOC -STR test.event100644001750001750 114013626002577 22552 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9KAX+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 test.event100644001750001750 6013626002577 22470 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T5N4+STR +DOC --- =VAL |literal\n\ttext\n -DOC -STR test.event100644001750001750 11313626002577 22547 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9TFX+STR +DOC --- =VAL " 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 14013626002577 22553 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TYM+STR +DOC --- =VAL :fluorescent -DOC ... +DOC --- =VAL :green -DOC -STR test.event100644001750001750 6513626002577 22471 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/62EZ+STR +DOC --- +MAP =VAL :x +MAP =VAL :y =VAL :z -MAP test.event100644001750001750 16413626002577 22524 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/W42U+STR +DOC +SEQ =VAL : =VAL |block node\n +SEQ =VAL :one =VAL :two -SEQ +MAP =VAL :one =VAL :two -MAP -SEQ -DOC -STR test.event100644001750001750 16713626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/S3PD+STR +DOC +MAP =VAL :plain key =VAL :in-line value =VAL : =VAL : =VAL "quoted key +SEQ =VAL :entry -SEQ -MAP -DOC -STR test.event100644001750001750 14713626002577 22544 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JQ4R+STR +DOC +MAP =VAL :block sequence +SEQ =VAL :one +MAP =VAL :two =VAL :three -MAP -SEQ -MAP -DOC -STR test.event100644001750001750 3313626002577 22501 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/BS4K+STR +DOC =VAL :word1 -DOC test.event100644001750001750 31213626002577 22500 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/35KP+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- +SEQ =VAL :c -SEQ -DOC +DOC --- =VAL :d e -DOC -STR test.event100644001750001750 1213626002577 22471 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QT73+STR -STR test.event100644001750001750 117113626002577 22610 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RZT7+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 test.event100644001750001750 7113626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6JQW+STR +DOC --- =VAL |\\//||\\/||\n// || ||__\n -DOC -STR test.event100644001750001750 5313626002577 22511 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/CTN5+STR +DOC --- +SEQ =VAL :a =VAL :b =VAL :c test.event100644001750001750 3513626002577 22441 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T833+STR +DOC --- +MAP =VAL :foo test.event100644001750001750 1613626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5TRB+STR +DOC --- test.event100644001750001750 5513626002577 22477 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JDH8+STR +DOC --- =VAL :k:#foo &a !t s -DOC -STR test.event100644001750001750 11313626002577 22566 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/T4YY+STR +DOC --- =VAL ' 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 3513626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/G9HC+STR +DOC --- +MAP =VAL :seq test.event100644001750001750 26413626002577 22557 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3GZX+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 test.event100644001750001750 4313626002577 22460 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/D49Q+STR +DOC +MAP =VAL 'a\\nb =VAL :1 test.event100644001750001750 13013626002577 22547 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RLU9+STR +DOC +MAP =VAL :foo +SEQ =VAL :42 -SEQ =VAL :bar +SEQ =VAL :44 -SEQ -MAP -DOC -STR test.event100644001750001750 4513626002577 22530 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9YRD+STR +DOC =VAL :a b c d\ne -DOC -STR test.event100644001750001750 10413626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V55R+STR +DOC +SEQ =VAL &a :a =VAL &b :b =ALI *a =ALI *b -SEQ -DOC -STR test.event100644001750001750 12113626002577 22533 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7FWL+STR +DOC +MAP =VAL :foo =VAL :baz -MAP -DOC -STR test.event100644001750001750 4513626002577 22471 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/K54U+STR +DOC --- =VAL :scalar -DOC -STR test.event100644001750001750 7713626002577 22525 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NB6Z+STR +DOC +MAP =VAL :key =VAL :value with\ntabs -MAP -DOC -STR test.event100644001750001750 17513626002577 22474 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/735Y+STR +DOC +SEQ =VAL "flow in block =VAL >Block scalar\n +MAP =VAL :foo =VAL :bar -MAP -SEQ -DOC -STR test.event100644001750001750 10113626002577 22532 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/RR7F+STR +DOC +MAP =VAL :a =VAL :4.2 =VAL :23 =VAL :d -MAP -DOC -STR test.event100644001750001750 6513626002577 22460 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4H7K+STR +DOC --- +SEQ =VAL :a =VAL :b =VAL :c -SEQ -DOC test.event100644001750001750 21313626002577 22505 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/V9D5+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 test.event100644001750001750 10213626002577 22440 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/A984+STR +DOC +MAP =VAL :a =VAL :b c =VAL :d =VAL :e f -MAP -DOC -STR test.event100644001750001750 6413626002577 22471 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/P94K+STR +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 21413626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7BUB+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 test.event100644001750001750 25113626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7ZZ5+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 test.event100644001750001750 15113626002577 22532 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4QFQ+STR +DOC +SEQ =VAL |detected\n =VAL >\n\n# detected\n =VAL | explicit\n =VAL >detected\n -SEQ -DOC -STR test.event100644001750001750 15013626002577 22501 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/5WE3+STR +DOC +MAP =VAL :explicit key =VAL : =VAL |block key\n +SEQ =VAL :one =VAL :two -SEQ -MAP -DOC -STR test.event100644001750001750 6213626002577 22522 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/MJS9+STR +DOC =VAL >foo \n\n\t bar\n\nbaz\n -DOC -STR test.event100644001750001750 2313626002577 22472 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9MAG+STR +DOC --- +SEQ test.event100644001750001750 25213626002577 22527 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/NAT4+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 test.event100644001750001750 513626002577 22427 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/B63P+STR test.event100644001750001750 5113626002577 22446 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/82AN+STR +DOC =VAL :---word1 word2 -DOC -STR test.event100644001750001750 7213626002577 22467 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6H3V+STR +DOC +MAP =VAL 'foo: bar\\ =VAL :baz' -MAP -DOC -STR test.event100644001750001750 12013626002577 22476 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/AZ63+STR +DOC +MAP =VAL :1 +SEQ =VAL :2 =VAL :3 -SEQ =VAL :4 =VAL :5 -MAP -DOC -STR test.event100644001750001750 5413626002577 22454 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/M9B4+STR +DOC =VAL |literal\n\ttext\n -DOC -STR test.event100644001750001750 11413626002577 22512 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/H3Z8+STR +DOC --- +MAP =VAL :wanted =VAL :love ♥ and peace ☮ -MAP -DOC -STR test.event100644001750001750 14513626002577 22534 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/7T8X+STR +DOC =VAL >\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n -DOC -STR test.event100644001750001750 10413626002577 22510 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/E76Z+STR +DOC +MAP =VAL &a :a =VAL &b :b =ALI *a =ALI *b -MAP -DOC -STR test.event100644001750001750 3313626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4EJS+STR +DOC --- +MAP =VAL :a test.event100644001750001750 6213626002577 22517 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/FP8R+STR +DOC --- =VAL >line1 line2 line3\n -DOC -STR test.event100644001750001750 1213626002577 22426 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8G76+STR -STR test.event100644001750001750 7413626002577 22526 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/QF4Y+STR +DOC +SEQ +MAP =VAL :foo =VAL :bar -MAP -SEQ -DOC -STR test.event100644001750001750 6113626002577 22541 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/SSW6+STR +DOC --- =VAL 'here's to "quotes" -DOC -STR test.event100644001750001750 6013626002577 22461 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/4Q9F+STR +DOC --- =VAL >ab cd\nef\n\ngh\n -DOC -STR test.event100644001750001750 12213626002577 22510 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/TE2A+STR +DOC +MAP =VAL :block mapping +MAP =VAL :key =VAL :value -MAP -MAP -DOC -STR test.event100644001750001750 15513626002577 22537 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/6ZKB+STR +DOC =VAL :Document -DOC +DOC --- =VAL : -DOC ... +DOC --- +MAP =VAL :matches % =VAL :20 -MAP -DOC -STR test.event100644001750001750 7413626002577 22516 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/N4JP+STR +DOC +MAP =VAL :map +MAP =VAL :key1 =VAL "quoted1 -MAP test.event100644001750001750 21013626002577 22503 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EHF6+STR +DOC +MAP =VAL :k +SEQ =VAL :a =VAL :b -SEQ -MAP -DOC -STR test.event100644001750001750 26513626002577 22573 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/PW8X+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 test.event100644001750001750 11313626002577 22524 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/UDM2+STR +DOC +SEQ +MAP =VAL :url =VAL :http://example.org -MAP -SEQ -DOC -STR test.event100644001750001750 11213626002577 22513 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/8QBE+STR +DOC +MAP =VAL :key +SEQ =VAL :item1 =VAL :item2 -SEQ -MAP -DOC -STR test.event100644001750001750 16113626002577 22476 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/9SA2+STR +DOC --- +SEQ +MAP =VAL "single line =VAL :value -MAP +MAP =VAL "multi line =VAL :value -MAP -SEQ -DOC -STR test.event100644001750001750 11213626002577 22544 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/JTV5+STR +DOC +MAP =VAL :a true =VAL :null d =VAL :e 42 =VAL : -MAP -DOC -STR test.event100644001750001750 17713626002577 22531 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/J3BT+STR +DOC +MAP =VAL :quoted =VAL "Quoted \t =VAL :block =VAL |void main() {\n\tprintf("Hello, world!\\n");\n}\n -MAP -DOC -STR test.event100644001750001750 7413626002577 22546 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/3UYS+STR +DOC +MAP =VAL :escaped slash =VAL "a/b -MAP -DOC -STR test.event100644001750001750 5113626002577 22507 0ustar00tinatina000000000000YAML-PP-0.021/test-suite/yaml-test-suite-data/EX5H+STR +DOC --- =VAL :a b c d\ne -DOC -STR