YAML-PP-0.031000755001750001750 014161720075 11650 5ustar00tinatina000000000000LICENSE100644001750001750 4365514161720075 12773 0ustar00tinatina000000000000YAML-PP-0.031This software is copyright (c) 2021 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) 2021 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) 2021 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 2562214161720075 13253 0ustar00tinatina000000000000YAML-PP-0.031Revision history for Perl module YAML::PP 0.031 2021-12-25 23:43:19+01:00 - Fix several rare test cases: - Support literal escaped tabs - Allow only one digit for block scalar indent indicator - Allow comments at the end of directives - Match word boundary after '%YAML' - Allow tabs and multiple spaces between directive elements - Forbid lines starting with tabs in block mode - After tabs no further indentation elements allowed 0.030 2021-11-07 21:57:28+01:00 - preserve: Keep existing data (issue #44) - Forbid directive without directive end marker - Support explicit empty key/value pairs in flow mappings - Enforce EOL after end of flow context - Forbid multiple question marks in flow mappings 0.029 2021-10-25 00:02:53+02:00 - Fix basic implicit mappings in flow sequences, e.g. [a, b: c, d] 0.028 2021-10-21 22:00:36+02:00 - Fix empty values with properties in flow mappings and sequences (`[ &foo , bar]`, `{ &foo , k: v }`) - Fix: Allow comment lines with tabs in flow - Fix: parsing of explicit block indenting (issue #46) - Automatically tie new hashes inside tied hashes (issue #44) - yamlpp-load-dump: Add options --dump-module and --include* - docs: Add mising constants (issue #45) 0.027 2021-04-09 11:13:28+02:00 - Forbid duplicate keys by default like announced in 0.026 - Add possibility to preserve alias names (see 'preserve' option) - Highlighter: Add option to expand tabs in ansi color mode - yamlpp-events: Add option --module - Improve error message when trying to load an undefined alias - Fix a test for perl 5.8.8 0.026 2020-09-11 00:39:09+02:00 - Add option 'duplicate_keys'. The default allows it for now and will change to forbid in the next release. 0.025 2020-09-06 22:14:07+02:00 - Emitter: Fix indentation issues for non-default indents - Emitter: Add option 'width' for maximum columns - Improve error message for unhandled reftypes 0.024 2020-08-17 12:07:01+02:00 - Parser: fix flow mappings on one line - Improve utility tools yamlpp-load(-dump) (add new options --merge, --perl and --module) #35 - Minor improvements to emitter scalar style output - Emitter supports flow style - Support for preserving flow style in Loader/Dumper - Create preserved nodes from scratch with preserved_* methods - Minor fixes for the Perl schema and globs - Update testsuite to data-2020-08-01 0.023 2020-07-09 22:09:50+02:00 - Support loading and dumping typeglobs. Issue #15 - Dumper: Don't use aliases for JSON::PP/boolean.pm booleans, because they alwas use the same reference. Issue #32 - Fix float comparison in test. Issue #33 - Make aliases in custom tags work - YAML::PP::Highlight: colorize mapping keys 0.022 2020-05-04 17:40:36+02:00 - Emitter: Also quote if string starts with '...' - Emitter: Fix bug when emitting complex keys - Preserve also quoting style of hash keys - Schema: Fix YAML 1.1 integers (no keading zeros) - Scripts: Rename yamlpp5- to yamlpp- and symlink - Scripts: Add options to yamlpp-load-dump - Tests: Support reporting flow style in testsuite event output - Tests: Restructure schema tests and outsource test data - Events: Make version_directive compatible to libyaml - Docs: Restructure 0.021 2020-02-27 19:04:58+01:00 - Add option 'preserve' for preserving hash key order and quoting style when loading and dumping 0.020 2020-02-17 15:35:44+01:00 - Change default schema from JSON to Core (this change was supposed to go in 0.019 but wasn't completely done) - Add option version_directive (print %YAML 1.2) - Add option yaml_version - Add support for detecting the right schema depending on the YAML version directive - Support both %YAML and %TAG directive for a document - Improve emitter (output footer ... after open-ended block scalars) - Improve emitter (quote strings starting with `---` to reduce ambiguity for the reader) 0.019 2020-02-13 16:06:56+01:00 - Important (and possibly breaking) changes: - Change default schema from JSON to Core. Reason: This is the recommended Schema for YAML 1.2, and what people would expect to be the default. - load* in scalar context returns first document. Reason: I think this is the most reasonable behaviour, and it will continue to work the same if you later add documents to a file. - Empty nodes in YAML 1.2 JSON Schema resolve to '' by default like before, but now it can be configured - Fix some control character escaping and encoding issues (issue#16, issue#17) YAML::PP will now just assume all input data are unicode characters and won't do an explicit utf8::upgrade - Fix Core schema resolver for inf: add +.inf, +.Inf, +.INF - Improve emitter regarding empty lists/hashes (no newline before []/{}) - Spelling and grammar fixes (PR#23 @gregoa) - Fix YAML::PP::Grammar pod (PR#22 @gregoa) - Fix yamlpp5-load-dump - Fix error tokens output - Update yaml-test-suite to data-2020-02-11 0.018 2019-07-06 19:40:10+02:00 - Turn scalar style constants into numbers - Deprecate YAML_QUOTED_SCALAR_STYLE 0.017 2019-06-29 14:34:17+02:00 - Add Include plugin - Allow to only bless specific classes for Perl Schema - YAML::PP accepts existing schema in constructor - subschema can be an object - Switch the order of 'equals' and regex tag resolvers 0.016 2019-05-20 12:37:01+02:00 - Change load methods to return the last document in scalar context for compatibility with other YAML loaders - Fix Lexer/Emitter (allowing/forbidding special characters in plain scalars) - Custom representer must fill $node->{data} - Dump: uptf8::upgrade input value (so it can store binary data) 0.015 2019-05-14 21:00:59+02:00 - Support Mac \r and Win \r\n line endings - Add options header and footer - Add support for merge keys 0.014 2019-05-07 21:46:56+02:00 - Change tagtype option in Perl Schema (e.g. tag=!perl+!!perl) - Change on_data handler to pass a reference 0.013 2019-04-30 16:02:52+02:00 - Add option "indent" for dumping - Support both !perl/ and !!perl/ tags - Change default schema from Core to JSON - Add YAML::PP::Schema::Binary for representing binary data 0.012 2019-04-14 14:02:36+02:00 - Fix bug in emitter (strings starting with % must be quoted) - Implement loading of schema classes not prefixed with YAML::PP::Schema (PR#8 @pplu) - Implement loading of perl objects - Fix line number of multiline tokens - Refactor parser/lexer. All tokens (except indentation) are now parsed by the grammar. - Change arguments of resolver callback - Add a catchall resolver for scalars 0.011 2019-03-23 12:03:12+01:00 - Add YAML::PP::Common; use constants for YAML styles - Add YAML::PP::Schema::Perl - Dump perl objects, coderefs etc. - Add YAML::PP::Schema::Tie::IxHash - keep order of hashes - Add YAML::PP::Schema::YAML1_1 - Add class_isa representer (PR#7 @pplu) - Add exceptions in tests for broken inf - Refactor schema testing - Fix indent bugs in emitter (aliases, empty lists/mappings) - Fix bug in emitter for values starting with '? ' or '- ' - Add missing resolvers to Core and YAML1_1 Schema 0.010 2018-11-02 12:53:41+01:00 - Fix regex for start of plain scalars - Large refactoring of lexer/parser. - Adjacent flow mapping values are now supported (JSON compat: `{"foo":23}`) - Empty flow mapping values are now supported - Fix nested flow collections 0.009 2018-09-30 14:10:15+02:00 - Fix yamlpp5-highlight bug from v0.008 - load_file(), LoadFile(), dump_file() and DumpFile() can take filehandles 0.008 2018-09-24 21:49:42+02:00 - Support perl 5.8 - Fix bug in folded block scalar parsing - Support multiple document end markers without content - Allow tabs at the beginning of line for flow nodes - Optimize reading input with many lines - Some internal changes - Refactor test suite - Add YAML::PP::Highlight::Dump() 0.007 2018-06-20 21:36:26+02:00 - Support .inf/.nan - Always output decimal point when dumping floats - YAML directive needs space - Improve emitter - Output multiline strings as literal block scalars - Fix regex for integers in Core Schema - Fix dumping of dualvars - Fix emitting of empty strings - Improve emitter scalar styles - Allow zero indented sequences for complex mapping keys/values - Fix parsing empty quoted strings 0.006 2018-04-01 22:59:31+02:00 - Support YAML Failsafe, JSON and Core Schema - Add dump_file, DumpFile - Add YAML::PP::Writer - Add YAML::PP::Representer - Detect cyclic references when loading - perl boolean false is now the empty string instead of 0 - Add column numbers to error messages - Fixed various bugs in Emitter - Can now emit empty collections like [], {} 0.005 2017-11-23 17:09:55+01:00 - Support reading files - Replace load() with load_string(), dump() with dump_string() - Support legacy interface functions Load, LoadFile, Dump - ... and --- are now correctly invalid in quoted scalars - Improve block scalar handling, passing two more tests - Improve multiline plain handling, passing another test - Partial implementation of flow style collections - Allow unicode in alias/anchor names - Document header at the end is now recognized - Support all valid escapes in double quotes - ...and forbid invalid ones - Multiline quoted strings must be indented - Forbid sequence or mapping as a mapping value on the same line - Forbit sequence after an anchor/tag on the same line 0.004 2017-09-15 13:30:50+02:00 - Improve regex for plain scalars - Support literal unicode characters - Reject undefined tag shorthand handles - Fix JSON test - Update yaml-test-suite 0.003_002 2017-09-09 16:27:28+02:00 - Lots of refactoring - Lots of little bugfixes - Split Loader into Constructor - Add yaml-test-suite to release tarball - Add a Lexer - Better error messages - Add a highlighter for HTML and ANSI colors - Dumper can dump aliases/anchors now 0.003_001 2017-08-07 23:29:51+02:00 - Fix some parsing bugs for quoted strings - Add Dumper and Emitter 0.003 2017-05-31 23:35:44+02:00 - Changes for new Loader API 0.002 2017-04-30 19:07:48+02:00 - Loader: Support stringification of complex mapping keys - Improve regexes for mapping keys, tags, anchors/aliases - Improve number support (int, float, oct, hex) - Reserved directives generate a warning now - Support Carriage Return as line break - Support missing final line break - Make JSON::PP optional in test - Fix bug for perl <= 5.22 0.001 Thu Apr 20 20:46:43 2017 +0200 - First Release META.yml100644001750001750 713314161720075 13206 0ustar00tinatina000000000000YAML-PP-0.031--- abstract: 'YAML 1.2 Processor' author: - 'Tina Müller ' build_requires: File::Spec: '0' FindBin: '0' IO::File: '0' IO::Handle: '0' IPC::Open3: '0' Test::Deep: '0' Test::More: '0.98' Test::Warn: '0' lib: '0' perl: v5.8.0 configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.017, 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.031' YAML::PP::Common: file: lib/YAML/PP/Common.pm version: '0.031' YAML::PP::Constructor: file: lib/YAML/PP/Constructor.pm version: '0.031' YAML::PP::Dumper: file: lib/YAML/PP/Dumper.pm version: '0.031' YAML::PP::Emitter: file: lib/YAML/PP/Emitter.pm version: '0.031' YAML::PP::Exception: file: lib/YAML/PP/Exception.pm version: '0.031' YAML::PP::Grammar: file: lib/YAML/PP/Grammar.pm version: '0.031' YAML::PP::Highlight: file: lib/YAML/PP/Highlight.pm version: '0.031' YAML::PP::Lexer: file: lib/YAML/PP/Lexer.pm version: '0.031' YAML::PP::Loader: file: lib/YAML/PP/Loader.pm version: '0.031' YAML::PP::Parser: file: lib/YAML/PP/Parser.pm version: '0.031' YAML::PP::Perl: file: lib/YAML/PP/Perl.pm version: '0.031' YAML::PP::Preserve::Array: file: lib/YAML/PP.pm version: '0.031' YAML::PP::Preserve::Hash: file: lib/YAML/PP.pm version: '0.031' YAML::PP::Preserve::Scalar: file: lib/YAML/PP.pm version: '0.031' YAML::PP::Reader: file: lib/YAML/PP/Reader.pm version: '0.031' YAML::PP::Reader::File: file: lib/YAML/PP/Reader.pm version: '0.031' YAML::PP::Render: file: lib/YAML/PP/Render.pm version: '0.031' YAML::PP::Representer: file: lib/YAML/PP/Representer.pm version: '0.031' YAML::PP::Schema: file: lib/YAML/PP/Schema.pm version: '0.031' YAML::PP::Schema::Binary: file: lib/YAML/PP/Schema/Binary.pm version: '0.031' YAML::PP::Schema::Core: file: lib/YAML/PP/Schema/Core.pm version: '0.031' YAML::PP::Schema::Failsafe: file: lib/YAML/PP/Schema/Failsafe.pm version: '0.031' YAML::PP::Schema::Include: file: lib/YAML/PP/Schema/Include.pm version: '0.031' YAML::PP::Schema::JSON: file: lib/YAML/PP/Schema/JSON.pm version: '0.031' YAML::PP::Schema::Merge: file: lib/YAML/PP/Schema/Merge.pm version: '0.031' YAML::PP::Schema::Perl: file: lib/YAML/PP/Schema/Perl.pm version: '0.031' YAML::PP::Schema::Tie::IxHash: file: lib/YAML/PP/Schema/Tie/IxHash.pm version: '0.031' YAML::PP::Schema::YAML1_1: file: lib/YAML/PP/Schema/YAML1_1.pm version: '0.031' YAML::PP::Type::MergeKey: file: lib/YAML/PP/Type/MergeKey.pm version: '0.031' YAML::PP::Writer: file: lib/YAML/PP/Writer.pm version: '0.031' YAML::PP::Writer::File: file: lib/YAML/PP/Writer/File.pm version: '0.031' requires: B: '0' B::Deparse: '0' Carp: '0' Data::Dumper: '0' Encode: '0' Exporter: '0' File::Basename: '0' Getopt::Long: '0' MIME::Base64: '0' Module::Load: '0' Scalar::Util: '1.07' Tie::Array: '0' Tie::Hash: '0' base: '0' constant: '0' overload: '0' perl: v5.8.0 strict: '0' warnings: '0' resources: bugtracker: https://github.com/perlpunk/YAML-PP-p5/issues repository: https://github.com/perlpunk/YAML-PP-p5 version: '0.031' x_generated_by_perl: v5.30.3 x_serialization_backend: 'YAML::Tiny version 1.73' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' MANIFEST100644001750001750 21406414161720075 13131 0ustar00tinatina000000000000YAML-PP-0.031# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.017. CONTRIBUTING.md Changes LICENSE MANIFEST MANIFEST.SKIP META.json META.yml Makefile.PL Makefile.dev README.md bin/yamlpp-events bin/yamlpp-highlight bin/yamlpp-load bin/yamlpp-load-dump bin/yamlpp-parse-emit dist.ini etc/generate-examples.pl etc/generate-grammar.pl etc/generate-schema-html.pl etc/grammar.yaml etc/json-numbers.pl etc/schema-test-yaml-modules.pl etc/test-suite-html.pl etc/yaml-numbers.pl examples/external-vars-templates/ext.pl examples/external-vars-templates/ext.yaml examples/schema-ixhash.pm examples/schema-perl.pm examples/schemas.pl examples/strings.yaml examples/yaml-schema-modules.yaml ext/yaml-test-schema/Makefile ext/yaml-test-schema/README.md ext/yaml-test-schema/etc/generate-schema-html.pl ext/yaml-test-schema/yaml-schema.yaml lib/YAML/PP.pm lib/YAML/PP/Common.pm lib/YAML/PP/Constructor.pm lib/YAML/PP/Dumper.pm lib/YAML/PP/Emitter.pm lib/YAML/PP/Exception.pm lib/YAML/PP/Grammar.pm lib/YAML/PP/Highlight.pm lib/YAML/PP/Lexer.pm lib/YAML/PP/Loader.pm lib/YAML/PP/Parser.pm lib/YAML/PP/Perl.pm lib/YAML/PP/Reader.pm lib/YAML/PP/Render.pm lib/YAML/PP/Representer.pm lib/YAML/PP/Schema.pm lib/YAML/PP/Schema/Binary.pm lib/YAML/PP/Schema/Core.pm lib/YAML/PP/Schema/Failsafe.pm lib/YAML/PP/Schema/Include.pm lib/YAML/PP/Schema/JSON.pm lib/YAML/PP/Schema/Merge.pm lib/YAML/PP/Schema/Perl.pm lib/YAML/PP/Schema/Tie/IxHash.pm lib/YAML/PP/Schema/YAML1_1.pm lib/YAML/PP/Type/MergeKey.pm lib/YAML/PP/Writer.pm lib/YAML/PP/Writer/File.pm t/00.compile.t t/10.parse-valid.t t/11.parse-invalid.t t/12.load-json.t t/13.load-anchor.t t/14.load-bool.t t/15.parse-eol.t t/16.loader.t t/17.load-complex-keys.t t/18.control.t t/19.file.t t/20.dump.t t/21.emit.t t/22.dump-bool.t t/23-dump-anchor.t t/24.double-escapes.t t/30.legacy.t t/31.schema.t t/32.cyclic-refs.t t/34.emit-scalar-styles.t t/35.highlight.t t/36.debug.t t/37.schema-perl.t t/38.schema-ixhash.t t/39.emitter-alias.t t/40.representers.t t/41.custom.schema.t t/42.tokens.t t/43.indent.t t/44.writer.t t/45.binary.t t/46.line-endings.t t/47.header-footer.t t/48.merge.t t/49.include.t t/50.clone.t t/51.directives.t t/52.preserve.t t/53.customtag-alias.t t/54.glob.t t/55.flow.t t/56.force-flow.t t/57.dup-keys.t t/data/include/circular1.yaml t/data/include/circular2.yaml t/data/include/include.yaml t/data/include/include1.yaml t/data/include/include2.yaml t/data/include/include3.yaml t/data/simple.yaml t/invalid/i032/=== t/invalid/i032/in.yaml t/invalid/i032/test.event t/invalid/i033/=== t/invalid/i033/in.yaml t/invalid/i033/test.event t/invalid/i034/=== t/invalid/i034/in.yaml t/invalid/i034/test.event t/invalid/i035/=== t/invalid/i035/in.yaml t/invalid/i035/test.event t/invalid/i036/=== t/invalid/i036/in.yaml t/invalid/i036/test.event t/invalid/i037/=== t/invalid/i037/in.yaml t/invalid/i037/test.event t/invalid/i038/=== t/invalid/i038/in.yaml t/invalid/i038/test.event t/lib/MySchema.pm t/lib/YAML/PP/Test.pm t/valid/v009/=== t/valid/v009/in.yaml t/valid/v009/out.yaml t/valid/v009/test.event t/valid/v014/=== t/valid/v014/in.yaml t/valid/v014/test.event t/valid/v019/=== t/valid/v019/in.yaml t/valid/v019/out.yaml t/valid/v019/test.event t/valid/v020/=== t/valid/v020/in.yaml t/valid/v020/out.yaml t/valid/v020/test.event t/valid/v021/=== t/valid/v021/in.yaml t/valid/v021/out.yaml t/valid/v021/test.event t/valid/v022/=== t/valid/v022/in.json t/valid/v022/in.yaml t/valid/v022/out.yaml t/valid/v022/test.event t/valid/v023/=== t/valid/v023/in.json t/valid/v023/in.yaml t/valid/v023/out.yaml t/valid/v023/test.event t/valid/v024/=== t/valid/v024/in.json t/valid/v024/in.yaml t/valid/v024/out.yaml t/valid/v024/test.event t/valid/v025/=== t/valid/v025/in.yaml t/valid/v025/out.yaml t/valid/v025/test.event t/valid/v026/=== t/valid/v026/in.yaml t/valid/v026/out.yaml t/valid/v026/test.event t/valid/v027/=== t/valid/v027/in.yaml t/valid/v027/out.yaml t/valid/v027/test.event t/valid/v028/=== t/valid/v028/in.yaml t/valid/v028/out.yaml t/valid/v028/test.event t/valid/v029/=== t/valid/v029/in.yaml t/valid/v029/out.yaml t/valid/v029/test.event t/valid/v030/=== t/valid/v030/in.yaml t/valid/v030/out.yaml t/valid/v030/test.event t/valid/v031/=== t/valid/v031/in.yaml t/valid/v031/out.yaml t/valid/v031/test.event t/valid/v032/=== t/valid/v032/in.yaml t/valid/v032/out.yaml t/valid/v032/test.event 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.json test-suite/yaml-test-suite-data/2XXW/in.yaml test-suite/yaml-test-suite-data/2XXW/out.yaml test-suite/yaml-test-suite-data/2XXW/test.event test-suite/yaml-test-suite-data/33X3/=== test-suite/yaml-test-suite-data/33X3/in.json test-suite/yaml-test-suite-data/33X3/in.yaml test-suite/yaml-test-suite-data/33X3/out.yaml test-suite/yaml-test-suite-data/33X3/test.event test-suite/yaml-test-suite-data/35KP/=== test-suite/yaml-test-suite-data/35KP/in.json test-suite/yaml-test-suite-data/35KP/in.yaml test-suite/yaml-test-suite-data/35KP/out.yaml test-suite/yaml-test-suite-data/35KP/test.event test-suite/yaml-test-suite-data/36F6/=== test-suite/yaml-test-suite-data/36F6/in.json test-suite/yaml-test-suite-data/36F6/in.yaml test-suite/yaml-test-suite-data/36F6/out.yaml test-suite/yaml-test-suite-data/36F6/test.event test-suite/yaml-test-suite-data/3ALJ/=== test-suite/yaml-test-suite-data/3ALJ/in.json test-suite/yaml-test-suite-data/3ALJ/in.yaml test-suite/yaml-test-suite-data/3ALJ/test.event test-suite/yaml-test-suite-data/3GZX/=== test-suite/yaml-test-suite-data/3GZX/in.json test-suite/yaml-test-suite-data/3GZX/in.yaml test-suite/yaml-test-suite-data/3GZX/test.event test-suite/yaml-test-suite-data/3HFZ/=== test-suite/yaml-test-suite-data/3HFZ/error test-suite/yaml-test-suite-data/3HFZ/in.yaml test-suite/yaml-test-suite-data/3HFZ/test.event test-suite/yaml-test-suite-data/3MYT/=== test-suite/yaml-test-suite-data/3MYT/in.json test-suite/yaml-test-suite-data/3MYT/in.yaml test-suite/yaml-test-suite-data/3MYT/out.yaml test-suite/yaml-test-suite-data/3MYT/test.event test-suite/yaml-test-suite-data/3R3P/=== test-suite/yaml-test-suite-data/3R3P/in.json test-suite/yaml-test-suite-data/3R3P/in.yaml test-suite/yaml-test-suite-data/3R3P/out.yaml test-suite/yaml-test-suite-data/3R3P/test.event test-suite/yaml-test-suite-data/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.json test-suite/yaml-test-suite-data/565N/in.yaml test-suite/yaml-test-suite-data/565N/test.event test-suite/yaml-test-suite-data/57H4/=== test-suite/yaml-test-suite-data/57H4/in.json test-suite/yaml-test-suite-data/57H4/in.yaml test-suite/yaml-test-suite-data/57H4/out.yaml test-suite/yaml-test-suite-data/57H4/test.event test-suite/yaml-test-suite-data/5BVJ/=== test-suite/yaml-test-suite-data/5BVJ/in.json test-suite/yaml-test-suite-data/5BVJ/in.yaml test-suite/yaml-test-suite-data/5BVJ/out.yaml test-suite/yaml-test-suite-data/5BVJ/test.event test-suite/yaml-test-suite-data/5C5M/=== test-suite/yaml-test-suite-data/5C5M/in.json test-suite/yaml-test-suite-data/5C5M/in.yaml test-suite/yaml-test-suite-data/5C5M/out.yaml test-suite/yaml-test-suite-data/5C5M/test.event test-suite/yaml-test-suite-data/5GBF/=== test-suite/yaml-test-suite-data/5GBF/in.json test-suite/yaml-test-suite-data/5GBF/in.yaml test-suite/yaml-test-suite-data/5GBF/out.yaml test-suite/yaml-test-suite-data/5GBF/test.event test-suite/yaml-test-suite-data/5KJE/=== test-suite/yaml-test-suite-data/5KJE/in.json test-suite/yaml-test-suite-data/5KJE/in.yaml test-suite/yaml-test-suite-data/5KJE/out.yaml test-suite/yaml-test-suite-data/5KJE/test.event test-suite/yaml-test-suite-data/5LLU/=== test-suite/yaml-test-suite-data/5LLU/error test-suite/yaml-test-suite-data/5LLU/in.yaml test-suite/yaml-test-suite-data/5LLU/test.event test-suite/yaml-test-suite-data/5MUD/=== test-suite/yaml-test-suite-data/5MUD/in.json test-suite/yaml-test-suite-data/5MUD/in.yaml test-suite/yaml-test-suite-data/5MUD/out.yaml test-suite/yaml-test-suite-data/5MUD/test.event test-suite/yaml-test-suite-data/5NYZ/=== test-suite/yaml-test-suite-data/5NYZ/in.json test-suite/yaml-test-suite-data/5NYZ/in.yaml test-suite/yaml-test-suite-data/5NYZ/out.yaml test-suite/yaml-test-suite-data/5NYZ/test.event test-suite/yaml-test-suite-data/5T43/=== test-suite/yaml-test-suite-data/5T43/emit.yaml test-suite/yaml-test-suite-data/5T43/in.json test-suite/yaml-test-suite-data/5T43/in.yaml test-suite/yaml-test-suite-data/5T43/out.yaml test-suite/yaml-test-suite-data/5T43/test.event test-suite/yaml-test-suite-data/5TRB/=== test-suite/yaml-test-suite-data/5TRB/error test-suite/yaml-test-suite-data/5TRB/in.yaml test-suite/yaml-test-suite-data/5TRB/test.event test-suite/yaml-test-suite-data/5TYM/=== test-suite/yaml-test-suite-data/5TYM/in.json test-suite/yaml-test-suite-data/5TYM/in.yaml test-suite/yaml-test-suite-data/5TYM/test.event test-suite/yaml-test-suite-data/5U3A/=== test-suite/yaml-test-suite-data/5U3A/error test-suite/yaml-test-suite-data/5U3A/in.yaml test-suite/yaml-test-suite-data/5U3A/test.event test-suite/yaml-test-suite-data/5WE3/=== test-suite/yaml-test-suite-data/5WE3/in.json test-suite/yaml-test-suite-data/5WE3/in.yaml test-suite/yaml-test-suite-data/5WE3/out.yaml test-suite/yaml-test-suite-data/5WE3/test.event test-suite/yaml-test-suite-data/62EZ/=== test-suite/yaml-test-suite-data/62EZ/error test-suite/yaml-test-suite-data/62EZ/in.yaml test-suite/yaml-test-suite-data/62EZ/test.event test-suite/yaml-test-suite-data/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.json test-suite/yaml-test-suite-data/6CK3/in.yaml test-suite/yaml-test-suite-data/6CK3/test.event test-suite/yaml-test-suite-data/6FWR/=== test-suite/yaml-test-suite-data/6FWR/emit.yaml test-suite/yaml-test-suite-data/6FWR/in.json test-suite/yaml-test-suite-data/6FWR/in.yaml test-suite/yaml-test-suite-data/6FWR/out.yaml test-suite/yaml-test-suite-data/6FWR/test.event test-suite/yaml-test-suite-data/6H3V/=== test-suite/yaml-test-suite-data/6H3V/in.json test-suite/yaml-test-suite-data/6H3V/in.yaml test-suite/yaml-test-suite-data/6H3V/out.yaml test-suite/yaml-test-suite-data/6H3V/test.event test-suite/yaml-test-suite-data/6HB6/=== test-suite/yaml-test-suite-data/6HB6/in.json test-suite/yaml-test-suite-data/6HB6/in.yaml test-suite/yaml-test-suite-data/6HB6/out.yaml test-suite/yaml-test-suite-data/6HB6/test.event test-suite/yaml-test-suite-data/6JQW/=== test-suite/yaml-test-suite-data/6JQW/in.json test-suite/yaml-test-suite-data/6JQW/in.yaml test-suite/yaml-test-suite-data/6JQW/out.yaml test-suite/yaml-test-suite-data/6JQW/test.event test-suite/yaml-test-suite-data/6JTT/=== test-suite/yaml-test-suite-data/6JTT/error test-suite/yaml-test-suite-data/6JTT/in.yaml test-suite/yaml-test-suite-data/6JTT/test.event test-suite/yaml-test-suite-data/6JWB/=== test-suite/yaml-test-suite-data/6JWB/in.json test-suite/yaml-test-suite-data/6JWB/in.yaml test-suite/yaml-test-suite-data/6JWB/out.yaml test-suite/yaml-test-suite-data/6JWB/test.event test-suite/yaml-test-suite-data/6KGN/=== test-suite/yaml-test-suite-data/6KGN/in.json test-suite/yaml-test-suite-data/6KGN/in.yaml test-suite/yaml-test-suite-data/6KGN/out.yaml test-suite/yaml-test-suite-data/6KGN/test.event test-suite/yaml-test-suite-data/6LVF/=== test-suite/yaml-test-suite-data/6LVF/in.json test-suite/yaml-test-suite-data/6LVF/in.yaml test-suite/yaml-test-suite-data/6LVF/out.yaml test-suite/yaml-test-suite-data/6LVF/test.event test-suite/yaml-test-suite-data/6M2F/=== test-suite/yaml-test-suite-data/6M2F/in.yaml test-suite/yaml-test-suite-data/6M2F/out.yaml test-suite/yaml-test-suite-data/6M2F/test.event test-suite/yaml-test-suite-data/6PBE/=== test-suite/yaml-test-suite-data/6PBE/emit.yaml test-suite/yaml-test-suite-data/6PBE/in.yaml test-suite/yaml-test-suite-data/6PBE/test.event test-suite/yaml-test-suite-data/6S55/=== test-suite/yaml-test-suite-data/6S55/error test-suite/yaml-test-suite-data/6S55/in.yaml test-suite/yaml-test-suite-data/6S55/test.event test-suite/yaml-test-suite-data/6SLA/=== test-suite/yaml-test-suite-data/6SLA/in.json test-suite/yaml-test-suite-data/6SLA/in.yaml test-suite/yaml-test-suite-data/6SLA/out.yaml test-suite/yaml-test-suite-data/6SLA/test.event test-suite/yaml-test-suite-data/6VJK/=== test-suite/yaml-test-suite-data/6VJK/in.json test-suite/yaml-test-suite-data/6VJK/in.yaml test-suite/yaml-test-suite-data/6VJK/out.yaml test-suite/yaml-test-suite-data/6VJK/test.event test-suite/yaml-test-suite-data/6WLZ/=== test-suite/yaml-test-suite-data/6WLZ/emit.yaml test-suite/yaml-test-suite-data/6WLZ/in.json test-suite/yaml-test-suite-data/6WLZ/in.yaml test-suite/yaml-test-suite-data/6WLZ/out.yaml test-suite/yaml-test-suite-data/6WLZ/test.event test-suite/yaml-test-suite-data/6WPF/=== test-suite/yaml-test-suite-data/6WPF/emit.yaml test-suite/yaml-test-suite-data/6WPF/in.json test-suite/yaml-test-suite-data/6WPF/in.yaml test-suite/yaml-test-suite-data/6WPF/out.yaml test-suite/yaml-test-suite-data/6WPF/test.event test-suite/yaml-test-suite-data/6XDY/=== test-suite/yaml-test-suite-data/6XDY/in.json test-suite/yaml-test-suite-data/6XDY/in.yaml test-suite/yaml-test-suite-data/6XDY/out.yaml test-suite/yaml-test-suite-data/6XDY/test.event test-suite/yaml-test-suite-data/6ZKB/=== test-suite/yaml-test-suite-data/6ZKB/emit.yaml test-suite/yaml-test-suite-data/6ZKB/in.json test-suite/yaml-test-suite-data/6ZKB/in.yaml test-suite/yaml-test-suite-data/6ZKB/test.event test-suite/yaml-test-suite-data/735Y/=== test-suite/yaml-test-suite-data/735Y/in.json test-suite/yaml-test-suite-data/735Y/in.yaml test-suite/yaml-test-suite-data/735Y/out.yaml test-suite/yaml-test-suite-data/735Y/test.event test-suite/yaml-test-suite-data/74H7/=== test-suite/yaml-test-suite-data/74H7/in.json test-suite/yaml-test-suite-data/74H7/in.yaml test-suite/yaml-test-suite-data/74H7/out.yaml test-suite/yaml-test-suite-data/74H7/test.event test-suite/yaml-test-suite-data/753E/=== test-suite/yaml-test-suite-data/753E/in.json test-suite/yaml-test-suite-data/753E/in.yaml test-suite/yaml-test-suite-data/753E/out.yaml test-suite/yaml-test-suite-data/753E/test.event test-suite/yaml-test-suite-data/7A4E/=== test-suite/yaml-test-suite-data/7A4E/in.json test-suite/yaml-test-suite-data/7A4E/in.yaml test-suite/yaml-test-suite-data/7A4E/out.yaml test-suite/yaml-test-suite-data/7A4E/test.event test-suite/yaml-test-suite-data/7BMT/=== test-suite/yaml-test-suite-data/7BMT/in.json test-suite/yaml-test-suite-data/7BMT/in.yaml test-suite/yaml-test-suite-data/7BMT/out.yaml test-suite/yaml-test-suite-data/7BMT/test.event test-suite/yaml-test-suite-data/7BUB/=== test-suite/yaml-test-suite-data/7BUB/in.json test-suite/yaml-test-suite-data/7BUB/in.yaml test-suite/yaml-test-suite-data/7BUB/out.yaml test-suite/yaml-test-suite-data/7BUB/test.event test-suite/yaml-test-suite-data/7FWL/=== test-suite/yaml-test-suite-data/7FWL/in.json test-suite/yaml-test-suite-data/7FWL/in.yaml test-suite/yaml-test-suite-data/7FWL/out.yaml test-suite/yaml-test-suite-data/7FWL/test.event test-suite/yaml-test-suite-data/7LBH/=== test-suite/yaml-test-suite-data/7LBH/error test-suite/yaml-test-suite-data/7LBH/in.yaml test-suite/yaml-test-suite-data/7LBH/test.event test-suite/yaml-test-suite-data/7MNF/=== test-suite/yaml-test-suite-data/7MNF/error test-suite/yaml-test-suite-data/7MNF/in.yaml test-suite/yaml-test-suite-data/7MNF/test.event test-suite/yaml-test-suite-data/7T8X/=== test-suite/yaml-test-suite-data/7T8X/in.json test-suite/yaml-test-suite-data/7T8X/in.yaml test-suite/yaml-test-suite-data/7T8X/out.yaml test-suite/yaml-test-suite-data/7T8X/test.event test-suite/yaml-test-suite-data/7TMG/=== test-suite/yaml-test-suite-data/7TMG/in.json test-suite/yaml-test-suite-data/7TMG/in.yaml test-suite/yaml-test-suite-data/7TMG/out.yaml test-suite/yaml-test-suite-data/7TMG/test.event test-suite/yaml-test-suite-data/7W2P/=== test-suite/yaml-test-suite-data/7W2P/in.json test-suite/yaml-test-suite-data/7W2P/in.yaml test-suite/yaml-test-suite-data/7W2P/out.yaml test-suite/yaml-test-suite-data/7W2P/test.event test-suite/yaml-test-suite-data/7Z25/=== test-suite/yaml-test-suite-data/7Z25/in.json test-suite/yaml-test-suite-data/7Z25/in.yaml test-suite/yaml-test-suite-data/7Z25/out.yaml test-suite/yaml-test-suite-data/7Z25/test.event test-suite/yaml-test-suite-data/7ZZ5/=== test-suite/yaml-test-suite-data/7ZZ5/in.json test-suite/yaml-test-suite-data/7ZZ5/in.yaml test-suite/yaml-test-suite-data/7ZZ5/out.yaml test-suite/yaml-test-suite-data/7ZZ5/test.event test-suite/yaml-test-suite-data/82AN/=== test-suite/yaml-test-suite-data/82AN/in.json test-suite/yaml-test-suite-data/82AN/in.yaml test-suite/yaml-test-suite-data/82AN/out.yaml test-suite/yaml-test-suite-data/82AN/test.event test-suite/yaml-test-suite-data/87E4/=== test-suite/yaml-test-suite-data/87E4/in.json test-suite/yaml-test-suite-data/87E4/in.yaml test-suite/yaml-test-suite-data/87E4/out.yaml test-suite/yaml-test-suite-data/87E4/test.event test-suite/yaml-test-suite-data/8CWC/=== test-suite/yaml-test-suite-data/8CWC/in.json test-suite/yaml-test-suite-data/8CWC/in.yaml test-suite/yaml-test-suite-data/8CWC/out.yaml test-suite/yaml-test-suite-data/8CWC/test.event test-suite/yaml-test-suite-data/8G76/=== test-suite/yaml-test-suite-data/8G76/in.json test-suite/yaml-test-suite-data/8G76/in.yaml test-suite/yaml-test-suite-data/8G76/out.yaml test-suite/yaml-test-suite-data/8G76/test.event test-suite/yaml-test-suite-data/8KB6/=== test-suite/yaml-test-suite-data/8KB6/in.json test-suite/yaml-test-suite-data/8KB6/in.yaml test-suite/yaml-test-suite-data/8KB6/out.yaml test-suite/yaml-test-suite-data/8KB6/test.event test-suite/yaml-test-suite-data/8MK2/=== test-suite/yaml-test-suite-data/8MK2/in.json test-suite/yaml-test-suite-data/8MK2/in.yaml test-suite/yaml-test-suite-data/8MK2/test.event test-suite/yaml-test-suite-data/8QBE/=== test-suite/yaml-test-suite-data/8QBE/in.json test-suite/yaml-test-suite-data/8QBE/in.yaml test-suite/yaml-test-suite-data/8QBE/out.yaml test-suite/yaml-test-suite-data/8QBE/test.event test-suite/yaml-test-suite-data/8UDB/=== test-suite/yaml-test-suite-data/8UDB/in.json test-suite/yaml-test-suite-data/8UDB/in.yaml test-suite/yaml-test-suite-data/8UDB/out.yaml test-suite/yaml-test-suite-data/8UDB/test.event test-suite/yaml-test-suite-data/8XDJ/=== test-suite/yaml-test-suite-data/8XDJ/error test-suite/yaml-test-suite-data/8XDJ/in.yaml test-suite/yaml-test-suite-data/8XDJ/test.event test-suite/yaml-test-suite-data/8XYN/=== test-suite/yaml-test-suite-data/8XYN/in.json test-suite/yaml-test-suite-data/8XYN/in.yaml test-suite/yaml-test-suite-data/8XYN/out.yaml test-suite/yaml-test-suite-data/8XYN/test.event test-suite/yaml-test-suite-data/93JH/=== test-suite/yaml-test-suite-data/93JH/in.json test-suite/yaml-test-suite-data/93JH/in.yaml test-suite/yaml-test-suite-data/93JH/out.yaml test-suite/yaml-test-suite-data/93JH/test.event test-suite/yaml-test-suite-data/93WF/=== test-suite/yaml-test-suite-data/93WF/in.json test-suite/yaml-test-suite-data/93WF/in.yaml test-suite/yaml-test-suite-data/93WF/out.yaml test-suite/yaml-test-suite-data/93WF/test.event test-suite/yaml-test-suite-data/96L6/=== test-suite/yaml-test-suite-data/96L6/in.json test-suite/yaml-test-suite-data/96L6/in.yaml test-suite/yaml-test-suite-data/96L6/out.yaml test-suite/yaml-test-suite-data/96L6/test.event test-suite/yaml-test-suite-data/98YD/=== test-suite/yaml-test-suite-data/98YD/in.json test-suite/yaml-test-suite-data/98YD/in.yaml test-suite/yaml-test-suite-data/98YD/out.yaml test-suite/yaml-test-suite-data/98YD/test.event test-suite/yaml-test-suite-data/9BXH/=== test-suite/yaml-test-suite-data/9BXH/in.json test-suite/yaml-test-suite-data/9BXH/in.yaml test-suite/yaml-test-suite-data/9BXH/out.yaml test-suite/yaml-test-suite-data/9BXH/test.event test-suite/yaml-test-suite-data/9C9N/=== test-suite/yaml-test-suite-data/9C9N/error test-suite/yaml-test-suite-data/9C9N/in.yaml test-suite/yaml-test-suite-data/9C9N/test.event test-suite/yaml-test-suite-data/9CWY/=== test-suite/yaml-test-suite-data/9CWY/error test-suite/yaml-test-suite-data/9CWY/in.yaml test-suite/yaml-test-suite-data/9CWY/test.event test-suite/yaml-test-suite-data/9DXL/=== test-suite/yaml-test-suite-data/9DXL/emit.yaml test-suite/yaml-test-suite-data/9DXL/in.json test-suite/yaml-test-suite-data/9DXL/in.yaml test-suite/yaml-test-suite-data/9DXL/test.event test-suite/yaml-test-suite-data/9FMG/=== test-suite/yaml-test-suite-data/9FMG/in.json test-suite/yaml-test-suite-data/9FMG/in.yaml test-suite/yaml-test-suite-data/9FMG/test.event test-suite/yaml-test-suite-data/9HCY/=== test-suite/yaml-test-suite-data/9HCY/error test-suite/yaml-test-suite-data/9HCY/in.yaml test-suite/yaml-test-suite-data/9HCY/test.event test-suite/yaml-test-suite-data/9J7A/=== test-suite/yaml-test-suite-data/9J7A/in.json test-suite/yaml-test-suite-data/9J7A/in.yaml test-suite/yaml-test-suite-data/9J7A/test.event test-suite/yaml-test-suite-data/9JBA/=== test-suite/yaml-test-suite-data/9JBA/error test-suite/yaml-test-suite-data/9JBA/in.yaml test-suite/yaml-test-suite-data/9JBA/test.event test-suite/yaml-test-suite-data/9KAX/=== test-suite/yaml-test-suite-data/9KAX/in.json test-suite/yaml-test-suite-data/9KAX/in.yaml test-suite/yaml-test-suite-data/9KAX/out.yaml test-suite/yaml-test-suite-data/9KAX/test.event test-suite/yaml-test-suite-data/9KBC/=== test-suite/yaml-test-suite-data/9KBC/error test-suite/yaml-test-suite-data/9KBC/in.yaml test-suite/yaml-test-suite-data/9KBC/test.event test-suite/yaml-test-suite-data/9MAG/=== test-suite/yaml-test-suite-data/9MAG/error test-suite/yaml-test-suite-data/9MAG/in.yaml test-suite/yaml-test-suite-data/9MAG/test.event test-suite/yaml-test-suite-data/9MMA/=== test-suite/yaml-test-suite-data/9MMA/error test-suite/yaml-test-suite-data/9MMA/in.yaml test-suite/yaml-test-suite-data/9MMA/test.event test-suite/yaml-test-suite-data/9MMW/=== test-suite/yaml-test-suite-data/9MMW/in.yaml test-suite/yaml-test-suite-data/9MMW/out.yaml test-suite/yaml-test-suite-data/9MMW/test.event test-suite/yaml-test-suite-data/9SA2/=== test-suite/yaml-test-suite-data/9SA2/in.json test-suite/yaml-test-suite-data/9SA2/in.yaml test-suite/yaml-test-suite-data/9SA2/out.yaml test-suite/yaml-test-suite-data/9SA2/test.event test-suite/yaml-test-suite-data/9SHH/=== test-suite/yaml-test-suite-data/9SHH/in.json test-suite/yaml-test-suite-data/9SHH/in.yaml test-suite/yaml-test-suite-data/9SHH/test.event test-suite/yaml-test-suite-data/9TFX/=== test-suite/yaml-test-suite-data/9TFX/emit.yaml test-suite/yaml-test-suite-data/9TFX/in.json test-suite/yaml-test-suite-data/9TFX/in.yaml test-suite/yaml-test-suite-data/9TFX/out.yaml test-suite/yaml-test-suite-data/9TFX/test.event test-suite/yaml-test-suite-data/9U5K/=== test-suite/yaml-test-suite-data/9U5K/in.json test-suite/yaml-test-suite-data/9U5K/in.yaml test-suite/yaml-test-suite-data/9U5K/out.yaml test-suite/yaml-test-suite-data/9U5K/test.event test-suite/yaml-test-suite-data/9WXW/=== test-suite/yaml-test-suite-data/9WXW/in.json test-suite/yaml-test-suite-data/9WXW/in.yaml test-suite/yaml-test-suite-data/9WXW/out.yaml test-suite/yaml-test-suite-data/9WXW/test.event test-suite/yaml-test-suite-data/9YRD/=== test-suite/yaml-test-suite-data/9YRD/in.json test-suite/yaml-test-suite-data/9YRD/in.yaml test-suite/yaml-test-suite-data/9YRD/out.yaml test-suite/yaml-test-suite-data/9YRD/test.event test-suite/yaml-test-suite-data/A2M4/=== test-suite/yaml-test-suite-data/A2M4/in.json test-suite/yaml-test-suite-data/A2M4/in.yaml test-suite/yaml-test-suite-data/A2M4/out.yaml test-suite/yaml-test-suite-data/A2M4/test.event test-suite/yaml-test-suite-data/A6F9/=== test-suite/yaml-test-suite-data/A6F9/in.json test-suite/yaml-test-suite-data/A6F9/in.yaml test-suite/yaml-test-suite-data/A6F9/out.yaml test-suite/yaml-test-suite-data/A6F9/test.event test-suite/yaml-test-suite-data/A984/=== test-suite/yaml-test-suite-data/A984/in.json test-suite/yaml-test-suite-data/A984/in.yaml test-suite/yaml-test-suite-data/A984/out.yaml test-suite/yaml-test-suite-data/A984/test.event test-suite/yaml-test-suite-data/AB8U/=== test-suite/yaml-test-suite-data/AB8U/in.json test-suite/yaml-test-suite-data/AB8U/in.yaml test-suite/yaml-test-suite-data/AB8U/out.yaml test-suite/yaml-test-suite-data/AB8U/test.event test-suite/yaml-test-suite-data/AVM7/=== test-suite/yaml-test-suite-data/AVM7/in.json test-suite/yaml-test-suite-data/AVM7/in.yaml test-suite/yaml-test-suite-data/AVM7/test.event test-suite/yaml-test-suite-data/AZ63/=== test-suite/yaml-test-suite-data/AZ63/in.json test-suite/yaml-test-suite-data/AZ63/in.yaml test-suite/yaml-test-suite-data/AZ63/test.event test-suite/yaml-test-suite-data/AZW3/=== test-suite/yaml-test-suite-data/AZW3/in.json test-suite/yaml-test-suite-data/AZW3/in.yaml test-suite/yaml-test-suite-data/AZW3/test.event test-suite/yaml-test-suite-data/B3HG/=== test-suite/yaml-test-suite-data/B3HG/emit.yaml test-suite/yaml-test-suite-data/B3HG/in.json test-suite/yaml-test-suite-data/B3HG/in.yaml test-suite/yaml-test-suite-data/B3HG/out.yaml test-suite/yaml-test-suite-data/B3HG/test.event test-suite/yaml-test-suite-data/B63P/=== test-suite/yaml-test-suite-data/B63P/error test-suite/yaml-test-suite-data/B63P/in.yaml test-suite/yaml-test-suite-data/B63P/test.event test-suite/yaml-test-suite-data/BD7L/=== test-suite/yaml-test-suite-data/BD7L/error test-suite/yaml-test-suite-data/BD7L/in.yaml test-suite/yaml-test-suite-data/BD7L/test.event test-suite/yaml-test-suite-data/BEC7/=== test-suite/yaml-test-suite-data/BEC7/in.json test-suite/yaml-test-suite-data/BEC7/in.yaml test-suite/yaml-test-suite-data/BEC7/out.yaml test-suite/yaml-test-suite-data/BEC7/test.event test-suite/yaml-test-suite-data/BF9H/=== test-suite/yaml-test-suite-data/BF9H/error test-suite/yaml-test-suite-data/BF9H/in.yaml test-suite/yaml-test-suite-data/BF9H/test.event test-suite/yaml-test-suite-data/BS4K/=== test-suite/yaml-test-suite-data/BS4K/error test-suite/yaml-test-suite-data/BS4K/in.yaml test-suite/yaml-test-suite-data/BS4K/test.event test-suite/yaml-test-suite-data/BU8L/=== test-suite/yaml-test-suite-data/BU8L/in.json test-suite/yaml-test-suite-data/BU8L/in.yaml test-suite/yaml-test-suite-data/BU8L/out.yaml test-suite/yaml-test-suite-data/BU8L/test.event test-suite/yaml-test-suite-data/C2DT/=== test-suite/yaml-test-suite-data/C2DT/in.json test-suite/yaml-test-suite-data/C2DT/in.yaml test-suite/yaml-test-suite-data/C2DT/out.yaml test-suite/yaml-test-suite-data/C2DT/test.event test-suite/yaml-test-suite-data/C2SP/=== test-suite/yaml-test-suite-data/C2SP/error test-suite/yaml-test-suite-data/C2SP/in.yaml test-suite/yaml-test-suite-data/C2SP/test.event test-suite/yaml-test-suite-data/C4HZ/=== test-suite/yaml-test-suite-data/C4HZ/in.json test-suite/yaml-test-suite-data/C4HZ/in.yaml test-suite/yaml-test-suite-data/C4HZ/out.yaml test-suite/yaml-test-suite-data/C4HZ/test.event test-suite/yaml-test-suite-data/CC74/=== test-suite/yaml-test-suite-data/CC74/in.json test-suite/yaml-test-suite-data/CC74/in.yaml test-suite/yaml-test-suite-data/CC74/out.yaml test-suite/yaml-test-suite-data/CC74/test.event test-suite/yaml-test-suite-data/CFD4/=== test-suite/yaml-test-suite-data/CFD4/in.yaml test-suite/yaml-test-suite-data/CFD4/out.yaml test-suite/yaml-test-suite-data/CFD4/test.event test-suite/yaml-test-suite-data/CML9/=== test-suite/yaml-test-suite-data/CML9/error test-suite/yaml-test-suite-data/CML9/in.yaml test-suite/yaml-test-suite-data/CML9/test.event test-suite/yaml-test-suite-data/CN3R/=== test-suite/yaml-test-suite-data/CN3R/in.json test-suite/yaml-test-suite-data/CN3R/in.yaml test-suite/yaml-test-suite-data/CN3R/out.yaml test-suite/yaml-test-suite-data/CN3R/test.event test-suite/yaml-test-suite-data/CPZ3/=== test-suite/yaml-test-suite-data/CPZ3/in.json test-suite/yaml-test-suite-data/CPZ3/in.yaml test-suite/yaml-test-suite-data/CPZ3/out.yaml test-suite/yaml-test-suite-data/CPZ3/test.event test-suite/yaml-test-suite-data/CQ3W/=== test-suite/yaml-test-suite-data/CQ3W/error test-suite/yaml-test-suite-data/CQ3W/in.yaml test-suite/yaml-test-suite-data/CQ3W/test.event test-suite/yaml-test-suite-data/CT4Q/=== test-suite/yaml-test-suite-data/CT4Q/in.json test-suite/yaml-test-suite-data/CT4Q/in.yaml test-suite/yaml-test-suite-data/CT4Q/out.yaml test-suite/yaml-test-suite-data/CT4Q/test.event test-suite/yaml-test-suite-data/CTN5/=== test-suite/yaml-test-suite-data/CTN5/error test-suite/yaml-test-suite-data/CTN5/in.yaml test-suite/yaml-test-suite-data/CTN5/test.event test-suite/yaml-test-suite-data/CUP7/=== test-suite/yaml-test-suite-data/CUP7/in.json test-suite/yaml-test-suite-data/CUP7/in.yaml test-suite/yaml-test-suite-data/CUP7/out.yaml test-suite/yaml-test-suite-data/CUP7/test.event test-suite/yaml-test-suite-data/CVW2/=== test-suite/yaml-test-suite-data/CVW2/error test-suite/yaml-test-suite-data/CVW2/in.yaml test-suite/yaml-test-suite-data/CVW2/test.event test-suite/yaml-test-suite-data/CXX2/=== test-suite/yaml-test-suite-data/CXX2/error test-suite/yaml-test-suite-data/CXX2/in.yaml test-suite/yaml-test-suite-data/CXX2/test.event test-suite/yaml-test-suite-data/D49Q/=== test-suite/yaml-test-suite-data/D49Q/error test-suite/yaml-test-suite-data/D49Q/in.yaml test-suite/yaml-test-suite-data/D49Q/test.event test-suite/yaml-test-suite-data/D83L/=== test-suite/yaml-test-suite-data/D83L/in.json test-suite/yaml-test-suite-data/D83L/in.yaml test-suite/yaml-test-suite-data/D83L/out.yaml test-suite/yaml-test-suite-data/D83L/test.event test-suite/yaml-test-suite-data/D88J/=== test-suite/yaml-test-suite-data/D88J/in.json test-suite/yaml-test-suite-data/D88J/in.yaml test-suite/yaml-test-suite-data/D88J/out.yaml test-suite/yaml-test-suite-data/D88J/test.event test-suite/yaml-test-suite-data/D9TU/=== test-suite/yaml-test-suite-data/D9TU/in.json test-suite/yaml-test-suite-data/D9TU/in.yaml test-suite/yaml-test-suite-data/D9TU/test.event test-suite/yaml-test-suite-data/DBG4/=== test-suite/yaml-test-suite-data/DBG4/in.json test-suite/yaml-test-suite-data/DBG4/in.yaml test-suite/yaml-test-suite-data/DBG4/out.yaml test-suite/yaml-test-suite-data/DBG4/test.event test-suite/yaml-test-suite-data/DC7X/=== test-suite/yaml-test-suite-data/DC7X/in.json test-suite/yaml-test-suite-data/DC7X/in.yaml test-suite/yaml-test-suite-data/DC7X/out.yaml test-suite/yaml-test-suite-data/DC7X/test.event test-suite/yaml-test-suite-data/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/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/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/JR7V/=== test-suite/yaml-test-suite-data/JR7V/in.json test-suite/yaml-test-suite-data/JR7V/in.yaml test-suite/yaml-test-suite-data/JR7V/out.yaml test-suite/yaml-test-suite-data/JR7V/test.event test-suite/yaml-test-suite-data/JS2J/=== test-suite/yaml-test-suite-data/JS2J/in.json test-suite/yaml-test-suite-data/JS2J/in.yaml test-suite/yaml-test-suite-data/JS2J/test.event test-suite/yaml-test-suite-data/JTV5/=== test-suite/yaml-test-suite-data/JTV5/in.json test-suite/yaml-test-suite-data/JTV5/in.yaml test-suite/yaml-test-suite-data/JTV5/out.yaml test-suite/yaml-test-suite-data/JTV5/test.event test-suite/yaml-test-suite-data/JY7Z/=== test-suite/yaml-test-suite-data/JY7Z/error test-suite/yaml-test-suite-data/JY7Z/in.yaml test-suite/yaml-test-suite-data/JY7Z/test.event test-suite/yaml-test-suite-data/K3WX/=== test-suite/yaml-test-suite-data/K3WX/in.json test-suite/yaml-test-suite-data/K3WX/in.yaml test-suite/yaml-test-suite-data/K3WX/out.yaml test-suite/yaml-test-suite-data/K3WX/test.event test-suite/yaml-test-suite-data/K4SU/=== test-suite/yaml-test-suite-data/K4SU/in.json test-suite/yaml-test-suite-data/K4SU/in.yaml test-suite/yaml-test-suite-data/K4SU/test.event test-suite/yaml-test-suite-data/K527/=== test-suite/yaml-test-suite-data/K527/in.json test-suite/yaml-test-suite-data/K527/in.yaml test-suite/yaml-test-suite-data/K527/out.yaml test-suite/yaml-test-suite-data/K527/test.event test-suite/yaml-test-suite-data/K54U/=== test-suite/yaml-test-suite-data/K54U/in.json test-suite/yaml-test-suite-data/K54U/in.yaml test-suite/yaml-test-suite-data/K54U/out.yaml test-suite/yaml-test-suite-data/K54U/test.event test-suite/yaml-test-suite-data/K858/=== test-suite/yaml-test-suite-data/K858/in.json test-suite/yaml-test-suite-data/K858/in.yaml test-suite/yaml-test-suite-data/K858/out.yaml test-suite/yaml-test-suite-data/K858/test.event test-suite/yaml-test-suite-data/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/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.yaml test-suite/yaml-test-suite-data/NHX8/test.event test-suite/yaml-test-suite-data/NJ66/=== test-suite/yaml-test-suite-data/NJ66/in.json test-suite/yaml-test-suite-data/NJ66/in.yaml test-suite/yaml-test-suite-data/NJ66/out.yaml test-suite/yaml-test-suite-data/NJ66/test.event test-suite/yaml-test-suite-data/NKF9/=== test-suite/yaml-test-suite-data/NKF9/emit.yaml test-suite/yaml-test-suite-data/NKF9/in.yaml test-suite/yaml-test-suite-data/NKF9/test.event test-suite/yaml-test-suite-data/NP9H/=== test-suite/yaml-test-suite-data/NP9H/in.json test-suite/yaml-test-suite-data/NP9H/in.yaml test-suite/yaml-test-suite-data/NP9H/out.yaml test-suite/yaml-test-suite-data/NP9H/test.event test-suite/yaml-test-suite-data/P2AD/=== test-suite/yaml-test-suite-data/P2AD/in.json test-suite/yaml-test-suite-data/P2AD/in.yaml test-suite/yaml-test-suite-data/P2AD/out.yaml test-suite/yaml-test-suite-data/P2AD/test.event test-suite/yaml-test-suite-data/P2EQ/=== test-suite/yaml-test-suite-data/P2EQ/error test-suite/yaml-test-suite-data/P2EQ/in.yaml test-suite/yaml-test-suite-data/P2EQ/test.event test-suite/yaml-test-suite-data/P76L/=== test-suite/yaml-test-suite-data/P76L/in.json test-suite/yaml-test-suite-data/P76L/in.yaml test-suite/yaml-test-suite-data/P76L/out.yaml test-suite/yaml-test-suite-data/P76L/test.event test-suite/yaml-test-suite-data/P94K/=== test-suite/yaml-test-suite-data/P94K/in.json test-suite/yaml-test-suite-data/P94K/in.yaml test-suite/yaml-test-suite-data/P94K/out.yaml test-suite/yaml-test-suite-data/P94K/test.event test-suite/yaml-test-suite-data/PBJ2/=== test-suite/yaml-test-suite-data/PBJ2/in.json test-suite/yaml-test-suite-data/PBJ2/in.yaml test-suite/yaml-test-suite-data/PBJ2/out.yaml test-suite/yaml-test-suite-data/PBJ2/test.event test-suite/yaml-test-suite-data/PRH3/=== test-suite/yaml-test-suite-data/PRH3/emit.yaml test-suite/yaml-test-suite-data/PRH3/in.json test-suite/yaml-test-suite-data/PRH3/in.yaml test-suite/yaml-test-suite-data/PRH3/out.yaml test-suite/yaml-test-suite-data/PRH3/test.event test-suite/yaml-test-suite-data/PUW8/=== test-suite/yaml-test-suite-data/PUW8/in.json test-suite/yaml-test-suite-data/PUW8/in.yaml test-suite/yaml-test-suite-data/PUW8/out.yaml test-suite/yaml-test-suite-data/PUW8/test.event test-suite/yaml-test-suite-data/PW8X/=== test-suite/yaml-test-suite-data/PW8X/in.yaml test-suite/yaml-test-suite-data/PW8X/out.yaml test-suite/yaml-test-suite-data/PW8X/test.event test-suite/yaml-test-suite-data/Q4CL/=== test-suite/yaml-test-suite-data/Q4CL/error test-suite/yaml-test-suite-data/Q4CL/in.yaml test-suite/yaml-test-suite-data/Q4CL/test.event test-suite/yaml-test-suite-data/Q5MG/=== test-suite/yaml-test-suite-data/Q5MG/in.json test-suite/yaml-test-suite-data/Q5MG/in.yaml test-suite/yaml-test-suite-data/Q5MG/out.yaml test-suite/yaml-test-suite-data/Q5MG/test.event test-suite/yaml-test-suite-data/Q88A/=== test-suite/yaml-test-suite-data/Q88A/in.json test-suite/yaml-test-suite-data/Q88A/in.yaml test-suite/yaml-test-suite-data/Q88A/out.yaml test-suite/yaml-test-suite-data/Q88A/test.event test-suite/yaml-test-suite-data/Q8AD/=== test-suite/yaml-test-suite-data/Q8AD/emit.yaml test-suite/yaml-test-suite-data/Q8AD/in.json test-suite/yaml-test-suite-data/Q8AD/in.yaml test-suite/yaml-test-suite-data/Q8AD/out.yaml test-suite/yaml-test-suite-data/Q8AD/test.event test-suite/yaml-test-suite-data/Q9WF/=== test-suite/yaml-test-suite-data/Q9WF/in.yaml test-suite/yaml-test-suite-data/Q9WF/out.yaml test-suite/yaml-test-suite-data/Q9WF/test.event test-suite/yaml-test-suite-data/QB6E/=== test-suite/yaml-test-suite-data/QB6E/error test-suite/yaml-test-suite-data/QB6E/in.yaml test-suite/yaml-test-suite-data/QB6E/test.event test-suite/yaml-test-suite-data/QF4Y/=== test-suite/yaml-test-suite-data/QF4Y/in.json test-suite/yaml-test-suite-data/QF4Y/in.yaml test-suite/yaml-test-suite-data/QF4Y/out.yaml test-suite/yaml-test-suite-data/QF4Y/test.event test-suite/yaml-test-suite-data/QLJ7/=== test-suite/yaml-test-suite-data/QLJ7/error test-suite/yaml-test-suite-data/QLJ7/in.yaml test-suite/yaml-test-suite-data/QLJ7/test.event test-suite/yaml-test-suite-data/QT73/=== test-suite/yaml-test-suite-data/QT73/in.json test-suite/yaml-test-suite-data/QT73/in.yaml test-suite/yaml-test-suite-data/QT73/out.yaml test-suite/yaml-test-suite-data/QT73/test.event test-suite/yaml-test-suite-data/R4YG/=== test-suite/yaml-test-suite-data/R4YG/in.json test-suite/yaml-test-suite-data/R4YG/in.yaml test-suite/yaml-test-suite-data/R4YG/out.yaml test-suite/yaml-test-suite-data/R4YG/test.event test-suite/yaml-test-suite-data/R52L/=== test-suite/yaml-test-suite-data/R52L/in.json test-suite/yaml-test-suite-data/R52L/in.yaml test-suite/yaml-test-suite-data/R52L/out.yaml test-suite/yaml-test-suite-data/R52L/test.event test-suite/yaml-test-suite-data/RHX7/=== test-suite/yaml-test-suite-data/RHX7/error test-suite/yaml-test-suite-data/RHX7/in.yaml test-suite/yaml-test-suite-data/RHX7/test.event test-suite/yaml-test-suite-data/RLU9/=== test-suite/yaml-test-suite-data/RLU9/in.json test-suite/yaml-test-suite-data/RLU9/in.yaml test-suite/yaml-test-suite-data/RLU9/out.yaml test-suite/yaml-test-suite-data/RLU9/test.event test-suite/yaml-test-suite-data/RR7F/=== test-suite/yaml-test-suite-data/RR7F/in.json test-suite/yaml-test-suite-data/RR7F/in.yaml test-suite/yaml-test-suite-data/RR7F/out.yaml test-suite/yaml-test-suite-data/RR7F/test.event test-suite/yaml-test-suite-data/RTP8/=== test-suite/yaml-test-suite-data/RTP8/in.json test-suite/yaml-test-suite-data/RTP8/in.yaml test-suite/yaml-test-suite-data/RTP8/out.yaml test-suite/yaml-test-suite-data/RTP8/test.event test-suite/yaml-test-suite-data/RXY3/=== test-suite/yaml-test-suite-data/RXY3/error test-suite/yaml-test-suite-data/RXY3/in.yaml test-suite/yaml-test-suite-data/RXY3/test.event test-suite/yaml-test-suite-data/RZP5/=== test-suite/yaml-test-suite-data/RZP5/in.yaml test-suite/yaml-test-suite-data/RZP5/out.yaml test-suite/yaml-test-suite-data/RZP5/test.event test-suite/yaml-test-suite-data/RZT7/=== test-suite/yaml-test-suite-data/RZT7/in.json test-suite/yaml-test-suite-data/RZT7/in.yaml test-suite/yaml-test-suite-data/RZT7/out.yaml test-suite/yaml-test-suite-data/RZT7/test.event test-suite/yaml-test-suite-data/S3PD/=== test-suite/yaml-test-suite-data/S3PD/emit.yaml test-suite/yaml-test-suite-data/S3PD/in.yaml test-suite/yaml-test-suite-data/S3PD/test.event test-suite/yaml-test-suite-data/S4GJ/=== test-suite/yaml-test-suite-data/S4GJ/error test-suite/yaml-test-suite-data/S4GJ/in.yaml test-suite/yaml-test-suite-data/S4GJ/test.event test-suite/yaml-test-suite-data/S4JQ/=== test-suite/yaml-test-suite-data/S4JQ/in.json test-suite/yaml-test-suite-data/S4JQ/in.yaml test-suite/yaml-test-suite-data/S4JQ/out.yaml test-suite/yaml-test-suite-data/S4JQ/test.event test-suite/yaml-test-suite-data/S4T7/=== test-suite/yaml-test-suite-data/S4T7/in.json test-suite/yaml-test-suite-data/S4T7/in.yaml test-suite/yaml-test-suite-data/S4T7/test.event test-suite/yaml-test-suite-data/S7BG/=== test-suite/yaml-test-suite-data/S7BG/in.json test-suite/yaml-test-suite-data/S7BG/in.yaml test-suite/yaml-test-suite-data/S7BG/out.yaml test-suite/yaml-test-suite-data/S7BG/test.event test-suite/yaml-test-suite-data/S98Z/=== test-suite/yaml-test-suite-data/S98Z/error test-suite/yaml-test-suite-data/S98Z/in.yaml test-suite/yaml-test-suite-data/S98Z/test.event test-suite/yaml-test-suite-data/S9E8/=== test-suite/yaml-test-suite-data/S9E8/in.json test-suite/yaml-test-suite-data/S9E8/in.yaml test-suite/yaml-test-suite-data/S9E8/out.yaml test-suite/yaml-test-suite-data/S9E8/test.event test-suite/yaml-test-suite-data/SBG9/=== test-suite/yaml-test-suite-data/SBG9/in.yaml test-suite/yaml-test-suite-data/SBG9/out.yaml test-suite/yaml-test-suite-data/SBG9/test.event test-suite/yaml-test-suite-data/SF5V/=== test-suite/yaml-test-suite-data/SF5V/error test-suite/yaml-test-suite-data/SF5V/in.yaml test-suite/yaml-test-suite-data/SF5V/test.event test-suite/yaml-test-suite-data/SKE5/=== test-suite/yaml-test-suite-data/SKE5/in.json test-suite/yaml-test-suite-data/SKE5/in.yaml test-suite/yaml-test-suite-data/SKE5/out.yaml test-suite/yaml-test-suite-data/SKE5/test.event test-suite/yaml-test-suite-data/SR86/=== test-suite/yaml-test-suite-data/SR86/error test-suite/yaml-test-suite-data/SR86/in.yaml test-suite/yaml-test-suite-data/SR86/test.event test-suite/yaml-test-suite-data/SSW6/=== test-suite/yaml-test-suite-data/SSW6/in.json test-suite/yaml-test-suite-data/SSW6/in.yaml test-suite/yaml-test-suite-data/SSW6/out.yaml test-suite/yaml-test-suite-data/SSW6/test.event test-suite/yaml-test-suite-data/SU5Z/=== test-suite/yaml-test-suite-data/SU5Z/error test-suite/yaml-test-suite-data/SU5Z/in.yaml test-suite/yaml-test-suite-data/SU5Z/test.event test-suite/yaml-test-suite-data/SU74/=== test-suite/yaml-test-suite-data/SU74/error test-suite/yaml-test-suite-data/SU74/in.yaml test-suite/yaml-test-suite-data/SU74/test.event test-suite/yaml-test-suite-data/SY6V/=== test-suite/yaml-test-suite-data/SY6V/error test-suite/yaml-test-suite-data/SY6V/in.yaml test-suite/yaml-test-suite-data/SY6V/test.event test-suite/yaml-test-suite-data/SYW4/=== test-suite/yaml-test-suite-data/SYW4/in.json test-suite/yaml-test-suite-data/SYW4/in.yaml test-suite/yaml-test-suite-data/SYW4/out.yaml test-suite/yaml-test-suite-data/SYW4/test.event test-suite/yaml-test-suite-data/T26H/=== test-suite/yaml-test-suite-data/T26H/emit.yaml test-suite/yaml-test-suite-data/T26H/in.json test-suite/yaml-test-suite-data/T26H/in.yaml test-suite/yaml-test-suite-data/T26H/out.yaml test-suite/yaml-test-suite-data/T26H/test.event test-suite/yaml-test-suite-data/T4YY/=== test-suite/yaml-test-suite-data/T4YY/emit.yaml test-suite/yaml-test-suite-data/T4YY/in.json test-suite/yaml-test-suite-data/T4YY/in.yaml test-suite/yaml-test-suite-data/T4YY/out.yaml test-suite/yaml-test-suite-data/T4YY/test.event test-suite/yaml-test-suite-data/T5N4/=== test-suite/yaml-test-suite-data/T5N4/emit.yaml test-suite/yaml-test-suite-data/T5N4/in.json test-suite/yaml-test-suite-data/T5N4/in.yaml test-suite/yaml-test-suite-data/T5N4/out.yaml test-suite/yaml-test-suite-data/T5N4/test.event test-suite/yaml-test-suite-data/T833/=== test-suite/yaml-test-suite-data/T833/error test-suite/yaml-test-suite-data/T833/in.yaml test-suite/yaml-test-suite-data/T833/test.event test-suite/yaml-test-suite-data/TD5N/=== test-suite/yaml-test-suite-data/TD5N/error test-suite/yaml-test-suite-data/TD5N/in.yaml test-suite/yaml-test-suite-data/TD5N/test.event test-suite/yaml-test-suite-data/TE2A/=== test-suite/yaml-test-suite-data/TE2A/in.json test-suite/yaml-test-suite-data/TE2A/in.yaml test-suite/yaml-test-suite-data/TE2A/out.yaml test-suite/yaml-test-suite-data/TE2A/test.event test-suite/yaml-test-suite-data/TL85/=== test-suite/yaml-test-suite-data/TL85/in.json test-suite/yaml-test-suite-data/TL85/in.yaml test-suite/yaml-test-suite-data/TL85/out.yaml test-suite/yaml-test-suite-data/TL85/test.event test-suite/yaml-test-suite-data/TS54/=== test-suite/yaml-test-suite-data/TS54/in.json test-suite/yaml-test-suite-data/TS54/in.yaml test-suite/yaml-test-suite-data/TS54/out.yaml test-suite/yaml-test-suite-data/TS54/test.event test-suite/yaml-test-suite-data/U3C3/=== test-suite/yaml-test-suite-data/U3C3/in.json test-suite/yaml-test-suite-data/U3C3/in.yaml test-suite/yaml-test-suite-data/U3C3/out.yaml test-suite/yaml-test-suite-data/U3C3/test.event test-suite/yaml-test-suite-data/U3XV/=== test-suite/yaml-test-suite-data/U3XV/in.json test-suite/yaml-test-suite-data/U3XV/in.yaml test-suite/yaml-test-suite-data/U3XV/out.yaml test-suite/yaml-test-suite-data/U3XV/test.event test-suite/yaml-test-suite-data/U44R/=== test-suite/yaml-test-suite-data/U44R/error test-suite/yaml-test-suite-data/U44R/in.yaml test-suite/yaml-test-suite-data/U44R/test.event test-suite/yaml-test-suite-data/U99R/=== test-suite/yaml-test-suite-data/U99R/error test-suite/yaml-test-suite-data/U99R/in.yaml test-suite/yaml-test-suite-data/U99R/test.event test-suite/yaml-test-suite-data/U9NS/=== test-suite/yaml-test-suite-data/U9NS/in.json test-suite/yaml-test-suite-data/U9NS/in.yaml test-suite/yaml-test-suite-data/U9NS/test.event test-suite/yaml-test-suite-data/UDM2/=== test-suite/yaml-test-suite-data/UDM2/in.json test-suite/yaml-test-suite-data/UDM2/in.yaml test-suite/yaml-test-suite-data/UDM2/out.yaml test-suite/yaml-test-suite-data/UDM2/test.event test-suite/yaml-test-suite-data/UDR7/=== test-suite/yaml-test-suite-data/UDR7/in.json test-suite/yaml-test-suite-data/UDR7/in.yaml test-suite/yaml-test-suite-data/UDR7/out.yaml test-suite/yaml-test-suite-data/UDR7/test.event test-suite/yaml-test-suite-data/UGM3/=== test-suite/yaml-test-suite-data/UGM3/in.json test-suite/yaml-test-suite-data/UGM3/in.yaml test-suite/yaml-test-suite-data/UGM3/out.yaml test-suite/yaml-test-suite-data/UGM3/test.event test-suite/yaml-test-suite-data/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.json test-suite/yaml-test-suite-data/Z9M4/in.yaml test-suite/yaml-test-suite-data/Z9M4/out.yaml test-suite/yaml-test-suite-data/Z9M4/test.event test-suite/yaml-test-suite-data/ZCZ6/=== test-suite/yaml-test-suite-data/ZCZ6/error test-suite/yaml-test-suite-data/ZCZ6/in.yaml test-suite/yaml-test-suite-data/ZCZ6/test.event test-suite/yaml-test-suite-data/ZF4X/=== test-suite/yaml-test-suite-data/ZF4X/in.json test-suite/yaml-test-suite-data/ZF4X/in.yaml test-suite/yaml-test-suite-data/ZF4X/out.yaml test-suite/yaml-test-suite-data/ZF4X/test.event test-suite/yaml-test-suite-data/ZH7C/=== test-suite/yaml-test-suite-data/ZH7C/in.json test-suite/yaml-test-suite-data/ZH7C/in.yaml test-suite/yaml-test-suite-data/ZH7C/test.event test-suite/yaml-test-suite-data/ZK9H/=== test-suite/yaml-test-suite-data/ZK9H/in.json test-suite/yaml-test-suite-data/ZK9H/in.yaml test-suite/yaml-test-suite-data/ZK9H/out.yaml test-suite/yaml-test-suite-data/ZK9H/test.event test-suite/yaml-test-suite-data/ZL4Z/=== test-suite/yaml-test-suite-data/ZL4Z/error test-suite/yaml-test-suite-data/ZL4Z/in.yaml test-suite/yaml-test-suite-data/ZL4Z/test.event test-suite/yaml-test-suite-data/ZVH3/=== test-suite/yaml-test-suite-data/ZVH3/error test-suite/yaml-test-suite-data/ZVH3/in.yaml test-suite/yaml-test-suite-data/ZVH3/test.event test-suite/yaml-test-suite-data/ZWK4/=== test-suite/yaml-test-suite-data/ZWK4/in.json test-suite/yaml-test-suite-data/ZWK4/in.yaml test-suite/yaml-test-suite-data/ZWK4/out.yaml test-suite/yaml-test-suite-data/ZWK4/test.event test-suite/yaml-test-suite-data/ZXT5/=== test-suite/yaml-test-suite-data/ZXT5/error test-suite/yaml-test-suite-data/ZXT5/in.yaml test-suite/yaml-test-suite-data/ZXT5/test.event xt/02.pod-cover.t xt/03.spelling.t xt/04.pod.t dist.ini100644001750001750 214114161720075 13373 0ustar00tinatina000000000000YAML-PP-0.031name = YAML-PP author = Tina Müller license = Perl_5 copyright_holder = Tina Müller copyright_year = 2021 version = 0.031 [@Filter] -bundle = @Basic -remove = GatherDir -remove = Readme option = for_basic [Prereqs] perl = 5.8.0 Scalar::Util = 1.07 ; openhandle() [AutoPrereqs] skip = Term::ANSIColor skip = boolean skip = JSON::PP skip = JSON::XS skip = Cpanel::JSON::XS skip = HTML::Entities skip = Tie::IxHash skip = Tie::StdHash skip = Tie::StdArray skip = YAML skip = YAML::PP::LibYAML skip = YAML::Syck skip = YAML::Tiny skip = YAML::XS [Prereqs / TestRequires] Test::More = 0.98 [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 README.md100644001750001750 75614161720075 13200 0ustar00tinatina000000000000YAML-PP-0.031# Perl module YAML::PP YAML::PP is a modular YAML processor for YAML 1.2. Additionally to loading and dumping it provides a parser and emitter. The parsing events are compatible to the [YAML Test Suite](https://github.com/yaml/yaml-test-suite) and other libraries like [libyaml](https://github.com/yaml/libyaml). Loading and Dumping can be customized. It supports the YAML 1.2 Failsafe, JSON and Core Schemas. You can find the full documentation here: https://metacpan.org/release/YAML-PP META.json100644001750001750 1350614161720075 13377 0ustar00tinatina000000000000YAML-PP-0.031{ "abstract" : "YAML 1.2 Processor", "author" : [ "Tina M\u00fcller " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.017, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "YAML-PP", "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "develop" : { "requires" : { "Pod::Wordlist" : "0", "Test::More" : "0", "Test::Spelling" : "0" } }, "runtime" : { "requires" : { "B" : "0", "B::Deparse" : "0", "Carp" : "0", "Data::Dumper" : "0", "Encode" : "0", "Exporter" : "0", "File::Basename" : "0", "Getopt::Long" : "0", "MIME::Base64" : "0", "Module::Load" : "0", "Scalar::Util" : "1.07", "Tie::Array" : "0", "Tie::Hash" : "0", "base" : "0", "constant" : "0", "overload" : "0", "perl" : "v5.8.0", "strict" : "0", "warnings" : "0" } }, "test" : { "requires" : { "File::Spec" : "0", "FindBin" : "0", "IO::File" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Test::Deep" : "0", "Test::More" : "0.98", "Test::Warn" : "0", "lib" : "0", "perl" : "v5.8.0" } } }, "provides" : { "YAML::PP" : { "file" : "lib/YAML/PP.pm", "version" : "0.031" }, "YAML::PP::Common" : { "file" : "lib/YAML/PP/Common.pm", "version" : "0.031" }, "YAML::PP::Constructor" : { "file" : "lib/YAML/PP/Constructor.pm", "version" : "0.031" }, "YAML::PP::Dumper" : { "file" : "lib/YAML/PP/Dumper.pm", "version" : "0.031" }, "YAML::PP::Emitter" : { "file" : "lib/YAML/PP/Emitter.pm", "version" : "0.031" }, "YAML::PP::Exception" : { "file" : "lib/YAML/PP/Exception.pm", "version" : "0.031" }, "YAML::PP::Grammar" : { "file" : "lib/YAML/PP/Grammar.pm", "version" : "0.031" }, "YAML::PP::Highlight" : { "file" : "lib/YAML/PP/Highlight.pm", "version" : "0.031" }, "YAML::PP::Lexer" : { "file" : "lib/YAML/PP/Lexer.pm", "version" : "0.031" }, "YAML::PP::Loader" : { "file" : "lib/YAML/PP/Loader.pm", "version" : "0.031" }, "YAML::PP::Parser" : { "file" : "lib/YAML/PP/Parser.pm", "version" : "0.031" }, "YAML::PP::Perl" : { "file" : "lib/YAML/PP/Perl.pm", "version" : "0.031" }, "YAML::PP::Preserve::Array" : { "file" : "lib/YAML/PP.pm", "version" : "0.031" }, "YAML::PP::Preserve::Hash" : { "file" : "lib/YAML/PP.pm", "version" : "0.031" }, "YAML::PP::Preserve::Scalar" : { "file" : "lib/YAML/PP.pm", "version" : "0.031" }, "YAML::PP::Reader" : { "file" : "lib/YAML/PP/Reader.pm", "version" : "0.031" }, "YAML::PP::Reader::File" : { "file" : "lib/YAML/PP/Reader.pm", "version" : "0.031" }, "YAML::PP::Render" : { "file" : "lib/YAML/PP/Render.pm", "version" : "0.031" }, "YAML::PP::Representer" : { "file" : "lib/YAML/PP/Representer.pm", "version" : "0.031" }, "YAML::PP::Schema" : { "file" : "lib/YAML/PP/Schema.pm", "version" : "0.031" }, "YAML::PP::Schema::Binary" : { "file" : "lib/YAML/PP/Schema/Binary.pm", "version" : "0.031" }, "YAML::PP::Schema::Core" : { "file" : "lib/YAML/PP/Schema/Core.pm", "version" : "0.031" }, "YAML::PP::Schema::Failsafe" : { "file" : "lib/YAML/PP/Schema/Failsafe.pm", "version" : "0.031" }, "YAML::PP::Schema::Include" : { "file" : "lib/YAML/PP/Schema/Include.pm", "version" : "0.031" }, "YAML::PP::Schema::JSON" : { "file" : "lib/YAML/PP/Schema/JSON.pm", "version" : "0.031" }, "YAML::PP::Schema::Merge" : { "file" : "lib/YAML/PP/Schema/Merge.pm", "version" : "0.031" }, "YAML::PP::Schema::Perl" : { "file" : "lib/YAML/PP/Schema/Perl.pm", "version" : "0.031" }, "YAML::PP::Schema::Tie::IxHash" : { "file" : "lib/YAML/PP/Schema/Tie/IxHash.pm", "version" : "0.031" }, "YAML::PP::Schema::YAML1_1" : { "file" : "lib/YAML/PP/Schema/YAML1_1.pm", "version" : "0.031" }, "YAML::PP::Type::MergeKey" : { "file" : "lib/YAML/PP/Type/MergeKey.pm", "version" : "0.031" }, "YAML::PP::Writer" : { "file" : "lib/YAML/PP/Writer.pm", "version" : "0.031" }, "YAML::PP::Writer::File" : { "file" : "lib/YAML/PP/Writer/File.pm", "version" : "0.031" } }, "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.031", "x_generated_by_perl" : "v5.30.3", "x_serialization_backend" : "Cpanel::JSON::XS version 4.26", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later" } Makefile.PL100644001750001750 425614161720075 13712 0ustar00tinatina000000000000YAML-PP-0.031# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.017. use strict; use warnings; use 5.008000; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "YAML 1.2 Processor", "AUTHOR" => "Tina M\x{fc}ller ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "YAML-PP", "EXE_FILES" => [ "bin/yamlpp-events", "bin/yamlpp-highlight", "bin/yamlpp-load", "bin/yamlpp-load-dump", "bin/yamlpp-parse-emit" ], "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.008000", "NAME" => "YAML::PP", "PREREQ_PM" => { "B" => 0, "B::Deparse" => 0, "Carp" => 0, "Data::Dumper" => 0, "Encode" => 0, "Exporter" => 0, "File::Basename" => 0, "Getopt::Long" => 0, "MIME::Base64" => 0, "Module::Load" => 0, "Scalar::Util" => "1.07", "Tie::Array" => 0, "Tie::Hash" => 0, "base" => 0, "constant" => 0, "overload" => 0, "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "File::Spec" => 0, "FindBin" => 0, "IO::File" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::Deep" => 0, "Test::More" => "0.98", "Test::Warn" => 0, "lib" => 0 }, "VERSION" => "0.031", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "B" => 0, "B::Deparse" => 0, "Carp" => 0, "Data::Dumper" => 0, "Encode" => 0, "Exporter" => 0, "File::Basename" => 0, "File::Spec" => 0, "FindBin" => 0, "Getopt::Long" => 0, "IO::File" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "MIME::Base64" => 0, "Module::Load" => 0, "Scalar::Util" => "1.07", "Test::Deep" => 0, "Test::More" => "0.98", "Test::Warn" => 0, "Tie::Array" => 0, "Tie::Hash" => 0, "base" => 0, "constant" => 0, "lib" => 0, "overload" => 0, "strict" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); xt000755001750001750 014161720075 12224 5ustar00tinatina000000000000YAML-PP-0.03104.pod.t100644001750001750 25314161720075 13535 0ustar00tinatina000000000000YAML-PP-0.031/xt#!/usr/bin/perl use strict; use warnings; use Test::More; eval "use Test::Pod 1.00"; plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; all_pod_files_ok(); t000755001750001750 014161720075 12034 5ustar00tinatina000000000000YAML-PP-0.03121.emit.t100644001750001750 337414161720075 13547 0ustar00tinatina000000000000YAML-PP-0.031/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 FRK4 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ F6MC NB6Z CFD4 /; # 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 MJS9 /; # TODO fix testsuite # 4QFQ # unicode push @skip, qw/ H3Z8 /; push @skip, qw/ X38W /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, ); my %skip_yaml_equal = ( 'X38W' => 1, 'G4RS' => 1, '6CK3' => 1, '5TYM' => 1, '565N' => 1, # fix testsuite 'K858' => 1, '4MUZ' => 1, '8KB6' => 1, '9BXH' => 1, '6ZKB' => 1, '6SLA' => 1, '9DXL' => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $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; 54.glob.t100644001750001750 1200614161720075 13552 0ustar00tinatina000000000000YAML-PP-0.031/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use FindBin '$Bin'; use Data::Dumper; use Test::Deep qw/ cmp_deeply /; use IO::File; use YAML::PP; use YAML::PP::Schema::Perl; use Scalar::Util qw/ blessed reftype /; our $var = "Hola"; our @var = (3, 14, 15); our %var = (pi => '3.1415'); my $stdin = \*DATA, my $fileno = fileno DATA; my $perl_objects = YAML::PP::Schema::Perl->new( ); my $perl_no_objects = YAML::PP::Schema::Perl->new( classes => [], ); my $yp = YAML::PP->new( schema => ['+', $perl_objects], ); my $yp_no_objects = YAML::PP->new( schema => ['+', $perl_no_objects], ); my %tests = ( simple => { in => <<'EOM', --- !perl/glob ARRAY: - 3 - 14 - 15 HASH: pi: '3.1415' NAME: var PACKAGE: main SCALAR: Hola EOM name => '*main::var', value => 'Hola', types => { SCALAR => 'Hola', ARRAY => [ 3, 14, 15 ], HASH => { pi => '3.1415' }, }, }, blessed => { in => <<'EOM', --- !perl/glob:Foo ARRAY: - 3 - 14 - 15 HASH: pi: '3.1415' NAME: var PACKAGE: main SCALAR: Hola EOM name => '*main::var', class => 'Foo', value => 'Hola', types => { SCALAR => 'Hola', ARRAY => [ 3, 14, 15 ], HASH => { pi => '3.1415' }, }, }, io => { in => <<"EOM", --- !perl/glob IO: fileno: $fileno stat: {} NAME: DATA PACKAGE: main EOM name => '*main::DATA', types => { IO => $fileno, }, }, blessed_io => { in => <<"EOM", --- !perl/glob:Foo IO: fileno: $fileno stat: {} NAME: DATA PACKAGE: main EOM name => '*main::DATA', class => 'Foo', types => { IO => $fileno, }, }, ); subtest valid => sub { my @tests = ( [objects => $yp], [no_objects => $yp_no_objects], ); for my $type (@tests) { my ($test_type, $yp) = @$type; for my $key (sort keys %tests) { my $test = $tests{ $key }; my $name = $test->{name}; my $label = "$test_type - $key - $name"; my $class = $test->{class} || ''; note "============ $key $name"; my $input = $test->{in}; my $data = $yp->load_string($input); my $glob = *{$data}; if ($class) { my $ref = ref $data; if ($test_type eq 'no_objects') { my $reftype = reftype(\$data); is($reftype, 'GLOB', "$label - ($class) reftype is glob"); isnt(ref $data, $class, "$label - Class not equals '$class'"); } else { my $reftype = reftype($data); is($reftype, 'GLOB', "$label - ($class) reftype is glob"); is(ref $data, $class, "$label - Class equals '$class'"); } } else { my $reftype = reftype(\$data); is($reftype, 'GLOB', "$label - reftype is glob"); } is("$glob", $name, "$label - Glob name"); my $types = $test->{types}; for my $type (sort keys %$types) { my $exp = $types->{ $type }; my $value; my $glob = *{$data}{ $type }; if ($type eq 'SCALAR') { $value = $$glob; } elsif ($type eq 'ARRAY') { $value = [ @$glob ]; } elsif ($type eq 'HASH') { $value = { %$glob }; } elsif ($type eq 'IO') { $value = fileno $glob; } cmp_deeply($value, $exp, "$label - $type - Data equal"); } my $dump = $yp->dump_string($data); if ($key =~ m/io/) { $dump =~ s/^ [a-z]+: \S+\n//mg; $dump =~ s/^ tell: \S+\n//m; $dump =~ s/stat:$/stat: \{\}/m; } if ($class and $test_type eq 'no_objects') { isnt($dump, $input, "$label - Dump not equals input"); } else { is($dump, $input, "$label - Dump equals input"); } } } }; subtest ioscalar => sub { my $fh = IO::File->new("< $Bin/54.glob.t"); my $dump = $yp->dump_string($fh); my $fn = $fh->fileno; like $dump, qr{--- !perl/glob:IO::File}, "IO::Scalar correctly dumped as blessed per/glob"; like $dump, qr{fileno: $fn\n}, "IO::Scalar fileno correct"; }; my @error = ( [ <<'EOM', qr{Unexpected keys in perl/glob}], --- !perl/glob NAME: var this: should not be here EOM [ <<'EOM', qr{Missing NAME in perl/glob}], --- !perl/glob name: invalid EOM ); subtest error => sub { for my $item (@error) { my ($input, $qr) = @$item; my $data = eval { $yp->load_string($input); }; my $err = $@; like $err, $qr, "Invalid glob - error matches $qr"; } }; done_testing; __DATA__ dummy 19.file.t100644001750001750 315314161720075 13532 0ustar00tinatina000000000000YAML-PP-0.031/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; } 55.flow.t100644001750001750 220214161720075 13554 0ustar00tinatina000000000000YAML-PP-0.031/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; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 4ABK 87E4 8UDB 9MMW CN3R CT4Q FRK4 L9U5 LQZ7 LX3P QF4Y 6BFJ CFD4 Q9WF v022 /; push @skip, qw/ v014 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, tag => 'flow', ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase, { flow => 'keep' }); $testsuite->compare_emit_yaml($testcase, $result); } done_testing; exit; 20.dump.t100644001750001750 217114161720075 13547 0ustar00tinatina000000000000YAML-PP-0.031/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 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ CFD4 /; 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 172714161720075 14155 0ustar00tinatina000000000000YAML-PP-0.031test-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 48.merge.t100644001750001750 341114161720075 13711 0ustar00tinatina000000000000YAML-PP-0.031/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; 36.debug.t100644001750001750 102414161720075 13673 0ustar00tinatina000000000000YAML-PP-0.031/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 144514161720075 13710 0ustar00tinatina000000000000YAML-PP-0.031/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; MANIFEST.SKIP100644001750001750 15714161720075 13612 0ustar00tinatina000000000000YAML-PP-0.031^dev ^test-suite/.git ^cover_db ^local ^dev.sh ^nytprof ^nytprof.out ^pod2htmd.tmp ^new_tests ^gh-pages ^bench 30.legacy.t100644001750001750 361014161720075 14046 0ustar00tinatina000000000000YAML-PP-0.031/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 776414161720075 14112 0ustar00tinatina000000000000YAML-PP-0.031/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; 44.writer.t100644001750001750 155114161720075 14125 0ustar00tinatina000000000000YAML-PP-0.031/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} }; } 31.schema.t100644001750001750 1276514161720075 14076 0ustar00tinatina000000000000YAML-PP-0.031/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/../ext/yaml-test-schema/yaml-schema.yaml"; my $strings_file = "$Bin/../examples/strings.yaml"; my $schema_data = do { YAML::PP->new->load_file($schema_file) }; my $strings_data = do { YAML::PP->new->load_file($strings_file) }; $schema_data->{'#empty'}->{json_empty_null} = ['null', 'null()', "null"]; $schema_data->{'!!str #empty'}->{json_empty_null} = ['str', '', "''"]; %$schema_data = ( %$schema_data, %$strings_data, ); my $boolean = $jsonpp ? 'JSON::PP' : 'perl'; my %args = ( boolean => $boolean, header => 0, ); my $failsafe = YAML::PP->new( %args, schema => [qw/ Failsafe /] ); my $json = YAML::PP->new( %args, schema => [qw/ JSON /] ); my $json_empty_null = YAML::PP->new( %args, schema => [qw/ JSON empty=null /] ); my $core = YAML::PP->new( %args, schema => [qw/ Core /] ); my $yaml11 = YAML::PP->new( %args, schema => [qw/ YAML1_1 /] ); subtest 'invalid-option' => sub { eval { YAML::PP->new( boolean => $boolean, schema => [qw/ JSON empty=lala /] ); }; my $err = $@; like($err, qr{Invalid option}, 'Invalid option is fatal'); }; my %loaders = ( failsafe => $failsafe, json => $json, core => $core, yaml11 => $yaml11, json_empty_null => $json_empty_null, ); my $inf = 0 + 'inf'; my $inf_negative = 0 - 'inf'; my $nan = 0 + 'nan'; diag("inf: $inf -inf: $inf_negative nan: $nan"); my $inf_broken = $inf eq '0'; $inf_broken and diag("inf/nan seem broken, skipping those tests"); my %check = ( null => sub { not defined $_[0] }, inf => sub { my ($float) = @_; return $float eq $inf; }, 'inf-neg' => sub { my ($float) = @_; return $float eq $inf_negative; }, nan => sub { my ($float) = @_; return $float eq $nan; }, ); if ($jsonpp) { %check = ( %check, true => sub { blessed($_[0]) eq 'JSON::PP::Boolean' and $_[0] }, false => sub { blessed($_[0]) eq 'JSON::PP::Boolean' and not $_[0] }, ); } my $i = 0; for my $input (sort keys %$schema_data) { my $test_data = $schema_data->{ $input }; # note("Input: $input"); for my $schema_names (sort keys %$test_data) { note("[$input] Schemas: " . $schema_names); my @names = split m/ *, */, $schema_names; my $test = $test_data->{ $schema_names }; for my $name (@names) { my $yp = $loaders{ $name }; my %def; @def{ qw/ type data dump /} = @$test; next if ($def{type} eq 'bool' and not $jsonpp); my $func; my $data = $yp->load_string('--- ' . $input); my $data_orig = $data; # avoid stringifying original data my $flags = B::svref_2object(\$data)->FLAGS; my $is_str = $flags & B::SVp_POK; my $is_int = $flags & B::SVp_IOK; my $is_float = $flags & B::SVp_NOK; my $type = $def{type}; my $label = sprintf "(%s) type %s: load(%s)", $name, $def{type}, $input; if ($def{data} =~ m/^([\w-]+)\(\)$/) { my $func_name = $1; $func = $check{ $func_name }; my $ok = $func->($data); ok($ok, "$label - check $func_name() ok"); } if ($type eq 'str') { ok($is_str, "$label is str"); ok(! $is_int, "$label is not int"); ok(! $is_float, "$label is not float"); unless ($func) { cmp_ok($def{data}, 'eq', $data, "$label eq '$def{data}'"); } } elsif ($type eq 'int') { ok($is_int, "$label is int"); ok(!$is_str, "$label is not str"); unless ($func) { cmp_ok($data, '==', $def{data}, "$label == '$def{data}'"); } } elsif ($type eq 'float' or $type eq 'inf' or $type eq 'nan') { unless ($inf_broken) { ok($is_float, "$label is float"); ok(!$is_str, "$label is not str"); } unless ($func) { cmp_ok(sprintf("%.2f", $data), '==', $def{data}, "$label == '$def{data}'"); } } elsif ($type eq 'bool' or $type eq 'null') { } else { ok(0, "unknown type $type"); } unless ($inf_broken) { my $yaml_dump = $yp->dump_string($data_orig); $yaml_dump =~ s/\n\z//; cmp_ok($yaml_dump, 'eq', $def{dump}, "$label-dump as expected"); } } } # last if ++$i > 10; } subtest int_string => sub { my $x = "25.1"; my $y = $x + 0; for my $name (qw/ json core yaml11 /) { my $yp = $loaders{ $name }; my $yaml = $yp->dump_string($x); chomp $yaml; cmp_ok($yaml, 'eq', '25.1', "$name: IV and PV"); } }; subtest float_string => sub { my $x = 19; { no warnings 'numeric'; $x .= "x"; my $y = $x + 0; }; for my $name (qw/ json core yaml11 /) { my $yp = $loaders{ $name }; my $yaml = $yp->dump_string($x); chomp $yaml; cmp_ok($yaml, 'eq', '19x', "$name: NV and PV"); } }; done_testing; 42.tokens.t100644001750001750 151214161720075 14107 0ustar00tinatina000000000000YAML-PP-0.031/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 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ CFD4 /; 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; 16.loader.t100644001750001750 44414161720075 14036 0ustar00tinatina000000000000YAML-PP-0.031/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; 43.indent.t100644001750001750 612014161720075 14066 0ustar00tinatina000000000000YAML-PP-0.031/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 Data::Dumper; my $in = <<'EOM'; --- a: b: c: d list: - 1 - x: 2 y: 3 nested1: - - a - b nested2: - - a - b EOM my $out_expected1 = <<'EOM'; --- a: b: c: d list: - 1 - x: 2 y: 3 nested1: - - a - b nested2: - - a - b EOM my $out_expected4 = <<'EOM'; --- a: b: c: d list: - 1 - x: 2 y: 3 nested1: - - a - b nested2: - - a - b EOM my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($parser, $name, $info) = @_; push @events, $info; }, ); $parser->parse_string( $in ); my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new( indent => 1); $emitter->set_writer($writer); $emitter->init; for my $event (@events) { my $type = $event->{name}; $emitter->$type($event); } my $out1 = $emitter->writer->output; cmp_ok($out1, 'eq', $out_expected1, "Emitting with indent 1"); $emitter->set_indent(4); $emitter->init; for my $event (@events) { my $type = $event->{name}; $emitter->$type($event); } my $out4 = $emitter->writer->output; cmp_ok($out4, 'eq', $out_expected4, "Emitting with indent 4"); $ENV{YAML_PP_RESERVED_DIRECTIVE} = 'ignore'; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; # skip tests that parser can't parse my @skip = qw/ 4FJ6 4ABK 87E4 8CWC 8UDB 9MMW CN3R CT4Q FRK4 L9U5 LQZ7 LX3P Q9WF QF4Y 6BFJ F6MC NB6Z CFD4 /; # 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 MJS9 /; # TODO fix testsuite # 4QFQ # unicode push @skip, qw/ H3Z8 /; push @skip, qw/ X38W /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, ); my %skip_yaml_equal = ( 'X38W' => 1, 'G4RS' => 1, '6CK3' => 1, '5TYM' => 1, '565N' => 1, # fix testsuite 'K858' => 1, '4MUZ' => 1, '8KB6' => 1, '9BXH' => 1, '6ZKB' => 1, '6SLA' => 1, '9DXL' => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); my $indent = 1; subtest "indent-$indent" => sub { $testsuite->run_testcases( code => sub { test(@_, $indent) }, ); }; subtest "indent-$indent" => sub { $indent = 3; $testsuite->run_testcases( code => sub { test(@_, $indent) }, ); }; subtest "indent-$indent" => sub { $indent = 4; $testsuite->run_testcases( code => sub { test(@_, $indent) }, ); }; $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase, $indent) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase, { indent => $indent }); delete $result->{emit_yaml}; $testsuite->compare_emit_yaml($testcase, $result); } done_testing; 00.compile.t100644001750001750 706014161720075 14232 0ustar00tinatina000000000000YAML-PP-0.031/tuse 5.006; use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058 use Test::More; plan tests => 33 + ($ENV{AUTHOR_TESTING} ? 1 : 0); my @module_files = ( 'YAML/PP.pm', 'YAML/PP/Common.pm', 'YAML/PP/Constructor.pm', 'YAML/PP/Dumper.pm', 'YAML/PP/Emitter.pm', 'YAML/PP/Exception.pm', 'YAML/PP/Grammar.pm', 'YAML/PP/Highlight.pm', 'YAML/PP/Lexer.pm', 'YAML/PP/Loader.pm', 'YAML/PP/Parser.pm', 'YAML/PP/Perl.pm', 'YAML/PP/Reader.pm', 'YAML/PP/Render.pm', 'YAML/PP/Representer.pm', 'YAML/PP/Schema.pm', 'YAML/PP/Schema/Binary.pm', 'YAML/PP/Schema/Core.pm', 'YAML/PP/Schema/Failsafe.pm', 'YAML/PP/Schema/Include.pm', 'YAML/PP/Schema/JSON.pm', 'YAML/PP/Schema/Merge.pm', 'YAML/PP/Schema/Perl.pm', 'YAML/PP/Schema/Tie/IxHash.pm', 'YAML/PP/Schema/YAML1_1.pm', 'YAML/PP/Type/MergeKey.pm', 'YAML/PP/Writer.pm', 'YAML/PP/Writer/File.pm' ); my @scripts = ( 'bin/yamlpp-events', 'bin/yamlpp-highlight', 'bin/yamlpp-load', 'bin/yamlpp-load-dump', 'bin/yamlpp-parse-emit' ); # no fake home requested my @switches = ( -d 'blib' ? '-Mblib' : '-Ilib', ); use File::Spec; use IPC::Open3; use IO::Handle; open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; my @warnings; for my $lib (@module_files) { # see L my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-e', "require q[$lib]")) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } foreach my $file (@scripts) { SKIP: { open my $fh, '<', $file or warn("Unable to open $file: $!"), next; my $line = <$fh>; close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/; @switches = (@switches, split(' ', $1)) if $1; close $fh and skip("$file uses -T; not testable with PERL5LIB", 1) if grep { $_ eq '-T' } @switches and $ENV{PERL5LIB}; my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-c', $file)) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-c', $file); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$file compiled ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; # in older perls, -c output is simply the file portion of the path being tested if (@_warnings = grep { !/\bsyntax OK$/ } grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings) { warn @_warnings; push @warnings, @_warnings; } } } is(scalar(@warnings), 0, 'no warnings found') or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING}; YAML000755001750001750 014161720075 13101 5ustar00tinatina000000000000YAML-PP-0.031/libPP.pm100644001750001750 10064714161720075 14166 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML# ABSTRACT: YAML 1.2 Processor use strict; use warnings; package YAML::PP; our $VERSION = '0.031'; # 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 $width = delete $args{width}; my $writer = delete $args{writer}; my $header = delete $args{header}; my $footer = delete $args{footer}; my $duplicate_keys = delete $args{duplicate_keys}; my $yaml_version = $class->_arg_yaml_version(delete $args{yaml_version}); my $default_yaml_version = $yaml_version->[0]; my $version_directive = delete $args{version_directive}; my $preserve = delete $args{preserve}; my $parser = delete $args{parser}; my $emitter = delete $args{emitter} || { indent => $indent, width => $width, writer => $writer, }; if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my %schemas; for my $v (@$yaml_version) { my $schema; if (blessed($schemas) and $schemas->isa('YAML::PP::Schema')) { $schema = $schemas; } else { $schema = YAML::PP::Schema->new( boolean => $bool, yaml_version => $v, ); $schema->load_subschemas(@$schemas); } $schemas{ $v } = $schema; } my $default_schema = $schemas{ $default_yaml_version }; my $loader = YAML::PP::Loader->new( schemas => \%schemas, cyclic_refs => $cyclic_refs, parser => $parser, default_yaml_version => $default_yaml_version, preserve => $preserve, duplicate_keys => $duplicate_keys, ); my $dumper = YAML::PP::Dumper->new( schema => $default_schema, emitter => $emitter, header => $header, footer => $footer, version_directive => $version_directive, preserve => $preserve, ); my $self = bless { schema => \%schemas, loader => $loader, dumper => $dumper, }, $class; return $self; } sub clone { my ($self) = @_; my $clone = { schema => $self->schema, loader => $self->loader->clone, dumper => $self->dumper->clone, }; return bless $clone, ref $self; } sub _arg_yaml_version { my ($class, $version) = @_; my @versions = ('1.2'); if (defined $version) { @versions = (); if (not ref $version) { $version = [$version]; } for my $v (@$version) { unless ($YAML_VERSIONS{ $v }) { croak "YAML Version '$v' not supported"; } push @versions, $v; } } return \@versions; } sub loader { if (@_ > 1) { $_[0]->{loader} = $_[1] } return $_[0]->{loader}; } sub dumper { if (@_ > 1) { $_[0]->{dumper} = $_[1] } return $_[0]->{dumper}; } sub schema { if (@_ > 1) { $_[0]->{schema}->{'1.2'} = $_[1] } return $_[0]->{schema}->{'1.2'}; } sub default_schema { my ($self, %args) = @_; my $schema = YAML::PP::Schema->new( boolean => $args{boolean}, ); $schema->load_subschemas(qw/ Core /); return $schema; } sub load_string { my ($self, $yaml) = @_; return $self->loader->load_string($yaml); } sub load_file { my ($self, $file) = @_; return $self->loader->load_file($file); } sub dump { my ($self, @data) = @_; return $self->dumper->dump(@data); } sub dump_string { my ($self, @data) = @_; return $self->dumper->dump_string(@data); } sub dump_file { my ($self, $file, @data) = @_; return $self->dumper->dump_file($file, @data); } # legagy interface sub Load { my ($yaml) = @_; YAML::PP->new->load_string($yaml); } sub LoadFile { my ($file) = @_; YAML::PP->new->load_file($file); } sub Dump { my (@data) = @_; YAML::PP->new->dump_string(@data); } sub DumpFile { my ($file, @data) = @_; YAML::PP->new->dump_file($file, @data); } sub preserved_scalar { my ($self, $value, %args) = @_; my $scalar = YAML::PP::Preserve::Scalar->new( value => $value, %args, ); return $scalar; } sub preserved_mapping { my ($self, $hash, %args) = @_; my $data = {}; tie %$data, 'YAML::PP::Preserve::Hash'; %$data = %$hash; my $t = tied %$data; $t->{style} = $args{style}; $t->{alias} = $args{alias}; return $data; } sub preserved_sequence { my ($self, $array, %args) = @_; my $data = []; tie @$data, 'YAML::PP::Preserve::Array'; push @$data, @$array; my $t = tied @$data; $t->{style} = $args{style}; $t->{alias} = $args{alias}; return $data; } package YAML::PP::Preserve::Hash; # experimental use Tie::Hash; use base qw/ Tie::StdHash /; use Scalar::Util qw/ reftype blessed /; sub TIEHASH { my ($class, %args) = @_; my $self = bless { keys => [keys %args], data => { %args }, }, $class; } sub STORE { my ($self, $key, $val) = @_; my $keys = $self->{keys}; unless (exists $self->{data}->{ $key }) { push @$keys, $key; } if (ref $val and not blessed($val)) { if (reftype($val) eq 'HASH' and not tied %$val) { tie %$val, 'YAML::PP::Preserve::Hash', %$val; } elsif (reftype($val) eq 'ARRAY' and not tied @$val) { tie @$val, 'YAML::PP::Preserve::Array', @$val; } } $self->{data}->{ $key } = $val; } sub FIRSTKEY { my ($self) = @_; return $self->{keys}->[0]; } sub NEXTKEY { my ($self, $last) = @_; my $keys = $self->{keys}; for my $i (0 .. $#$keys) { if ("$keys->[ $i ]" eq "$last") { return $keys->[ $i + 1 ]; } } return; } sub FETCH { my ($self, $key) = @_; my $val = $self->{data}->{ $key }; } sub DELETE { my ($self, $key) = @_; @{ $self->{keys} } = grep { "$_" ne "$key" } @{ $self->{keys} }; delete $self->{data}->{ $key }; } sub EXISTS { my ($self, $key) = @_; return exists $self->{data}->{ $key }; } sub CLEAR { my ($self) = @_; $self->{keys} = []; $self->{data} = {}; } sub SCALAR { my ($self) = @_; return scalar %{ $self->{data} }; } package YAML::PP::Preserve::Array; # experimental use Tie::Array; use base qw/ Tie::StdArray /; use Scalar::Util qw/ reftype blessed /; sub TIEARRAY { my ($class, @items) = @_; my $self = bless { data => [@items], }, $class; return $self; } sub FETCH { my ($self, $i) = @_; return $self->{data}->[ $i ]; } sub FETCHSIZE { my ($self) = @_; return $#{ $self->{data} } + 1; } sub _preserve { my ($val) = @_; if (ref $val and not blessed($val)) { if (reftype($val) eq 'HASH' and not tied %$val) { tie %$val, 'YAML::PP::Preserve::Hash', %$val; } elsif (reftype($val) eq 'ARRAY' and not tied @$val) { tie @$val, 'YAML::PP::Preserve::Array', @$val; } } return $val; } sub STORE { my ($self, $i, $val) = @_; _preserve($val); $self->{data}->[ $i ] = $val; } sub PUSH { my ($self, @args) = @_; push @{ $self->{data} }, map { _preserve $_ } @args; } sub STORESIZE { my ($self, $i) = @_; $#{ $self->{data} } = $i - 1; } sub DELETE { my ($self, $i) = @_; delete $self->{data}->[ $i ]; } sub EXISTS { my ($self, $i) = @_; return exists $self->{data}->[ $i ]; } sub CLEAR { my ($self) = @_; $self->{data} = []; } sub SHIFT { my ($self) = @_; shift @{ $self->{data} }; } sub UNSHIFT { my ($self, @args) = @_; unshift @{ $self->{data} }, map { _preserve $_ } @args; } sub SPLICE { my ($self, $offset, $length, @args) = @_; splice @{ $self->{data} }, $offset, $length, map { _preserve $_ } @args; } sub EXTEND {} package YAML::PP::Preserve::Scalar; use overload fallback => 1, '+' => \&value, '""' => \&value, 'bool' => \&value, ; sub new { my ($class, %args) = @_; my $self = { %args, }; bless $self, $class; } sub value { $_[0]->{value} } sub tag { $_[0]->{tag} } sub style { $_[0]->{style} || 0 } sub alias { $_[0]->{alias} } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP - YAML 1.2 processor =head1 SYNOPSIS WARNING: Most of the inner API is not stable yet. Here are a few examples of the basic load and dump methods: use YAML::PP; my $ypp = YAML::PP->new; my $yaml = <<'EOM'; --- # Document one is a mapping name: Tina age: 29 favourite language: Perl --- # Document two is a sequence - plain string - 'in single quotes' - "in double quotes we have escapes! like \t and \n" - | # a literal block scalar line1 line2 - > # a folded block scalar this is all one single line because the linebreaks will be folded EOM my @documents = $ypp->load_string($yaml); my @documents = $ypp->load_file($filename); my $yaml = $ypp->dump_string($data1, $data2); $ypp->dump_file($filename, $data1, $data2); # 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'); # Enable perl data types and objects my $ypp = YAML::PP->new(schema => [qw/ + Perl /]); my $yaml = $yp->dump_string($data_with_perl_objects); # Legacy interface use YAML::PP qw/ Load Dump LoadFile DumpFile /; my @documents = Load($yaml); my @documents = LoadFile($filename); my @documents = LoadFile($filehandle); my $yaml = = Dump(@documents); DumpFile($filename, @documents); DumpFile($filenhandle @documents); Some utility scripts, mostly useful for debugging: # Load YAML into a data structure and dump with Data::Dumper yamlpp-load < file.yaml # Load and Dump yamlpp-load-dump < file.yaml # Print the events from the parser in yaml-test-suite format yamlpp-events < file.yaml # Parse and emit events directly without loading yamlpp-parse-emit < file.yaml # Create ANSI colored YAML. Can also be useful for invalid YAML, showing # you the exact location of the error yamlpp-highlight < file.yaml =head1 DESCRIPTION YAML::PP is a modular YAML processor. It aims to support C and C. See L. Some (rare) syntax elements are not yet supported and documented below. YAML is a serialization language. The YAML input is called "YAML Stream". A stream consists of one or more "Documents", separated by a line with a document start marker C<--->. A document optionally ends with the document end marker C<...>. This allows one to process continuous streams additionally to a fixed input file or string. The YAML::PP frontend will currently load all documents, and return only the first if called with scalar context. The YAML backend is implemented in a modular way that allows one to add custom handling of YAML tags, perl objects and data types. The inner API is not yet stable. Suggestions welcome. You can check out all current parse and load results from the yaml-test-suite here: L =head1 METHODS =head2 new my $ypp = YAML::PP->new; # 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 This option is for loading and dumping. Note that when dumping, only the chosen boolean style will be recognized. So if you choose C, C objects will not be recognized as booleans and will be dumped as ordinary objects (if you enable the Perl schema). =item schema Default: C<['Core']> This option is for loading and dumping. Array reference. Here you can define what schema to use. Supported standard Schemas are: C, C, C, C. To get an overview how the different Schemas behave, see L Additionally you can add further schemas, for example C. =item cyclic_refs Default: 'allow' but will be switched to fatal in the future for safety! This option is for loading only. Defines what to do when a cyclic reference is detected when loading. # fatal - die # warn - Just warn about them and replace with undef # ignore - replace with undef # allow - Default =item duplicate_keys Default: 0 Since version 0.027 This option is for loading. The YAML Spec says duplicate mapping keys should be forbidden. When set to true, duplicate keys in mappings are allowed (and will overwrite the previous key). When set to false, duplicate keys will result in an error when loading. This is especially useful when you have a longer mapping and don't see the duplicate key in your editor: --- a: 1 b: 2 # ............. a: 23 # error =item indent Default: 2 This option is for dumping. Use that many spaces for indenting =item width Since version 0.025 Default: 80 This option is for dumping. Maximum columns when dumping. This is only respected when dumping flow collections right now. in the future it will be used also for wrapping long strings. =item header Default: 1 This option is for dumping. Print document header C<---> =item footer Default: 0 This option is for dumping. Print document footer C<...> =item yaml_version Since version 0.020 This option is for loading and dumping. Default: C<1.2> Note that in this case, a directive C<%YAML 1.1> will basically be ignored and everything loaded with the C<1.2 Core> Schema. If you want to support both YAML 1.1 and 1.2, you have to specify that, and the schema (C or C) will be chosen automatically. my $yp = YAML::PP->new( yaml_version => ['1.2', '1.1'], ); This is the same as my $yp = YAML::PP->new( schema => ['+'], yaml_version => ['1.2', '1.1'], ); because the C<+> stands for the default schema per version. When loading, and there is no C<%YAML> directive, C<1.2> will be considered as default, and the C schema will be used. If there is a C<%YAML 1.1> directive, the C schema will be used. Of course, you can also make C<1.1> the default: my $yp = YAML::PP->new( yaml_version => ['1.1', '1.2'], ); You can also specify C<1.1> only: my $yp = YAML::PP->new( yaml_version => ['1.1'], ); In this case also documents with C<%YAML 1.2> will be loaded with the C schema. =item version_directive Since version 0.020 This option is for dumping. Default: 0 Print Version Directive C<%YAML 1.2> (or C<%YAML 1.1>) on top of each YAML document. It will use the first version specified in the C option. =item preserve Since version 0.021 Default: false This option is for loading and dumping. Preserving scalar styles is still experimental. use YAML::PP::Common qw/ PRESERVE_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 block/flow style (since 0.024) my $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE ); # Preserve alias names (since 0.027) my $yp = YAML::PP->new( preserve => PRESERVE_ALIAS ); # Combine, e.g. preserve order and scalar style my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE ); Do NOT rely on the internal implementation of it. If you load the following input: --- z: 1 a: 2 --- - plain - 'single' - "double" - | literal --- block mapping: &alias flow sequence: [a, b] same mapping: *alias flow mapping: {a: b} with this code: my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS ); my ($hash, $styles, $flow) = $yp->load_file($file); $yp->dump_file($hash, $styles, $flow); Then dumping it will return the same output. Only folded block scalars '>' cannot preserve the style yet. Note that YAML allows repeated definition of anchors. They cannot be preserved with YAML::PP right now. Example: --- - &seq [a] - *seq - &seq [b] - *seq Because the data could be shuffled before dumping again, the anchor definition could be broken. In this case repeated anchor names will be discarded when loading and dumped with numeric anchors like usual. Implementation: When loading, hashes will be tied to an internal class (C) that keeps the key order. Scalars will be returned as objects of an internal class (C) with overloading. If you assign to such a scalar, the object will be replaced by a simple scalar. # assignment, style gets lost $styles->[1] .= ' append'; You can also pass C<1> as a value. In this case all preserving options will be enabled, also if there are new options added in the future. There are also methods to create preserved nodes from scratch. See the C L<"METHODS"> below. =back =head2 load_string my $doc = $ypp->load_string("foo: bar"); my @docs = $ypp->load_string("foo: bar\n---\n- a"); Input should be Unicode characters. So if you read from a file, you should decode it, for example with C. Note that in scalar context, C and C return the first document (like L), while L and L return the last. =head2 load_file my $doc = $ypp->load_file("file.yaml"); my @docs = $ypp->load_file("file.yaml"); Strings will be loaded as unicode characters. =head2 dump_string my $yaml = $ypp->dump_string($doc); my $yaml = $ypp->dump_string($doc1, $doc2); my $yaml = $ypp->dump_string(@docs); Input strings should be Unicode characters. Output will return Unicode characters. So if you want to write that to a file (or pass to YAML::XS, for example), you typically encode it via C. =head2 dump_file $ypp->dump_file("file.yaml", $doc); $ypp->dump_file("file.yaml", $doc1, $doc2); $ypp->dump_file("file.yaml", @docs); Input data should be Unicode characters. =head2 dump This will dump to a predefined writer. By default it will just use the L and output a string. my $writer = MyWriter->new(\my $output); my $yp = YAML::PP->new( writer => $writer, ); $yp->dump($data); =head2 preserved_scalar Since version 0.024 Experimental. Please report bugs or let me know this is useful and works. You can define a certain scalar style when dumping data. Figuring out the best style is a hard task and practically impossible to get it right for all cases. It's also a matter of taste. use YAML::PP::Common qw/ PRESERVE_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE /; my $yp = YAML::PP->new( preserve => PRESERVE_SCALAR_STYLE, ); # a single linebreak would normally be dumped with double quotes: "\n" my $scalar = $yp->preserved_scalar("\n", style => YAML_LITERAL_SCALAR_STYLE ); my $data = { literal => $scalar }; my $dump = $yp->dump_string($data); # output --- literal: |+ ... =head2 preserved_mapping, preserved_sequence Since version 0.024 Experimental. Please report bugs or let me know this is useful and works. With this you can define which nodes are dumped with the more compact flow style instead of block style. If you add C to the C option, it will also keep the order of the keys in a hash. use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_FLOW_STYLE YAML_FLOW_MAPPING_STYLE YAML_FLOW_SEQUENCE_STYLE /; my $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE | PRESERVE_ORDER ); my $hash = $yp->preserved_mapping({}, style => YAML_FLOW_MAPPING_STYLE); # Add values after initialization to preserve order %$hash = (z => 1, a => 2, y => 3, b => 4); my $array = $yp->preserved_sequence([23, 24], style => YAML_FLOW_SEQUENCE_STYLE); my $data = $yp->preserved_mapping({}); %$data = ( map => $hash, seq => $array ); my $dump = $yp->dump_string($data); # output --- map: {z: 1, a: 2, y: 3, b: 4} seq: [23, 24] =head2 loader Returns or sets the loader object, by default L =head2 dumper Returns or sets the dumper object, by default L =head2 schema Returns or sets the schema object =head2 default_schema Creates and returns the default schema =head1 FUNCTIONS The functions C, C, C and C are provided as a drop-in replacement for other existing YAML processors. No function is exported by default. Note that in scalar context, C and C return the first document (like L), while L and L return the last. =over =item Load use YAML::PP qw/ Load /; my $doc = Load($yaml); my @docs = Load($yaml); Works like C. =item LoadFile use YAML::PP qw/ LoadFile /; my $doc = LoadFile($file); my @docs = LoadFile($file); my @docs = LoadFile($filehandle); Works like C. =item Dump use YAML::PP qw/ Dump /; my $yaml = Dump($doc); my $yaml = Dump(@docs); Works like C. =item DumpFile use YAML::PP qw/ DumpFile /; DumpFile($file, $doc); DumpFile($file, @docs); DumpFile($filehandle, @docs); Works like C. =back =head1 PLUGINS You can alter the behaviour of YAML::PP by using the following schema classes: =over =item L One of the three YAML 1.2 official schemas =item L One of the three YAML 1.2 official schemas. =item L One of the three YAML 1.2 official schemas. Default =item L Schema implementing the most common YAML 1.1 types =item L Serializing Perl objects and types =item L Serializing binary data =item L Deprecated. See option C =item L YAML 1.1 merge keys for mappings =item L Include other YAML files via C tags =back To make the parsing process faster, you can plugin the libyaml parser with L. =head1 IMPLEMENTATION The process of loading and dumping is split into the following steps: Load: YAML Stream Tokens Event List Data Structure ---------> ---------> ---------> lex parse construct Dump: Data Structure Event List YAML Stream ---------> ---------> represent emit You can dump basic perl types like hashes, arrays, scalars (strings, numbers). For dumping blessed objects and things like coderefs have a look at L/L. =over =item L The Lexer is reading the YAML stream into tokens. This makes it possible to generate syntax highlighted YAML output. Note that the API to retrieve the tokens will change. =item L The Parser retrieves the tokens from the Lexer. The main YAML content is then parsed with the Grammar. =item L =item L The Constructor creates a data structure from the Parser events. =item L The Loader combines the constructor and parser. =item L The Dumper will delegate to the Representer =item L The Representer will create Emitter events from the given data structure. =item L The Emitter creates a YAML stream. =back =head2 YAML::PP::Parser Still TODO: =over 4 =item Implicit collection keys --- [ a, b, c ]: value =item Implicit mapping in flow style sequences This is supported since 0.029 (except some not relevant cases): --- [ a, b, c: d ] # equals [ a, b, { c: d } ] =item Plain mapping keys ending with colons --- key ends with two colons::: value =item Supported Characters If you have valid YAML that's not parsed, or the other way round, please create an issue. =item Line and Column Numbers You will see line and column numbers in the error message. The column numbers might still be wrong in some cases. =item Error Messages The error messages need to be improved. =item Unicode Surrogate Pairs Currently loaded as single characters without validating =item Possibly more =back =head2 YAML::PP::Constructor The Constructor now supports all three YAML 1.2 Schemas, Failsafe, JSON and Core. Additionally you can choose the schema for YAML 1.1 as C. Too see what strings are resolved as booleans, numbers, null etc. look at L. You can choose the Schema like this: my $ypp = YAML::PP->new(schema => ['JSON']); # default is 'Core' The Tags C and C are still ignored for now. It supports: =over 4 =item Handling of Anchors/Aliases Like in modules like L, the Constructor will use references for mappings and sequences, but obviously not for scalars. L uses real aliases, which allows also aliasing scalars. I might add an option for that since aliasing is now available in pure perl. =item Boolean Handling You can choose between C<'perl'> (1/'', currently default), C<'JSON::PP'> and C<'boolean'>.pm for handling boolean types. That allows you to dump the data structure with one of the JSON modules without losing information about booleans. =item Numbers Numbers are created as real numbers instead of strings, so that they are dumped correctly by modules like L or L, for example. =item Complex Keys Mapping Keys in YAML can be more than just scalars. Of course, you can't load that into a native perl structure. The Constructor will stringify those keys with L instead of just returning something like C. Example: use YAML::PP; use JSON::PP; my $ypp = YAML::PP->new; my $coder = JSON::PP->new->ascii->pretty->allow_nonref->canonical; my $yaml = <<'EOM'; complex: ? ? a: 1 c: 2 : 23 : 42 EOM my $data = $yppl->load_string($yaml); say $coder->encode($data); __END__ { "complex" : { "{'{a => 1,c => 2}' => 23}" : 42 } } =back TODO: =over 4 =item Parse Tree I would like to generate a complete parse tree, that allows you to manipulate the data structure and also dump it, including all whitespaces and comments. The spec says that this is throwaway content, but I read that many people wish to be able to keep the comments. =back =head2 YAML::PP::Dumper, YAML::PP::Emitter The Dumper should be able to dump strings correctly, adding quotes whenever a plain scalar would look like a special string, like C, or when it contains or starts with characters that are not allowed. Most strings will be dumped as plain scalars without quotes. If they contain special characters or have a special meaning, they will be dumped with single quotes. If they contain control characters, including <"\n">, they will be dumped with double quotes. It will recognize JSON::PP::Boolean and boolean.pm objects and dump them correctly. Numbers which also have a C flag will be recognized as numbers and not as strings: my $int = 23; say "int: $int"; # $int will now also have a PV flag That means that if you accidentally use a string in numeric context, it will also be recognized as a number: my $string = "23"; my $something = $string + 0; print $yp->dump_string($string); # will be emitted as an integer without quotes! The layout is like libyaml output: key: - a - b - c --- - key1: 1 key2: 2 key3: 3 --- - - a1 - a2 - - b1 - b2 =head1 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 2016, integrating old patches from rt.cpan.org and creating some pull requests myself. I realized that it would be difficult to patch YAML.pm to parse YAML 1.1 or even 1.2, and it would also break existing usages relying on the current behaviour. In 2016 Ingy döt Net initiated two really cool projects: =over 4 =item L<"YAML TEST SUITE"> =item L<"YAML EDITOR"> =back These projects are a big help for any developer. So I got the idea to write my own parser and started on New Year's Day 2017. Without the test suite and the editor I would have never started this. I also started another YAML Test project which allows one to get a quick overview of which frameworks support which YAML features: =over 4 =item L<"YAML TEST MATRIX"> =back =head2 YAML TEST SUITE L It contains almost 400 test cases and expected parsing events and more. There will be more tests coming. This test suite allows you to write parsers without turning the examples from the Specification into tests yourself. Also the examples aren't completely covering all cases - the test suite aims to do that. The suite contains .tml files, and in a separate 'data' release 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 =head1 CONTRIBUTORS =over =item Ingy döt Net Ingy is one of the creators of YAML. In 2016 he started the YAML Test Suite and the YAML Editor. He also made useful suggestions on the class hierarchy of YAML::PP. =item Felix "flyx" Krause Felix answered countless questions about the YAML Specification. =back =head1 SEE ALSO =over =item L =item L =item L =item L =item L =item L =item L =back =head1 SPONSORS The Perl Foundation L sponsored this project (and the YAML Test Suite) with a grant of 2500 USD in 2017-2018. =head1 COPYRIGHT AND LICENSE Copyright 2017-2020 by Tina Müller This library is free software and may be distributed under the same terms as perl itself. =cut 49.include.t100644001750001750 445014161720075 14242 0ustar00tinatina000000000000YAML-PP-0.031/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 271514161720075 14275 0ustar00tinatina000000000000YAML-PP-0.031/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; CONTRIBUTING.md100644001750001750 263614161720075 14171 0ustar00tinatina000000000000YAML-PP-0.031# 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. bin000755001750001750 014161720075 12341 5ustar00tinatina000000000000YAML-PP-0.031yamlpp-load100755001750001750 600414161720075 14646 0ustar00tinatina000000000000YAML-PP-0.031/bin#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ORDER /; use Encode; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'boolean=s' => \my $boolean, 'merge' => \my $merge, 'perl' => \my $perl, 'module|M=s' => \my $module, 'yaml-version=s' => \my $yaml_version, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; $boolean ||= 'JSON::PP'; $yaml_version ||= 1.2; my @yaml_versions = split m/,/, $yaml_version; my @schema = ('+'); if ($merge) { push @schema, 'Merge'; } if ($perl) { push @schema, 'Perl'; } my ($file) = @ARGV; my $yaml; my $decode = 1; if ($module eq 'YAML::XS') { $decode = 0; } if ($file) { open my $fh, '<', $file or die "Can not open '$file'"; $yaml = do { local $/; <$fh> }; close $fh; } else { $yaml = do { local $/; }; } $yaml = decode_utf8($yaml) if $decode; my %codes = ( 'YAML::PP' => \&yamlpp, 'YAML::PP::LibYAML' => \&yamlpplibyaml, 'YAML::XS' => \&yamlxs, 'YAML::Tiny' => \&yamltiny, 'YAML::Syck' => \&yamlsyck, 'YAML' => \&yaml, ); my $code = $codes{ $module } or die "Module '$module' not supported"; my @docs = $code->($yaml); sub _yamlpp { my ($class, $yaml) = @_; my $ypp = $class->new( schema => \@schema, boolean => $boolean, preserve => PRESERVE_ORDER, yaml_version => \@yaml_versions, ); my @docs = $ypp->load_string($yaml); return @docs; } sub yamlpp { _yamlpp('YAML::PP' => $_[0]); } sub yamlpplibyaml { eval { require YAML::PP::LibYAML }; _yamlpp('YAML::PP::LibYAML' => $_[0]); } sub yamlxs { eval { require YAML::XS }; my ($yaml) = @_; no warnings 'once'; local $YAML::XS::LoadBlessed = $perl; return YAML::XS::Load($yaml); } sub yamlsyck { eval { require YAML::Syck }; my ($yaml) = @_; no warnings 'once'; local $YAML::Syck::LoadBlessed = $perl; local $YAML::Syck::ImplicitTyping = 1; local $YAML::Syck::ImplicitUnicode = 1; return YAML::Syck::Load($yaml); } sub yaml { eval { require YAML }; my ($yaml) = @_; no warnings 'once'; local $YAML::LoadBlessed = $perl; return YAML::Load($yaml); } sub yamltiny { eval { require YAML::Tiny }; my ($yaml) = @_; return YAML::Tiny::Load($yaml); } local $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys = 1; print Data::Dumper->Dump([$docs[ $_ ]], ["doc$_"]) for 0 ..$#docs; sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --boolean= 'perl', 'JSON::PP', 'boolean' --merge Enable loading merge keys '<<' --perl Enable loading perl types and objects (use only on trusted input!) --module -M YAML::PP (default), YAML, YAML::PP::LibYAML, YAML::Syck, YAML::Tiny, YAML::XS --yaml-version= '1.2' (default), '1.1', '1.2,1.1', '1.1,1.2' EOM exit $rc; } 52.preserve.t100644001750001750 2260114161720075 14462 0ustar00tinatina000000000000YAML-PP-0.031/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 PRESERVE_FLOW_STYLE PRESERVE_ALIAS YAML_LITERAL_SCALAR_STYLE YAML_FLOW_MAPPING_STYLE YAML_FLOW_SEQUENCE_STYLE /; subtest 'preserve-scalar-style' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_SCALAR_STYLE ); my $yaml = <<'EOM'; --- p: plain 's': 'single' "d": "double" f: >- folded ? |- l : |- literal nl: |+ ... --- - 0 - null - 23 - "42" - !!int '99' EOM my $exp_styles = <<'EOM'; --- p: plain 's': 'single' "d": "double" f: folded ? |- l : |- literal nl: |+ ... EOM my $exp_data = <<'EOM'; --- - 0 - null - 23 - "42" - 99 EOM my @docs = $yp->load_string($yaml); my $styles = $docs[0]; my $data = $docs[1]; my $dump_styles = $yp->dump_string($styles); is($dump_styles, $exp_styles, 'preserve=1 dump styless ok'); my $newline = delete $styles->{nl}; my $string = join ' ', values %$styles; is($string, 'plain single double folded literal', 'Strings'); my $dump_data = $yp->dump_string($data); is($dump_data, $exp_data, 'preserve=1 dump data ok'); $styles->{s} .= ' APPEND'; is($styles->{s}, 'single APPEND', 'append works'); is($yp->dump_string($styles->{s}), "--- single APPEND\n", 'Style gets lost on append'); $newline->{value} = "\n\n"; is($yp->dump_string($newline),qq{--- |+\n\n\n...\n}, 'Style is preserved for direct assignment'); $newline->{value} = "\0"; is($yp->dump_string($newline),qq{--- "\\0"\n}, 'Style gets changed if necessary'); }; subtest 'preserve-order' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_ORDER ); my $yaml = <<'EOM'; --- z: 1 a: 2 y: 3 b: 4 x: 5 c: 6 EOM my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $yaml, 'preserve=1 Key order preserved'); my @keys = keys %$data; is("@keys", "z a y b x c", 'keys()'); is($data->{a}, 2, 'hash a'); my $first = each %$data; is($first, 'z', 'First key'); my $next = each %$data; is($next, 'a', 'Next key'); is(delete $data->{z}, 1, 'delete(z)'); @keys = keys %$data; is("@keys", "a y b x c", 'keys()'); $data->{z} = 99; @keys = keys %$data; is("@keys", "a y b x c z", 'keys()'); my $scalar = scalar %$data; if ($] >= 5.026) { is(scalar %$data, 6, 'scalar'); } my @values = values %$data; is("@values", "2 3 4 5 6 99", 'values()'); is(exists $data->{a}, 1, 'exists(a)'); is(exists $data->{A}, '', 'exists(A)'); %$data = (); is(scalar keys %$data, 0, 'clear'); is(scalar %$data, 0, 'clear'); }; subtest 'object-order' => sub { my $yp = YAML::PP->new( schema => [qw/ + Perl /], preserve => PRESERVE_ORDER, ); my $yaml = <<'EOM'; --- - !perl/hash:Foo z: 1 a: 2 y: 3 b: 4 x: 5 c: 6 EOM my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $yaml, 'load-dump object with preserved hash key order'); }; subtest 'preserve-flow' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE, ); my $yaml = <<'EOM'; --- map: {z: 1, a: 2, y: 3, b: 4} seq: [c, b, {y: z}] EOM my $exp_sorted = <<'EOM'; --- map: {a: 2, b: 4, y: 3, z: 1} seq: [c, b, {y: z}] EOM my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $exp_sorted, 'load-dump with preserve flow'); is(exists($data->{seq}->[0]), 1, 'load sequence'); is(exists($data->{seq}->[3]), !1, 'load sequence'); $yp = YAML::PP->new( preserve => PRESERVE_FLOW_STYLE | PRESERVE_ORDER ); $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); is($dump, $yaml, 'load-dump with preserve flow && order'); $yp = YAML::PP->new( schema => [qw/ + Perl /], preserve => PRESERVE_FLOW_STYLE | PRESERVE_ORDER, ); $yaml = <<'EOM'; --- !perl/hash:Foo map: {z: 1, a: 2, y: 3, b: 4} seq: [c, b, {y: z}] EOM $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); is($dump, $yaml, 'load-dump object with preserved flow && order'); }; subtest 'create-preserve' => sub { my $yp = YAML::PP->new( preserve => 1, ); my $scalar = $yp->preserved_scalar("\n", style => YAML_LITERAL_SCALAR_STYLE ); my $data = { literal => $scalar }; my $dump = $yp->dump_string($data); my $yaml = <<'EOM'; --- literal: |+ ... EOM is($dump, $yaml, 'dump with preserved scalar'); my $hash = $yp->preserved_mapping({}, style => YAML_FLOW_MAPPING_STYLE); %$hash = (z => 1, a => 2, y => 3, b => 4); my $array = $yp->preserved_sequence([23, 24], style => YAML_FLOW_SEQUENCE_STYLE); $data = $yp->preserved_mapping({}); %$data = ( map => $hash, seq => $array ); $dump = $yp->dump_string($data); $yaml = <<'EOM'; --- map: {z: 1, a: 2, y: 3, b: 4} seq: [23, 24] EOM is($dump, $yaml, 'dump with preserved flow && order'); my $alias1 = $yp->preserved_mapping({ a => 1 }, alias => 'MAP', style => YAML_FLOW_MAPPING_STYLE); my $alias2 = $yp->preserved_sequence([qw/ x y z /], alias => 'SEQ', style => YAML_FLOW_SEQUENCE_STYLE); my $alias3 = $yp->preserved_scalar('string', alias => 'SCALAR'); $data = $yp->preserved_sequence([$alias1, $alias2, $alias3, $alias3, $alias2, $alias1]); $dump = $yp->dump_string($data); my $expected = <<'EOM'; --- - &MAP {a: 1} - &SEQ [x, y, z] - &SCALAR string - *SCALAR - *SEQ - *MAP EOM is $dump, $expected, 'dump with preserved map/seq/scalar and aliases'; }; subtest 'tie-array' => sub { my $x = YAML::PP->preserved_sequence([23, 24], style => YAML_FLOW_SEQUENCE_STYLE); @$x = (25, 26); is("@$x", '25 26', 'STORE'); unshift @$x, 24; is("@$x", '24 25 26', 'UNSHIFT'); shift @$x; is("@$x", '25 26', 'SHIFT'); splice @$x, 1, 1, 99, 100; is("@$x", '25 99 100', 'SPLICE'); delete $x->[1]; { no warnings 'uninitialized'; is("@$x", '25 100', 'DELETE'); } $x->[1] = 99; $#$x = 1; is("@$x", '25 99', 'STORESIZE'); }; subtest 'tie-scalar' => sub { my $scalar = YAML::PP->preserved_scalar("abc", style => YAML_LITERAL_SCALAR_STYLE ); like $scalar, qr{abc}, 'Regex'; ok($scalar eq 'abc', 'eq'); ok('abc' eq $scalar, 'eq'); ok($scalar gt 'abb', 'gt'); $scalar = YAML::PP->preserved_scalar(23, style => YAML_LITERAL_SCALAR_STYLE ); ok($scalar > 22, '>'); ok($scalar <= 23, '<='); }; subtest 'aliases' => sub { my $yaml = <<'EOM'; --- mapping: &mapping a: 1 b: 2 alias: *mapping seq: &seq - a - b same: *seq str: &scalar xyz copy: *scalar EOM my $sorted = <<'EOM'; --- alias: &mapping a: 1 b: 2 copy: &scalar xyz mapping: *mapping same: &seq - a - b seq: *seq str: *scalar EOM my $yp = YAML::PP->new( preserve => PRESERVE_ALIAS ); my $data = $yp->load_string($yaml); my $dump = $yp->dump_string($data); is($dump, $sorted, "Preserving alias names, but not order"); $yp = YAML::PP->new( preserve => PRESERVE_ORDER | PRESERVE_ALIAS ); $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); is($dump, $yaml, "Preserving alias names and order"); $yp = YAML::PP->new( preserve => PRESERVE_ALIAS | PRESERVE_FLOW_STYLE ); $yaml = <<'EOM'; --- a: &seq [a] b: *seq c: &seq [c] d: *seq e: &map {e: 1} f: *map g: &map {g: 1} h: *map i: &scalar X j: *scalar k: &scalar Y l: *scalar EOM $data = $yp->load_string($yaml); $dump = $yp->dump_string($data); my $swap = $data->{a}; $data->{a} = $data->{d}; $data->{d} = $swap; $swap = $data->{e}; $data->{e} = $data->{h}; $data->{h} = $swap; $swap = $data->{i}; $data->{i} = $data->{l}; $data->{l} = $swap; $dump = $yp->dump_string($data); my $expected = <<'EOM'; --- a: &1 [c] b: &seq [a] c: *1 d: *seq e: &2 {g: 1} f: &map {e: 1} g: *2 h: *map i: &3 Y j: &scalar X k: *3 l: *scalar EOM is $dump, $expected, 'dump - Repeated anchors are removed'; my $reload = $yp->load_string($dump); is_deeply($reload, $data, 'Reloading after shuffling wiht repeated anchors'); }; subtest 'create-tied-automatically' => sub { my $yp = YAML::PP->new( preserve => PRESERVE_ORDER ); my $outer = $yp->preserved_mapping({}); %$outer = (z => 1, a => 2, y => 3, b => 4); my $array = $outer->{new} = []; my $inner = $outer->{new}->[0] = {}; $inner->{Z} = 1; $inner->{A} = 2; $inner->{Y} = 3; $inner->{B} = 4; push @$array, {}; my $inner2 = $outer->{new}->[1]; $inner2->{Z} = 11; $inner2->{A} = 22; $inner2->{Y} = 33; $inner2->{B} = 44; splice @$array, 0, 0, {}; my $inner3 = $outer->{new}->[0]; $inner3->{Z} = 111; $inner3->{A} = 222; $inner3->{Y} = 333; $inner3->{B} = 444; unshift @$array, {}; my $inner4 = $outer->{new}->[0]; $inner4->{Z} = 1111; $inner4->{A} = 2222; $inner4->{Y} = 3333; $inner4->{B} = 4444; $outer->{new}->[4] = { key => 4 }; $outer->{new}->[5] = [55]; $outer->{newer} = { key => 6 }; $outer->{newest} = [66]; my $dump = $yp->dump_string($outer); my $expected = <<'EOM'; --- z: 1 a: 2 y: 3 b: 4 new: - Z: 1111 A: 2222 Y: 3333 B: 4444 - Z: 111 A: 222 Y: 333 B: 444 - Z: 1 A: 2 Y: 3 B: 4 - Z: 11 A: 22 Y: 33 B: 44 - key: 4 - - 55 newer: key: 6 newest: - 66 EOM is $dump, $expected, 'dump - Newly created hashes keep order automatically'; }; done_testing; 57.dup-keys.t100644001750001750 127714161720075 14363 0ustar00tinatina000000000000YAML-PP-0.031/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use Data::Dumper; use YAML::PP; use Test::Deep; my $allow = YAML::PP->new( duplicate_keys => 1, ); my $forbid = YAML::PP->new( duplicate_keys => 0, ); my $default = YAML::PP->new; my $yaml = <<'EOM'; a: 1 b: 2 a: 3 EOM my $data = $allow->load_string($yaml); my $expected = { a => 3, b => 2, }; is_deeply($data, $expected, "Allowed duplicate keys"); $data = eval { $forbid->load_string($yaml) }; my $err = $@; like $err, qr{Duplicate key 'a'}, "Forbidden duplicate keys"; $data = eval { $default->load_string($yaml) }; $err = $@; like $err, qr{Duplicate key 'a'}, "Forbidden duplicate keys by default"; done_testing; etc000755001750001750 014161720075 12344 5ustar00tinatina000000000000YAML-PP-0.031grammar.yaml100644001750001750 4047514161720075 15050 0ustar00tinatina000000000000YAML-PP-0.031/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_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_EMPTY: FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 FLOWSEQ_NEXT: WS: { new: FLOWSEQ_NEXT } EOL: { new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_flow_comma return: 1 FLOWSEQ_END: match: cb_end_flowseq return: 1 FLOWSEQ_MAYBE_KEY: WS: { new: FLOWSEQ_MAYBE_KEY } COLON: WS: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: new: FLOWSEQ_NEXT FLOWMAP_CONTENT: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOWMAP_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOWMAP_EMPTYKEY: FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 NEWFLOWSEQ: EOL: { new: NEWFLOWSEQ } WS: { new: NEWFLOWSEQ } ANCHOR: match: cb_anchor WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } DEFAULT: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } DEFAULT: { new: NEWFLOWSEQ_TAG } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: FLOWSEQ } NODETYPE_FLOWSEQ: EOL: { new: NODETYPE_FLOWSEQ } WS: { new: NODETYPE_FLOWSEQ } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: NEWFLOWSEQ } NODETYPE_FLOWMAPVALUE: WS: { new: NODETYPE_FLOWMAPVALUE } EOL: { new: NODETYPE_FLOWMAPVALUE } COLON: match: cb_flow_colon WS: { new: RULE_FULLFLOWSCALAR } EOL: { new: RULE_FULLFLOWSCALAR } DEFAULT: { new: RULE_FULLFLOWSCALAR } FLOW_COMMA: match: cb_empty_flowmap_value return: 1 FLOWMAP_END: match: cb_end_flowmap_empty return: 1 NEWFLOWSEQ_ANCHOR: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_TAG: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_ANCHOR_SPC: WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWSEQ_TAG_SPC: WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWMAP_ANCHOR: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_TAG: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_ANCHOR_SPC: WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP_TAG_SPC: WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP: EOL: { new: NEWFLOWMAP } WS: { new: NEWFLOWMAP } QUESTION: { match: cb_flow_question, new: FLOWMAP_EXPLICIT_KEY } DEFAULT: { new: FLOWMAP } FLOWMAP_EXPLICIT_KEY: WS: { new: FLOWMAP_EXPLICIT_KEY } EOL: { new: FLOWMAP_EXPLICIT_KEY } FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 DEFAULT: { new: FLOWMAP } FLOWMAP: EOL: { new: FLOWMAP } WS: { new: FLOWMAP } ANCHOR: match: cb_anchor WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } DEFAULT: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } DEFAULT: { new: NEWFLOWMAP_TAG } FLOWMAP_END: match: cb_end_flowmap return: 1 COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR DEFAULT: { new: FLOWMAP_CONTENT } NODETYPE_FLOWMAP: EOL: { new: NODETYPE_FLOWMAP } WS: { new: NODETYPE_FLOWMAP } FLOWMAP_END: match: cb_end_flowmap return: 1 FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWMAP } DEFAULT: { new: NEWFLOWMAP } END_FLOW: EOL: match: cb_end_outer_flow return: 1 RULE_MAPKEY: QUESTION: match: cb_question EOL: { new: FULLNODE } WS: { new: FULLNODE } ALIAS: match: cb_send_alias 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 03.spelling.t100644001750001750 57414161720075 14575 0ustar00tinatina000000000000YAML-PP-0.031/xt#!/usr/bin/perl use strict; use warnings; use Test::More; use Test::Spelling; use Pod::Wordlist; add_stopwords(); all_pod_files_spelling_ok( qw( bin lib ) ); __DATA__ ansi failsafe FUNCTIONS LoadFile RAML Schema Schemas loadcode refref scalarref yaml DumpFile Nim libyaml vimscript unicode tml schemas Representer TestML USD header TODO Ingy döt Net flyx Krause Müller 12.load-json.t100644001750001750 205614161720075 14473 0ustar00tinatina000000000000YAML-PP-0.031/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 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); } 14.load-bool.t100644001750001750 215014161720075 14452 0ustar00tinatina000000000000YAML-PP-0.031/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; 35.highlight.t100644001750001750 452614161720075 14565 0ustar00tinatina000000000000YAML-PP-0.031/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); delete @$_{qw/ line column /} for @$tokens; my @expected_tokens = ( { name => "PLAIN", value => "foo" }, { name => "COLON", value => ":" }, { name => "WS", value => " " }, { name => "PLAIN", value => "bar" }, { name => "EOL", value => "\n" }, ); is($error, '', "yaml_to_tokens suceeded"); is_deeply($tokens, \@expected_tokens, "yaml_to_tokens returned correct tokens"); $yaml = "foo: \@bar\n"; ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); cmp_ok($error, '=~', qr{Invalid}, "yaml_to_tokens returned an error"); delete @$_{qw/ line column /} for @$tokens; @expected_tokens = ( { name => "PLAIN", value => "foo" }, { name => "COLON", value => ":" }, { name => "WS", value => " " }, { name => "ERROR", value => "\@bar\n" }, ); is_deeply($tokens, \@expected_tokens, "yaml_to_tokens returned correct error tokens"); $yaml = <<'EOM'; foo: | bar quoted: "x" EOM ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); my @transformed = YAML::PP::Highlight->transform($tokens); cmp_ok($transformed[6]->{name}, 'eq', 'TRAILING_SPACE', "trailing spaces detected"); my $color = eval "use Term::ANSIColor 4.02; 1"; # older versions of Term::ANSIColor didn't have grey12 if ($color) { my $highlighted = YAML::PP::Highlight::Dump({ foo => 'bar' }); my $exp_highlighted = "\e[1m---\e[0m\n\e[94mfoo\e[0m\e[1;35m:\e[0m bar\n"; cmp_ok($highlighted, 'eq', $exp_highlighted, "YAML::PP::Highlight::Dump()"); } if ($color) { my $yaml = <<'EOM'; foo: bar EOM my ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); my $ansitabs = YAML::PP::Highlight->ansicolored($tokens, expand_tabs => 0); my $ansi = YAML::PP::Highlight->ansicolored($tokens); local $Data::Dumper::Useqq = 1; my $exp1 = "\e[94mfoo\e[0m\e[1;35m:\e[0m bar\e[44m\t\e[0m\n"; my $exp2 = "\e[94mfoo\e[0m\e[1;35m:\e[0m bar\e[44m \e[0m\n"; is $ansitabs, $exp1, 'ansicolored, no expanded tabs' or do { diag(Data::Dumper->Dump([$ansitabs], ['ansitabs'])); }; is $ansi, $exp2, 'ansicolored, expanded tabs' or do { diag(Data::Dumper->Dump([$ansi], ['ansi'])); }; } done_testing; 22.dump-bool.t100644001750001750 373514161720075 14511 0ustar00tinatina000000000000YAML-PP-0.031/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"; --- false1: false false2: false true1: true true2: true EOM SKIP: { skip "boolean not installed", 1 unless $boolean; my $data = { "true1" => boolean::true(), "false1" => boolean::false(), "true2" => boolean::true(), "false2" => boolean::false(), }; my $yppd = YAML::PP->new(boolean => 'boolean'); my $yaml = $yppd->dump_string($data); cmp_ok($yaml, 'eq', $exp_yaml, "boolean.pm dump"); } SKIP: { skip "JSON::PP not installed", 1 unless $json_pp; my $data = { "true1" => JSON::PP::true(), "false1" => JSON::PP::false(), "true2" => JSON::PP::true(), "false2" => JSON::PP::false(), }; my $yppd = YAML::PP->new(boolean => 'JSON::PP'); my $yaml = $yppd->dump_string($data); cmp_ok($yaml, 'eq', $exp_yaml, "JSON::PP::Boolean dump"); } SKIP: { skip "JSON::PP and boolean not installed", 1 unless ($json_pp and $boolean); my $data = { "true1" => boolean::true(), "false1" => boolean::false(), "true2" => JSON::PP::true(), "false2" => JSON::PP::false(), }; my $yppd = YAML::PP->new(boolean => 'JSON::PP', schema => [qw/ + Perl /]); my $yaml = $yppd->dump_string($data); my $exp_json_pp = <<'EOM'; --- false1: !perl/scalar:boolean =: 0 false2: false true1: !perl/scalar:boolean =: 1 true2: true EOM cmp_ok($yaml, 'eq', $exp_json_pp, "JSON::PP::Boolean (no boolean) dump"); $yppd = YAML::PP->new(boolean => 'boolean', schema => [qw/ + Perl /]); $yaml = $yppd->dump_string($data); my $exp_boolean = <<'EOM'; --- false1: false false2: !perl/scalar:JSON::PP::Boolean =: 0 true1: true true2: !perl/scalar:JSON::PP::Boolean =: 1 EOM cmp_ok($yaml, 'eq', $exp_boolean, "boolean (no JSON::PP::Boolean) dump"); } done_testing; 15.parse-eol.t100644001750001750 156014161720075 14476 0ustar00tinatina000000000000YAML-PP-0.031/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; v024000755001750001750 014161720075 13626 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3714161720075 14217 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v024Empty flow mapping keys values v031000755001750001750 014161720075 13624 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 2314161720075 14210 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v031Directive variants v023000755001750001750 014161720075 13625 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3014161720075 14207 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v023Comment lines with tabs v030000755001750001750 014161720075 13623 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 2314161720075 14207 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v030Directive variants v025000755001750001750 014161720075 13627 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 6014161720075 14214 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v025Explicit empty key/value pairs in flow mappings v020000755001750001750 014161720075 13622 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 2414161720075 14207 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v020Complex mapping key v019000755001750001750 014161720075 13632 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 5114161720075 14217 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v019Implicit Key Block Sequence on same line v028000755001750001750 014161720075 13632 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3614161720075 14222 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v028Leading tabs in double quotes v022000755001750001750 014161720075 13624 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3314161720075 14211 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v022Empty flow sequence values v027000755001750001750 014161720075 13631 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3714161720075 14222 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v027Trailing tabs in double quotes v009000755001750001750 014161720075 13631 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 5214161720075 14217 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v009Empty value at end of unindented sequence v032000755001750001750 014161720075 13625 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3114161720075 14210 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v032Tabs in various contexts v029000755001750001750 014161720075 13633 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 2314161720075 14217 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v029Directive variants v026000755001750001750 014161720075 13630 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 2614161720075 14217 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v026Tabs in double quotes v021000755001750001750 014161720075 13623 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 4214161720075 14210 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v021Block indicators in deeper levels v014000755001750001750 014161720075 13625 5ustar00tinatina000000000000YAML-PP-0.031/t/valid===100644001750001750 3314161720075 14212 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v014Allowed Characters in Tags yamlpp-events100755001750001750 216314161720075 15235 0ustar00tinatina000000000000YAML-PP-0.031/bin#!/usr/bin/perl use strict; use warnings; use Encode; use YAML::PP::Parser; use YAML::PP::Common; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'module|M=s' => \my $module, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; if ($module eq 'YAML::PP') { $module = 'YAML::PP::Parser'; } elsif ($module eq 'YAML::PP::LibYAML') { require YAML::PP::LibYAML::Parser; $module = 'YAML::PP::LibYAML::Parser'; } my ($file) = @ARGV; my $parser = $module->new( receiver => sub { my ($self, undef, $event) = @_; print encode_utf8(YAML::PP::Common::event_to_test_suite($event, { flow => 1 })), "\n"; }, $file ? (reader => YAML::PP::Reader::File->new) : (), ); if ($file) { $parser->parse_file($file); } else { my $yaml; $yaml = do { local $/; }; $yaml = decode_utf8($yaml); $parser->parse_string($yaml); } sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --module -M Module to use for parsing. YAML::PP (default) or YAML::PP::LibYAML EOM exit $rc; } 02.pod-cover.t100644001750001750 57614161720075 14657 0ustar00tinatina000000000000YAML-PP-0.031/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(); 56.force-flow.t100644001750001750 231214161720075 14653 0ustar00tinatina000000000000YAML-PP-0.031/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 FRK4 L9U5 LQZ7 LX3P QF4Y Q9WF 6BFJ CFD4 /; push @skip, qw/ 6VJK MJS9 7T8X JHB9 LE5A v014 v020 /; my $testsuite = YAML::PP::Test->new( test_suite_dir => "$yts", dir => "$Bin/valid", valid => 1, in_yaml => 1, emit_yaml => 1, ); my ($testcases) = $testsuite->read_tests( skip => \@skip, ); $testsuite->run_testcases( code => \&test, ); $testsuite->print_stats( count => [qw/ SAME_EVENTS SAME_YAML DIFF_EVENTS DIFF_YAML ERROR TODO SKIP /], ids => [qw/ DIFF_YAML DIFF_EVENTS /], ); sub test { my ($testsuite, $testcase) = @_; my $id = $testcase->{id}; my $result = $testsuite->emit_yaml($testcase, { flow => 'yes' }); $testsuite->compare_emit_yaml($testcase, $result); } done_testing; exit; 51.directives.t100644001750001750 1365514161720075 15000 0ustar00tinatina000000000000YAML-PP-0.031/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}->{major}, '1', 'YAML 1.2 detected'); is($events[0]->{version_directive}->{minor}, '2', 'YAML 1.2 detected'); ok(! exists $events[1]->{version_directive}, 'No version directive'); is($events[2]->{version_directive}->{major}, '1', 'YAML 1.1 detected'); is($events[2]->{version_directive}->{minor}, '1', 'YAML 1.1 detected'); @events = (); $receiver = sub { my ($p, $name, $event) = @_; if ($event->{name} eq 'scalar_event') { push @events, $event; } }; my $parser_1_2 = YAML::PP::Parser->new( receiver => $receiver, ); $parser_1_1 = YAML::PP::Parser->new( receiver => $receiver, default_yaml_version => '1.1', ); $yaml = <<'EOM'; %TAG !a! !long- --- - !a!foo value --- - !a!bar value EOM eval { $parser_1_2->parse_string($yaml); }; my $err = $@; like($err, qr{undefined tag handle}, 'No global tags in YAML 1.2'); @events = (); $parser_1_1->parse_string($yaml); is($events[0]->{tag}, '!long-foo', 'First tag ok'); is($events[1]->{tag}, '!long-bar', 'Second tag ok'); }; subtest 'version-schema' => sub { my $yaml = <<'EOM'; what: [ yes, true ] ... %YAML 1.1 --- bool: yes ... %YAML 1.2 --- bool: true string: yes EOM my $out_12_11 = <<'EOM'; %YAML 1.2 --- what: - yes - 1 ... %YAML 1.2 --- bool: 1 ... %YAML 1.2 --- bool: 1 string: yes EOM my $out_11_12 = <<'EOM'; %YAML 1.1 --- what: - 1 - 1 ... %YAML 1.1 --- bool: 1 ... %YAML 1.1 --- bool: 1 string: 'yes' EOM my $out_12 = <<'EOM'; %YAML 1.2 --- what: - yes - 1 ... %YAML 1.2 --- bool: yes ... %YAML 1.2 --- bool: 1 string: yes EOM my $out_11 = <<'EOM'; %YAML 1.1 --- what: - 1 - 1 ... %YAML 1.1 --- bool: 1 ... %YAML 1.1 --- bool: 1 string: 1 EOM my %args= ( schema => [qw/ + /], boolean => '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 014161720075 12602 5ustar00tinatina000000000000YAML-PP-0.031/tMySchema.pm100644001750001750 101714161720075 15005 0ustar00tinatina000000000000YAML-PP-0.031/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; 13.load-anchor.t100644001750001750 134414161720075 14774 0ustar00tinatina000000000000YAML-PP-0.031/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 $yp = YAML::PP->new; my $data = $yp->load_string($yaml); cmp_ok($data->{copies}->[0],'eq', 'A', "Scalar anchor"); cmp_ok($data->{copies}->[0],'eq', $data->{copies}->[1], "Scalar alias equals anchor"); $data->{foo}->[-1] = "changed"; cmp_ok($data->{bar}->[-1],'eq', 'changed', "Alias changes when anchor changes"); $yaml = <<'EOM'; this should: *be_fatal EOM $data = eval { $yp->load_string($yaml) }; my $err = $@; like $err, qr{No anchor defined for alias}, 'Error when loading undefined alias'; done_testing; 32.cyclic-refs.t100644001750001750 306114161720075 15007 0ustar00tinatina000000000000YAML-PP-0.031/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; 37.schema-perl.t100644001750001750 2171314161720075 15035 0ustar00tinatina000000000000YAML-PP-0.031/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 $perl_no_objects = YAML::PP::Schema::Perl->new( classes => [], ); my $perl_no_objects_loadcode = YAML::PP::Schema::Perl->new( classes => [], loadcode => 1, ); 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_no_objects], ); my $yp_loadcode = YAML::PP->new( schema => [qw/ JSON Perl +loadcode /], ); my $yp_loadcode_no_objects = YAML::PP->new( schema => [qw/ JSON /, $perl_no_objects_loadcode], ); 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; 23-dump-anchor.t100644001750001750 147114161720075 15023 0ustar00tinatina000000000000YAML-PP-0.031/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 275714161720075 15022 0ustar00tinatina000000000000YAML-PP-0.031/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 8CWC 9MMW LX3P Q9WF 6BFJ CT4Q /; 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 014161720075 12745 5ustar00tinatina000000000000YAML-PP-0.031/tsimple.yaml100644001750001750 2214161720075 15214 0ustar00tinatina000000000000YAML-PP-0.031/t/data--- a: 1 --- b: 2 i034000755001750001750 014161720075 14141 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 10114161720075 14542 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i034Invalid block mapping key on same line as previous flow sequence i033000755001750001750 014161720075 14140 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 5314161720075 14527 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i033Repeated question mark in flow mapping key i032000755001750001750 014161720075 14137 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 4314161720075 14525 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i032Invalid characters in Verbatim Tag i037000755001750001750 014161720075 14144 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 3114161720075 14527 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i037Tabs in various contexts i038000755001750001750 014161720075 14145 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 3114161720075 14530 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i038Tabs in various contexts i035000755001750001750 014161720075 14142 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 4014161720075 14525 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i035Literal modifers greater than 9 i036000755001750001750 014161720075 14143 5ustar00tinatina000000000000YAML-PP-0.031/t/invalid===100644001750001750 3114161720075 14526 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i036Tabs in various contexts json-numbers.pl100644001750001750 222614161720075 15465 0ustar00tinatina000000000000YAML-PP-0.031/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 216714161720075 15462 0ustar00tinatina000000000000YAML-PP-0.031/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; examples000755001750001750 014161720075 13407 5ustar00tinatina000000000000YAML-PP-0.031schemas.pl100644001750001750 102214161720075 15522 0ustar00tinatina000000000000YAML-PP-0.031/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; PP000755001750001750 014161720075 13420 5ustar00tinatina000000000000YAML-PP-0.031/lib/YAMLPerl.pm100644001750001750 276514161720075 15032 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Perl; our $VERSION = '0.031'; # 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 46.line-endings.t100644001750001750 114614161720075 15167 0ustar00tinatina000000000000YAML-PP-0.031/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; 40.representers.t100644001750001750 547414161720075 15336 0ustar00tinatina000000000000YAML-PP-0.031/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; test-suite000755001750001750 014161720075 13677 5ustar00tinatina000000000000YAML-PP-0.031README.md100644001750001750 1614161720075 15253 0ustar00tinatina000000000000YAML-PP-0.031/test-suite## Test Suite yamlpp-load-dump100755001750001750 1764114161720075 15642 0ustar00tinatina000000000000YAML-PP-0.031/bin#!/usr/bin/perl use strict; use warnings; use YAML::PP; use YAML::PP::Dumper; use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; use Encode; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'indent=i' => \my $indent, 'width=i' => \my $width, 'header!' => \my $header, 'footer!' => \my $footer, 'boolean=s' => \my $boolean, 'merge' => \my $merge, 'perl' => \my $perl, 'preserve=s' => \my $preserve, 'module|M=s' => \my $module, 'dump-module|D=s' => \my $dump_module, 'include' => \my $include, 'include-absolute' => \my $include_absolute, 'yaml-version=s' => \my $yaml_version, 'version-directive' => \my $version_directive, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; $boolean ||= 'JSON::PP'; $footer ||= 0; $indent ||= 2; $yaml_version ||= 1.2; $dump_module ||= $module; my @yaml_versions = split m/,/, $yaml_version; my @schema = ('+'); if ($merge) { push @schema, 'Merge'; } if ($perl) { push @schema, 'Perl'; } my $preserve_order = 1; if (defined $preserve) { $preserve_order = 0; my @split = split m/,/, $preserve; $preserve = 0; for my $split (@split) { $preserve |= PRESERVE_ORDER if $split eq 'order'; $preserve_order = 1 if $split eq 'order'; $preserve |= PRESERVE_SCALAR_STYLE if $split eq 'scalar'; $preserve |= PRESERVE_FLOW_STYLE if $split eq 'flow'; $preserve |= PRESERVE_ALIAS if $split eq 'alias'; } } elsif ($dump_module =~ m/JSON/) { $preserve = PRESERVE_ORDER; } else { $preserve = 1; } $header = 1 unless defined $header; my ($file) = @ARGV; my $yaml; my $decode = 1; if ($module eq 'YAML::XS') { $decode = 0; } if ($file) { open my $fh, '<', $file or die "Can not open '$file'"; $yaml = do { local $/; <$fh> }; close $fh; } else { $yaml = do { local $/; }; } $yaml = decode_utf8($yaml) if $decode; my %load_modules = ( 'YAML::PP' => \&yamlpp, 'YAML::PP::LibYAML' => \&yamlpplibyaml, 'YAML::XS' => \&yamlxs, 'YAML::Tiny' => \&yamltiny, 'YAML::Syck' => \&yamlsyck, 'YAML' => \&yaml, ); my %dump_modules = ( 'YAML::PP' => \&yamlpp_dump, 'YAML::PP::LibYAML' => \&yamlpplibyaml_dump, 'YAML::XS' => \&yamlxs_dump, 'YAML::Tiny' => \&yamltiny_dump, 'YAML::Syck' => \&yamlsyck_dump, 'YAML' => \&yaml_dump, 'Data::Dumper' => \&data_dumper, 'JSON::PP' => \&json_pp_dump, 'JSON::XS' => \&json_xs_dump, 'Cpanel::JSON::XS' => \&cpanel_json_xs_dump, ); my $code = $load_modules{ $module } or die "Module '$module' not supported for loading"; my $dump_code = $dump_modules{ $dump_module } or die "Module '$dump_module' not supported for dumping"; my $docs = $code->($yaml, $file); my $out_yaml = $dump_code->($docs); sub _yamlpp { my ($class, $yaml, $file) = @_; my %args; my $inc; if ($include) { require YAML::PP::Schema::Include; $inc = YAML::PP::Schema::Include->new( $include_absolute ? (allow_absolute => 1) : (), ); push @schema, $inc; } my $ypp = $class->new( schema => \@schema, boolean => $boolean, preserve => $preserve, indent => $indent, width => $width, header => $header ? 1 : 0, footer => $footer ? 1 : 0, yaml_version => \@yaml_versions, version_directive => $version_directive || 0, ); if ($inc) { $inc->yp($ypp); } my @docs = $file ? $ypp->load_file($file) : $ypp->load_string($yaml); return \@docs; } sub yamlpp { _yamlpp('YAML::PP' => @_); } sub yamlpp_dump { _yamlpp_dump('YAML::PP' => @_); } sub yamlpplibyaml { eval { require YAML::PP::LibYAML }; _yamlpp('YAML::PP::LibYAML' => @_); } sub yamlpplibyaml_dump { eval { require YAML::PP::LibYAML }; _yamlpp_dump('YAML::PP::LibYAML' => @_); } sub _yamlpp_dump { my ($class, $docs) = @_; my $ypp = $class->new( schema => \@schema, boolean => $boolean, preserve => $preserve, indent => $indent, width => $width, header => $header ? 1 : 0, footer => $footer ? 1 : 0, yaml_version => \@yaml_versions, version_directive => $version_directive || 0, ); return $ypp->dump_string(@$docs); } sub yamlxs { eval { require YAML::XS }; my ($yaml) = @_; no warnings 'once'; local $YAML::XS::LoadBlessed = $perl; my @docs = YAML::XS::Load($yaml); return \@docs; } sub yamlxs_dump { my ($docs) = @_; eval { require YAML::XS }; no warnings 'once'; local $YAML::XS::Indent = $indent; return YAML::XS::Dump(@$docs); } sub yamlsyck { eval { require YAML::Syck }; my ($yaml) = @_; no warnings 'once'; local $YAML::Syck::LoadBlessed = $perl; local $YAML::Syck::ImplicitTyping = 1; local $YAML::Syck::ImplicitUnicode = 1; my @docs = YAML::Syck::Load($yaml); return \@docs; } sub yamlsyck_dump { eval { require YAML::Syck }; my ($docs) = @_; no warnings 'once'; local $YAML::Syck::Headless = 1 unless $header; local $YAML::Syck::ImplicitTyping = 1; local $YAML::Syck::ImplicitUnicode = 1; return YAML::Syck::Dump(@$docs); } sub yaml { eval { require YAML }; no warnings 'once'; local $YAML::LoadBlessed = $perl; my ($yaml) = @_; my @docs = YAML::Load($yaml); return \@docs; } sub yaml_dump { my ($docs) = @_; eval { require YAML }; no warnings 'once'; local $YAML::UseHeader = $header ? 1 : 0; local $YAML::Indent = $indent; return YAML::Dump(@$docs); } sub yamltiny { eval { require YAML::Tiny }; my ($yaml) = @_; my @docs = YAML::Tiny::Load($yaml); return \@docs; } sub yamltiny_dump { eval { require YAML::Tiny }; my ($docs) = @_; return YAML::Tiny::Dump(@$docs); } sub data_dumper { my ($docs) = @_; local $Data::Dumper::Useqq = 1; local $Data::Dumper::Sortkeys = 1 unless $preserve_order; my $out = ''; $out .= Data::Dumper->Dump([$docs->[ $_ ]], ["doc$_"]) for 0 ..$#$docs; return $out; } sub json_pp_dump { require JSON::PP; _json_dump('JSON::PP', @_) } sub json_xs_dump { require JSON::XS; _json_dump('JSON::XS', @_) } sub cpanel_json_xs_dump { require Cpanel::JSON::XS; _json_dump('Cpanel::JSON::XS', @_) } sub _json_dump { my ($class, $docs) = @_; my $coder = $class->new->ascii->pretty->allow_nonref; $coder = $coder->indent_length($indent) if $coder->can('indent_length'); $coder = $coder->canonical unless $preserve_order; my $out = ''; $out .= $coder->encode($docs->[ $_ ]) for 0 ..$#$docs; return $out; } if ($decode) { print encode_utf8 $out_yaml; } else { print $out_yaml; } sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --boolean= 'perl', 'JSON::PP', 'boolean' --indent= Number of spaces for indentation --width= Maximum column width (only used in flow style for now) --[no-]header Print '---' (default) --[no-]footer Print '...' --merge Enable loading merge keys '<<' --perl Enable loading perl types and objects (use only on trusted input!) --preserve Comma separated: 'order', 'scalar', 'flow', 'alias'. By default all things are preserved --module -M YAML::PP (default), YAML, YAML::PP::LibYAML, YAML::Syck, YAML::Tiny, YAML::XS --dump-module -D All of the above plus Data::Dumper, JSON::PP, JSON::XS, Cpanel::JSON::XS --yaml-version= '1.2' (default), '1.1', '1.2,1.1', '1.1,1.2' --version-directive Print '%YAML ' --include Enable Include Schema --include-absolute Allow absolute paths and ../../../ in includes (use only on trusted input!) EOM exit $rc; } yamlpp-highlight100755001750001750 175714161720075 15710 0ustar00tinatina000000000000YAML-PP-0.031/bin#!/usr/bin/perl use strict; use warnings; use YAML::PP::Highlight; use Encode; use Getopt::Long; GetOptions( 'help|h' => \my $help, 'expand-tabs|et!' => \my $expand_tabs, ) or usage(1); $expand_tabs = 1 unless defined $expand_tabs; usage(0) if $help; my ($file) = @ARGV; my $yaml; unless ($file) { $yaml = do { local $/; }; $yaml = decode_utf8($yaml); } my $error; my $tokens; if (defined $file) { ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens( file => $file ); } else { ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens( string => $yaml ); } my $highlighted = YAML::PP::Highlight->ansicolored($tokens, expand_tabs => $expand_tabs); print encode_utf8 $highlighted; if ($error) { die $error; } sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --expand-tabs --et Expand tabs to 8 spaces (default true) --no-expand-tabs --no-et Don't expand tabs EOM exit $rc; } Lexer.pm100644001750001750 7363514161720075 15233 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Lexer; our $VERSION = '0.031'; # VERSION use constant TRACE => $ENV{YAML_PP_TRACE} ? 1 : 0; use constant DEBUG => ($ENV{YAML_PP_DEBUG} || $ENV{YAML_PP_TRACE}) ? 1 : 0; use YAML::PP::Grammar qw/ $GRAMMAR /; use Carp qw/ croak /; sub new { my ($class, %args) = @_; my $self = bless { reader => $args{reader}, }, $class; $self->init; return $self; } sub init { my ($self) = @_; $self->{next_tokens} = []; $self->{next_line} = undef; $self->{line} = 0; $self->{offset} = 0; $self->{flowcontext} = 0; } sub next_line { return $_[0]->{next_line} } sub set_next_line { $_[0]->{next_line} = $_[1] } sub reader { return $_[0]->{reader} } sub set_reader { $_[0]->{reader} = $_[1] } sub next_tokens { return $_[0]->{next_tokens} } sub line { return $_[0]->{line} } sub set_line { $_[0]->{line} = $_[1] } sub offset { return $_[0]->{offset} } sub set_offset { $_[0]->{offset} = $_[1] } sub inc_line { return $_[0]->{line}++ } sub context { return $_[0]->{context} } sub set_context { $_[0]->{context} = $_[1] } sub flowcontext { return $_[0]->{flowcontext} } sub set_flowcontext { $_[0]->{flowcontext} = $_[1] } sub block { return $_[0]->{block} } sub set_block { $_[0]->{block} = $_[1] } my $RE_WS = '[\t ]'; my $RE_LB = '[\r\n]'; my $RE_DOC_END = qr/\A(\.\.\.)(?=$RE_WS|$)/m; my $RE_DOC_START = qr/\A(---)(?=$RE_WS|$)/m; my $RE_EOL = qr/\A($RE_WS+#.*|$RE_WS+)\z/; #my $RE_COMMENT_EOL = qr/\A(#.*)?(?:$RE_LB|\z)/; #ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” my $RE_NS_WORD_CHAR = '[0-9A-Za-z-]'; my $RE_URI_CHAR = '(?:' . '%[0-9a-fA-F]{2}' .'|'. q{[0-9A-Za-z#;/?:@&=+$,_.!*'\(\)\[\]-]} . ')'; my $RE_NS_TAG_CHAR = '(?:' . '%[0-9a-fA-F]{2}' .'|'. q{[0-9A-Za-z#;/?:@&=+$_.*'\(\)-]} . ')'; # [#x21-#x7E] /* 8 bit */ # | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] /* 16 bit */ # | [#x10000-#x10FFFF] /* 32 bit */ #nb-char ::= c-printable - b-char - c-byte-order-mark #my $RE_NB_CHAR = '[\x21-\x7E]'; my $RE_ANCHOR_CAR = '[\x21-\x2B\x2D-\x5A\x5C\x5E-\x7A\x7C\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_START = '[\x21\x22\x24-\x39\x3B-\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_END = '[\x21-\x39\x3B-\x7E\x85\xA0-\x{D7FF}\x{E000}-\x{FEFE}\x{FF00}-\x{FFFD}\x{10000}-\x{10FFFF}]'; my $RE_PLAIN_FIRST = '[\x24\x28-\x29\x2B\x2E-\x39\x3B-\x3D\x41-\x5A\x5C\x5E-\x5F\x61-\x7A\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_START_FLOW = '[\x21\x22\x24-\x2B\x2D-\x39\x3B-\x5A\x5C\x5E-\x7A\x7C\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; my $RE_PLAIN_END_FLOW = '[\x21-\x2B\x2D-\x39\x3B-\x5A\x5C\x5E-\x7A\x7C\x7E\x85\xA0-\x{D7FF}\x{E000}-\x{FEFE}\x{FF00}-\x{FFFD}\x{10000}-\x{10FFFF}]'; my $RE_PLAIN_FIRST_FLOW = '[\x24\x28-\x29\x2B\x2E-\x39\x3B-\x3D\x41-\x5A\x5C\x5E-\x5F\x61-\x7A\x7C\x7E\xA0-\xFF\x{100}-\x{10FFFF}]'; # c-indicators #! 21 #" 22 ## 23 #% 25 #& 26 #' 27 #* 2A #, 2C FLOW #- 2D XX #: 3A XX #> 3E #? 3F XX #@ 40 #[ 5B FLOW #] 5D FLOW #` 60 #{ 7B FLOW #| 7C #} 7D FLOW my $RE_PLAIN_WORD = "(?::+$RE_PLAIN_END|$RE_PLAIN_START)(?::+$RE_PLAIN_END|$RE_PLAIN_END)*"; my $RE_PLAIN_FIRST_WORD = "(?:[:?-]+$RE_PLAIN_END|$RE_PLAIN_FIRST)(?::+$RE_PLAIN_END|$RE_PLAIN_END)*"; my $RE_PLAIN_WORDS = "(?:$RE_PLAIN_FIRST_WORD(?:$RE_WS+$RE_PLAIN_WORD)*)"; my $RE_PLAIN_WORDS2 = "(?:$RE_PLAIN_WORD(?:$RE_WS+$RE_PLAIN_WORD)*)"; my $RE_PLAIN_WORD_FLOW = "(?::+$RE_PLAIN_END_FLOW|$RE_PLAIN_START_FLOW)(?::+$RE_PLAIN_END_FLOW|$RE_PLAIN_END_FLOW)*"; my $RE_PLAIN_FIRST_WORD_FLOW = "(?:[:?-]+$RE_PLAIN_END_FLOW|$RE_PLAIN_FIRST_FLOW)(?::+$RE_PLAIN_END_FLOW|$RE_PLAIN_END_FLOW)*"; my $RE_PLAIN_WORDS_FLOW = "(?:$RE_PLAIN_FIRST_WORD_FLOW(?:$RE_WS+$RE_PLAIN_WORD_FLOW)*)"; my $RE_PLAIN_WORDS_FLOW2 = "(?:$RE_PLAIN_WORD_FLOW(?:$RE_WS+$RE_PLAIN_WORD_FLOW)*)"; #c-secondary-tag-handle ::= “!” “!” #c-named-tag-handle ::= “!” ns-word-char+ “!” #ns-tag-char ::= ns-uri-char - “!” - c-flow-indicator #ns-global-tag-prefix ::= ns-tag-char ns-uri-char* #c-ns-local-tag-prefix ::= “!” ns-uri-char* my $RE_TAG = "!(?:$RE_NS_WORD_CHAR*!$RE_NS_TAG_CHAR+|$RE_NS_TAG_CHAR+|<$RE_URI_CHAR+>|)"; #c-ns-anchor-property ::= “&” ns-anchor-name #ns-char ::= nb-char - s-white #ns-anchor-char ::= ns-char - c-flow-indicator #ns-anchor-name ::= ns-anchor-char+ my $RE_SEQSTART = qr/\A(-)(?=$RE_WS|$)/m; my $RE_COMPLEX = qr/(\?)(?=$RE_WS|$)/m; my $RE_COMPLEXCOLON = qr/\A(:)(?=$RE_WS|$)/m; my $RE_ANCHOR = "&$RE_ANCHOR_CAR+"; my $RE_ALIAS = "\\*$RE_ANCHOR_CAR+"; my %REGEXES = ( ANCHOR => qr{($RE_ANCHOR)}, TAG => qr{($RE_TAG)}, ALIAS => qr{($RE_ALIAS)}, SINGLEQUOTED => qr{(?:''|[^'\r\n]+)*}, ); sub fetch_next_line { my ($self) = @_; my $next_line = $self->next_line; if (defined $next_line ) { return $next_line; } my $line = $self->reader->readline; unless (defined $line) { $self->set_next_line(undef); return; } $self->set_block(1); $self->inc_line; $line =~ m/\A( *)([^\r\n]*)([\r\n]|\z)/ or die "Unexpected"; $next_line = [ $1, $2, $3 ]; $self->set_next_line($next_line); # $ESCAPE_CHAR from YAML.pm if ($line =~ tr/\x00-\x08\x0b-\x0c\x0e-\x1f//) { $self->exception("Control characters are not allowed"); } return $next_line; } my %TOKEN_NAMES = ( '"' => 'DOUBLEQUOTE', "'" => 'SINGLEQUOTE', '|' => 'LITERAL', '>' => 'FOLDED', '!' => 'TAG', '*' => 'ALIAS', '&' => 'ANCHOR', ':' => 'COLON', '-' => 'DASH', '?' => 'QUESTION', '[' => 'FLOWSEQ_START', ']' => 'FLOWSEQ_END', '{' => 'FLOWMAP_START', '}' => 'FLOWMAP_END', ',' => 'FLOW_COMMA', '---' => 'DOC_START', '...' => 'DOC_END', ); sub fetch_next_tokens { my ($self) = @_; my $next = $self->next_tokens; return $next if @$next; my $next_line = $self->fetch_next_line; if (not $next_line) { return []; } my $spaces = $next_line->[0]; my $yaml = \$next_line->[1]; if (not length $$yaml) { $self->push_tokens([ EOL => join('', @$next_line), $self->line ]); $self->set_next_line(undef); return $next; } if (substr($$yaml, 0, 1) eq '#') { $self->push_tokens([ EOL => join('', @$next_line), $self->line ]); $self->set_next_line(undef); return $next; } if (not $spaces and substr($$yaml, 0, 1) eq "%") { $self->_fetch_next_tokens_directive($yaml, $next_line->[2]); $self->set_context(0); $self->set_next_line(undef); return $next; } if (not $spaces and $$yaml =~ s/\A(---|\.\.\.)(?=$RE_WS|\z)//) { $self->push_tokens([ $TOKEN_NAMES{ $1 } => $1, $self->line ]); } elsif ($self->flowcontext and $$yaml =~ m/\A[ \t]+(#.*)?\z/) { $self->push_tokens([ EOL => join('', @$next_line), $self->line ]); $self->set_next_line(undef); return $next; } else { $self->push_tokens([ SPACE => $spaces, $self->line ]); } my $partial = $self->_fetch_next_tokens($next_line); unless ($partial) { $self->set_next_line(undef); } return $next; } my %ANCHOR_ALIAS_TAG = ( '&' => 1, '*' => 1, '!' => 1 ); my %BLOCK_SCALAR = ( '|' => 1, '>' => 1 ); my %COLON_DASH_QUESTION = ( ':' => 1, '-' => 1, '?' => 1 ); my %QUOTED = ( '"' => 1, "'" => 1 ); my %FLOW = ( '{' => 1, '[' => 1, '}' => 1, ']' => 1, ',' => 1 ); my %CONTEXT = ( '"' => 1, "'" => 1, '>' => 1, '|' => 1 ); my $RE_ESCAPES = qr{(?: \\([ \\\/_0abefnrtvLNP\t"]) | \\x([0-9a-fA-F]{2}) | \\u([A-Fa-f0-9]{4}) | \\U([A-Fa-f0-9]{4,8}) )}x; my %CONTROL = ( '\\' => '\\', '/' => '/', n => "\n", t => "\t", r => "\r", b => "\b", 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'v' => "\x0b", "\t" => "\t", 'P' => "\x{2029}", L => "\x{2028}", 'N' => "\x85", '0' => "\0", '_' => "\xa0", ' ' => ' ', q/"/ => q/"/, ); sub _fetch_next_tokens { TRACE and warn __PACKAGE__.':'.__LINE__.": _fetch_next_tokens\n"; my ($self, $next_line) = @_; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; my @tokens; while (1) { unless (length $$yaml) { push @tokens, ( EOL => $eol, $self->line ); $self->push_tokens(\@tokens); return; } my $first = substr($$yaml, 0, 1); my $plain = 0; if ($self->context) { if ($$yaml =~ s/\A($RE_WS*)://) { push @tokens, ( WS => $1, $self->line ) if $1; push @tokens, ( COLON => ':', $self->line ); $self->set_context(0); next; } if ($$yaml =~ s/\A($RE_WS*(?: #.*))\z//) { push @tokens, ( EOL => $1 . $eol, $self->line ); $self->push_tokens(\@tokens); return; } $self->set_context(0); } if ($CONTEXT{ $first }) { push @tokens, ( CONTEXT => $first, $self->line ); $self->push_tokens(\@tokens); return 1; } elsif ($COLON_DASH_QUESTION{ $first }) { my $token_name = $TOKEN_NAMES{ $first }; if ($$yaml =~ s/\A\Q$first\E($RE_WS+|\z)//) { if (not $self->flowcontext and not $self->block) { $self->push_tokens(\@tokens); $self->exception("Tabs can not be used for indentation"); } my $after = $1; if ($after =~ tr/\t//) { $self->set_block(0); } my $token_name = $TOKEN_NAMES{ $first }; push @tokens, ( $token_name => $first, $self->line ); if (not defined $1) { push @tokens, ( EOL => $eol, $self->line ); $self->push_tokens(\@tokens); return; } my $ws = $1; if ($$yaml =~ s/\A(#.*|)\z//) { push @tokens, ( EOL => $ws . $1 . $eol, $self->line ); $self->push_tokens(\@tokens); return; } push @tokens, ( WS => $ws, $self->line ); next; } elsif ($self->flowcontext and $$yaml =~ s/\A:(?=[,\{\}\[\]])//) { push @tokens, ( $token_name => $first, $self->line ); next; } $plain = 1; } elsif ($ANCHOR_ALIAS_TAG{ $first }) { my $token_name = $TOKEN_NAMES{ $first }; my $REGEX = $REGEXES{ $token_name }; if ($$yaml =~ s/\A$REGEX//) { push @tokens, ( $token_name => $1, $self->line ); } else { push @tokens, ( "Invalid $token_name" => $$yaml, $self->line ); $self->push_tokens(\@tokens); return; } } elsif ($first eq ' ' or $first eq "\t") { if ($$yaml =~ s/\A($RE_WS+)//) { my $ws = $1; if ($$yaml =~ s/\A((?:#.*)?\z)//) { push @tokens, ( EOL => $ws . $1 . $eol, $self->line ); $self->push_tokens(\@tokens); return; } push @tokens, ( WS => $ws, $self->line ); } } elsif ($FLOW{ $first }) { push @tokens, ( $TOKEN_NAMES{ $first } => $first, $self->line ); substr($$yaml, 0, 1, ''); my $flowcontext = $self->flowcontext; if ($first eq '{' or $first eq '[') { $self->set_flowcontext(++$flowcontext); } elsif ($first eq '}' or $first eq ']') { $self->set_flowcontext(--$flowcontext); } } else { $plain = 1; } if ($plain) { push @tokens, ( CONTEXT => '', $self->line ); $self->push_tokens(\@tokens); return 1; } } return; } sub fetch_plain { my ($self, $indent, $context) = @_; my $next_line = $self->next_line; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; my $REGEX = $RE_PLAIN_WORDS; if ($self->flowcontext) { $REGEX = $RE_PLAIN_WORDS_FLOW; } my @tokens; unless ($$yaml =~ s/\A($REGEX)//) { $self->push_tokens(\@tokens); $self->exception("Invalid plain scalar"); } my $plain = $1; push @tokens, ( PLAIN => $plain, $self->line ); if ($$yaml =~ s/\A(?:($RE_WS+#.*)|($RE_WS*))\z//) { if (defined $1) { push @tokens, ( EOL => $1 . $eol, $self->line ); $self->push_tokens(\@tokens); $self->set_next_line(undef); return; } else { push @tokens, ( EOL => $2. $eol, $self->line ); $self->set_next_line(undef); } } else { $self->push_tokens(\@tokens); my $partial = $self->_fetch_next_tokens($next_line); if (not $partial) { $self->set_next_line(undef); } return; } my $RE2 = $RE_PLAIN_WORDS2; if ($self->flowcontext) { $RE2 = $RE_PLAIN_WORDS_FLOW2; } my $fetch_next = 0; my @lines = ($plain); my @next; LOOP: while (1) { $next_line = $self->fetch_next_line; if (not $next_line) { last LOOP; } my $spaces = $next_line->[0]; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; if (not length $$yaml) { push @tokens, ( EOL => $spaces . $eol, $self->line ); $self->set_next_line(undef); push @lines, ''; next LOOP; } if (not $spaces and $$yaml =~ s/\A(---|\.\.\.)(?=$RE_WS|\z)//) { push @next, $TOKEN_NAMES{ $1 } => $1, $self->line; $fetch_next = 1; last LOOP; } if ((length $spaces) < $indent) { last LOOP; } my $ws = ''; if ($$yaml =~ s/\A($RE_WS+)//) { $ws = $1; } if (not length $$yaml) { push @tokens, ( EOL => $spaces . $ws . $eol, $self->line ); $self->set_next_line(undef); push @lines, ''; next LOOP; } if ($$yaml =~ s/\A(#.*)\z//) { push @tokens, ( EOL => $spaces . $ws . $1 . $eol, $self->line ); $self->set_next_line(undef); last LOOP; } if ($$yaml =~ s/\A($RE2)//) { push @tokens, INDENT => $spaces, $self->line; push @tokens, WS => $ws, $self->line; push @tokens, PLAIN => $1, $self->line; push @lines, $1; my $ws = ''; if ($$yaml =~ s/\A($RE_WS+)//) { $ws = $1; } if (not length $$yaml) { push @tokens, EOL => $ws . $eol, $self->line; $self->set_next_line(undef); next LOOP; } if ($$yaml =~ s/\A(#.*)\z//) { push @tokens, EOL => $ws . $1 . $eol, $self->line; $self->set_next_line(undef); last LOOP; } else { push @tokens, WS => $ws, $self->line if $ws; $fetch_next = 1; } } else { push @tokens, SPACE => $spaces, $self->line; push @tokens, WS => $ws, $self->line; if ($self->flowcontext) { $fetch_next = 1; } else { push @tokens, ERROR => $$yaml, $self->line; } } last LOOP; } # remove empty lines at the end while (@lines > 1 and $lines[-1] eq '') { pop @lines; } if (@lines > 1) { my $value = YAML::PP::Render->render_multi_val(\@lines); my @eol; if ($tokens[-3] eq 'EOL') { @eol = splice @tokens, -3; } $self->push_subtokens( { name => 'PLAIN_MULTI', value => $value }, \@tokens); $self->push_tokens([ @eol, @next ]); } else { $self->push_tokens([ @tokens, @next ]); } @tokens = (); if ($fetch_next) { my $partial = $self->_fetch_next_tokens($next_line); if (not $partial) { $self->set_next_line(undef); } } return; } sub fetch_block { my ($self, $indent, $context) = @_; my $next_line = $self->next_line; my $yaml = \$next_line->[1]; my $eol = $next_line->[2]; my @tokens; my $token_name = $TOKEN_NAMES{ $context }; $$yaml =~ s/\A\Q$context\E// or die "Unexpected"; push @tokens, ( $token_name => $context, $self->line ); my $current_indent = $indent; my $started = 0; my $set_indent = 0; my $chomp = ''; if ($$yaml =~ s/\A([1-9])([+-]?)//) { push @tokens, ( BLOCK_SCALAR_INDENT => $1, $self->line ); $set_indent = $1; $chomp = $2 if $2; push @tokens, ( BLOCK_SCALAR_CHOMP => $2, $self->line ) if $2; } elsif ($$yaml =~ s/\A([+-])([1-9])?//) { push @tokens, ( BLOCK_SCALAR_CHOMP => $1, $self->line ); $chomp = $1; push @tokens, ( BLOCK_SCALAR_INDENT => $2, $self->line ) if $2; $set_indent = $2 if $2; } if ($set_indent) { $started = 1; $indent-- if $indent > 0; $current_indent = $indent + $set_indent; } if (not length $$yaml) { push @tokens, ( EOL => $eol, $self->line ); } elsif ($$yaml =~ s/\A($RE_WS*(?:$RE_WS#.*|))\z//) { push @tokens, ( EOL => $1 . $eol, $self->line ); } else { $self->push_tokens(\@tokens); $self->exception("Invalid block scalar"); } my @lines; while (1) { $self->set_next_line(undef); $next_line = $self->fetch_next_line; if (not $next_line) { last; } my $spaces = $next_line->[0]; my $content = $next_line->[1]; my $eol = $next_line->[2]; if (not $spaces and $content =~ m/\A(---|\.\.\.)(?=$RE_WS|\z)/) { last; } if ((length $spaces) < $current_indent) { if (length $content) { if ($content =~ m/\A\t/) { $self->exception("Invalid block scalar"); } last; } else { push @lines, ''; push @tokens, ( EOL => $spaces . $eol, $self->line ); next; } } if ((length $spaces) > $current_indent) { if ($started) { ($spaces, my $more_spaces) = unpack "a${current_indent}a*", $spaces; $content = $more_spaces . $content; } } unless (length $content) { push @lines, ''; push @tokens, ( INDENT => $spaces, $self->line, EOL => $eol, $self->line ); unless ($started) { $current_indent = length $spaces; } next; } unless ($started) { $started = 1; $current_indent = length $spaces; } push @lines, $content; push @tokens, ( INDENT => $spaces, $self->line, BLOCK_SCALAR_CONTENT => $content, $self->line, EOL => $eol, $self->line, ); } my $value = YAML::PP::Render->render_block_scalar($context, $chomp, \@lines); my @eol = splice @tokens, -3; $self->push_subtokens( { name => 'BLOCK_SCALAR', value => $value }, \@tokens ); $self->push_tokens([ @eol ]); return 0; } sub fetch_quoted { my ($self, $indent, $context) = @_; my $next_line = $self->next_line; my $yaml = \$next_line->[1]; my $spaces = $next_line->[0]; my $token_name = $TOKEN_NAMES{ $context }; $$yaml =~ s/\A\Q$context// or die "Unexpected";; my @tokens = ( $token_name => $context, $self->line ); my $start = 1; my @values; while (1) { unless ($start) { $next_line = $self->fetch_next_line or do { for (my $i = 0; $i < @tokens; $i+= 3) { my $token = $tokens[ $i + 1 ]; if (ref $token) { $tokens[ $i + 1 ] = $token->{orig}; } } $self->push_tokens(\@tokens); $self->exception("Missing closing quote <$context> at EOF"); }; $start = 0; $spaces = $next_line->[0]; $yaml = \$next_line->[1]; if (not length $$yaml) { push @tokens, ( EOL => $spaces . $next_line->[2], $self->line ); $self->set_next_line(undef); push @values, { value => '', orig => '' }; next; } elsif (not $spaces and $$yaml =~ m/\A(---|\.\.\.)(?=$RE_WS|\z)/) { for (my $i = 0; $i < @tokens; $i+= 3) { my $token = $tokens[ $i + 1 ]; if (ref $token) { $tokens[ $i + 1 ] = $token->{orig}; } } $self->push_tokens(\@tokens); $self->exception("Missing closing quote <$context> or invalid document marker"); } elsif ((length $spaces) < $indent) { for (my $i = 0; $i < @tokens; $i+= 3) { my $token = $tokens[ $i + 1 ]; if (ref $token) { $tokens[ $i + 1 ] = $token->{orig}; } } $self->push_tokens(\@tokens); $self->exception("Wrong indendation or missing closing quote <$context>"); } if ($$yaml =~ s/\A($RE_WS+)//) { $spaces .= $1; } push @tokens, ( WS => $spaces, $self->line ); } my $v = $self->_read_quoted_tokens($start, $context, $yaml, \@tokens); push @values, $v; if ($tokens[-3] eq $token_name) { if ($start) { $self->push_subtokens( { name => 'QUOTED', value => $v->{value} }, \@tokens ); } else { my $value = YAML::PP::Render->render_quoted($context, \@values); $self->push_subtokens( { name => 'QUOTED_MULTILINE', value => $value }, \@tokens ); } $self->set_context(1) if $self->flowcontext; if (length $$yaml) { my $partial = $self->_fetch_next_tokens($next_line); if (not $partial) { $self->set_next_line(undef); } return 0; } else { @tokens = (); push @tokens, ( EOL => $next_line->[2], $self->line ); $self->push_tokens(\@tokens); $self->set_next_line(undef); return; } } $tokens[-2] .= $next_line->[2]; $self->set_next_line(undef); $start = 0; } } sub _read_quoted_tokens { my ($self, $start, $first, $yaml, $tokens) = @_; my $quoted = ''; my $decoded = ''; my $token_name = $TOKEN_NAMES{ $first }; my $eol = ''; if ($first eq "'") { my $regex = $REGEXES{SINGLEQUOTED}; if ($$yaml =~ s/\A($regex)//) { $quoted .= $1; $decoded .= $1; $decoded =~ s/''/'/g; } unless (length $$yaml) { if ($quoted =~ s/($RE_WS+)\z//) { $eol = $1; $decoded =~ s/($eol)\z//; } } } else { ($quoted, $decoded, $eol) = $self->_read_doublequoted($yaml); } my $value = { value => $decoded, orig => $quoted }; if ($$yaml =~ s/\A$first//) { if ($start) { push @$tokens, ( $token_name . 'D' => $value, $self->line ); } else { push @$tokens, ( $token_name . 'D_LINE' => $value, $self->line ); } push @$tokens, ( $token_name => $first, $self->line ); return $value; } if (length $$yaml) { push @$tokens, ( $token_name . 'D' => $value->{orig}, $self->line ); $self->push_tokens($tokens); $self->exception("Invalid quoted <$first> string"); } push @$tokens, ( $token_name . 'D_LINE' => $value, $self->line ); push @$tokens, ( EOL => $eol, $self->line ); return $value; } sub _read_doublequoted { my ($self, $yaml) = @_; my $quoted = ''; my $decoded = ''; my $eol = ''; while (1) { my $last = 1; if ($$yaml =~ s/\A([^"\\ \t]+)//) { $quoted .= $1; $decoded .= $1; $last = 0; } if ($$yaml =~ s/\A($RE_ESCAPES)//) { $quoted .= $1; my $dec = defined $2 ? $CONTROL{ $2 } : defined $3 ? chr hex $3 : defined $4 ? chr hex $4 : chr hex $5; $decoded .= $dec; $last = 0; } if ($$yaml =~ s/\A([ \t]+)//) { my $spaces = $1; if (length $$yaml) { $quoted .= $spaces; $decoded .= $spaces; $last = 0; } else { $eol = $spaces; last; } } if ($$yaml =~ s/\A(\\)\z//) { $quoted .= $1; $decoded .= $1; last; } last if $last; } return ($quoted, $decoded, $eol); } sub _fetch_next_tokens_directive { my ($self, $yaml, $eol) = @_; my @tokens; my $trailing_ws = ''; if ($$yaml =~ s/\A(\s*%YAML\b)//) { my $dir = $1; if ($$yaml =~ s/\A([ \t]+)//) { $dir .= $1; if ($$yaml =~ s/\A(1\.[12])($RE_WS*)//) { $dir .= $1; $trailing_ws = $2; 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[ \t]+(!$RE_NS_WORD_CHAR*!|!)[ \t]+(tag:\S+|!$RE_URI_CHAR+))($RE_WS*)//) { push @tokens, ( TAG_DIRECTIVE => $1, $self->line ); # TODO my $tag_alias = $2; my $tag_url = $3; $trailing_ws = $4; } elsif ($$yaml =~ s/\A(\s*\A%(?:\w+).*)//) { push @tokens, ( RESERVED_DIRECTIVE => $1, $self->line ); 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 ); } elsif ($trailing_ws and $$yaml =~ s/\A(#.*)?\z//) { push @tokens, ( EOL => "$trailing_ws$1$eol", $self->line ); $self->push_tokens(\@tokens); return; } elsif ($$yaml =~ s/\A([ \t]+#.*)?\z//) { push @tokens, ( EOL => "$1$eol", $self->line ); $self->push_tokens(\@tokens); return; } else { push @tokens, ( 'Invalid directive' => $$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; 47.header-footer.t100644001750001750 267414161720075 15347 0ustar00tinatina000000000000YAML-PP-0.031/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; 11.parse-invalid.t100644001750001750 351614161720075 15344 0ustar00tinatina000000000000YAML-PP-0.031/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; $|++; my $yts = "$Bin/../test-suite/yaml-test-suite-data"; my @skip = qw/ CXX2 9KBC S98Z T833 5LLU /; # in case of error events might not be exactly matching my %skip_events = ( Q4CL => 1, JY7Z => 1, '3HFZ' => 1, X4QW => 1, SU5Z => 1, W9L4 => 1, ZL4Z => 1, '9KBC' => 1, SY6V => 1, C2SP => 1, 'NTY5' => 1, '4EJS' => 1, '2CMS' => 1, 'HU3P' => 1, 'EW3V' => 1, 'G9HC' => 1, '4H7K' => 1, BS4K => 1, EB22 => 1, i037 => 1, i038 => 1, ); 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; } 41.custom.schema.t100644001750001750 60214161720075 15333 0ustar00tinatina000000000000YAML-PP-0.031/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; 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"); 38.schema-ixhash.t100644001750001750 135114161720075 15334 0ustar00tinatina000000000000YAML-PP-0.031/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; in.json100644001750001750 103714161720075 15270 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v024[ { "" : null, "second key" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null, "second key" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null }, { "" : null } ] in.yaml100644001750001750 46514161720075 15245 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v024- {!!str,second key} - {!!str,} - {!!str ,} - {!!str} - {!!str } - {&anchor1,second key} - {&anchor2,} - {&anchor3 ,} - {&anchor4} - {&anchor5 } - {!!str &anchor6,} - {!!str &anchor7 ,} - {!!str &anchor8} - {!!str &anchor9 } - {&anchor10 !!str,} - {&anchor11 !!str ,} - {&anchor12 !!str} - {&anchor13 !!str } in.yaml100644001750001750 7214161720075 15215 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v031%YAML 1.1 --- a ... %YAML 1.1 --- b ... %YAML 1.1 --- c in.json100644001750001750 4614161720075 15226 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v023[ [], [], [], [], [] ] in.yaml100644001750001750 12014161720075 15230 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v023- [ ] - [ ] - [ # comment ] - [ # comment ] - [ # comment ] in.yaml100644001750001750 2114161720075 15206 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v030%YAMLL 1.1 --- a in.yaml100644001750001750 13714161720075 15242 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v025- {? } - { ? } - { ? } - { ? } - { ? ,} - { ? , } - { ? ,key: value} - { ? , key: value} in.yaml100644001750001750 11214161720075 15226 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v020--- ? x: y : z a: b --- top1: ? a: 1 : b: [c] ? x : y top2: value in.yaml100644001750001750 7114161720075 15222 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v019--- mapping: ? > key : : value ? - a - b in.yaml100644001750001750 22414161720075 15242 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v028- "1 leading \ttab" - "2 leading \ tab" - "3 leading tab" - "4 leading \t tab" - "5 leading \ tab" - "6 leading tab" in.json100644001750001750 64114161720075 15246 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v022[ [ "", "second value" ], [ "" ], [ "" ], [ "" ], [ "" ], [ null, "second value" ], [ null ], [ null ], [ null ], [ null ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ], [ "" ] ] in.yaml100644001750001750 47114161720075 15240 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v022- [!!str,second value] - [!!str,] - [!!str ,] - [!!str] - [!!str ] - [&anchor1,second value] - [&anchor2,] - [&anchor3 ,] - [&anchor4] - [&anchor5 ] - [!!str &anchor6,] - [!!str &anchor7 ,] - [!!str &anchor8] - [!!str &anchor9 ] - [&anchor10 !!str,] - [&anchor11 !!str ,] - [&anchor12 !!str] - [&anchor13 !!str ] in.yaml100644001750001750 23214161720075 15240 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v027- "1 trailing\t tab" - "2 trailing\t tab" - "3 trailing\ tab" - "4 trailing\ tab" - "5 trailing tab" - "6 trailing tab" in.yaml100644001750001750 3214161720075 15216 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v009a: - 1 - 2 - # empty b: 3 in.yaml100644001750001750 514161720075 15172 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v032- -1 in.yaml100644001750001750 2514161720075 15222 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v029%YAML 1.1 #... --- a in.yaml100644001750001750 6514161720075 15223 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v026- "1 inline\ttab" - "2 inline\ tab" - "3 inline tab" in.yaml100644001750001750 4714161720075 15216 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v021- one: |2 two three: | four in.yaml100644001750001750 22114161720075 15232 0ustar00tinatina000000000000YAML-PP-0.031/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 yamlpp-parse-emit100755001750001750 527114161720075 16002 0ustar00tinatina000000000000YAML-PP-0.031/bin#!/usr/bin/perl use strict; use warnings; use YAML::PP; use YAML::PP::Common qw/ YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE /; use YAML::PP::Parser; use YAML::PP::Emitter; use YAML::PP::Writer; use Data::Dumper; use Encode; use Getopt::Long; Getopt::Long::Configure('bundling'); GetOptions( 'help|h' => \my $help, 'indent=i' => \my $indent, 'module|M=s' => \my $module, 'verbose' => \my $verbose, 'flow=s' => \my $flow, 'width=i' => \my $width, ) or usage(1); usage(0) if $help; $module ||= 'YAML::PP'; $flow ||= 'no'; my ($file) = @ARGV; my $yaml; if ($file) { open my $fh, '<', $file or die $!; $yaml = do { local $/; <$fh> }; close $fh; } else { $yaml = do { local $/; }; } $yaml = decode_utf8($yaml); my @events; my $parserclass = 'YAML::PP::Parser'; my $emitterclass = 'YAML::PP::Emitter'; if ($module eq 'YAML::PP::LibYAML') { eval { require YAML::PP::LibYAML } or die "Module $module not supported: $@"; $parserclass = 'YAML::PP::LibYAML::Parser'; $emitterclass = 'YAML::PP::LibYAML::Emitter'; } my $parser = $parserclass->new( receiver => sub { my ($self, undef, $event) = @_; push @events, $event; }, ); eval { $parser->parse_string($yaml); }; if ($@) { for (@events) { print YAML::PP::Common::event_to_test_suite($_) ."\n"; } warn "Error parsing: $@"; exit 1; } my $writer = YAML::PP::Writer->new; my $emitter = $emitterclass->new( indent => $indent, width => $width ); $emitter->set_writer($writer); for my $event (@events) { my $type = $event->{name}; my $str = YAML::PP::Common::event_to_test_suite($event); print "$str\n" if $verbose; if ($type eq 'sequence_start_event' or $type eq 'mapping_start_event') { if ($flow eq 'no') { delete $event->{style}; } elsif ($flow eq 'yes') { if ($type eq 'sequence_start_event') { $event->{style} = YAML_FLOW_SEQUENCE_STYLE; } else { $event->{style} = YAML_FLOW_MAPPING_STYLE; } } } $emitter->$type($event); } my $out_yaml = $emitter->writer->output; print encode_utf8 $out_yaml; sub usage { my ($rc) = @_; print <<"EOM"; Usage: $0 [options] < file $0 [options] file Options: --indent= Number of spaces for indentation --width= Maximum column width (only used in flow style for now) --module, -M YAML::PP or YAML::PP::LibYAML --flow 'no' (default, always output block style), 'yes' (always output flow style), 'keep' (output flow style like in the original input) EOM exit $rc; } strings.yaml100644001750001750 572414161720075 16134 0ustar00tinatina000000000000YAML-PP-0.031/examples############################################### # Various strings ############################################### '" "': failsafe, json, core, yaml11: ['str', ' ', "' '"] '"@array"': failsafe, json, core, yaml11: ['str', '@array', "'@array'"] '"%percent"': failsafe, json, core, yaml11: ['str', '%percent', "'%percent'"] '"`cmd`"': failsafe, json, core, yaml11: ['str', '`cmd`', "'`cmd`'"] '"!string"': failsafe, json, core, yaml11: ['str', '!string', "'!string'"] '"*string"': failsafe, json, core, yaml11: ['str', '*string', "'*string'"] '"string:"': failsafe, json, core, yaml11: ['str', 'string:', "'string:'"] '"string "': failsafe, json, core, yaml11: ['str', 'string ', "'string '"] '"string\t"': failsafe, json, core, yaml11: ['str', "string\t", '"string\t"'] '"string\r"': failsafe, json, core, yaml11: ['str', "string\r", '"string\r"'] '"key: val"': failsafe, json, core, yaml11: ['str', 'key: val', "'key: val'"] '"-"': failsafe, json, core, yaml11: ['str', '-', "'-'"] '"- "': failsafe, json, core, yaml11: ['str', '- ', "'- '"] '"-\n"': failsafe, json, core, yaml11: ['str', "-\n", "|\n -"] '"-\t"': failsafe, json, core, yaml11: ['str', "-\t", '"-\t"'] '"- a"': failsafe, json, core, yaml11: ['str', '- a', "'- a'"] '":"': failsafe, json, core, yaml11: ['str', ':', "':'"] '"{"': failsafe, json, core, yaml11: ['str', '{', "'{'"] '"}"': failsafe, json, core, yaml11: ['str', '}', "'}'"] '"["': failsafe, json, core, yaml11: ['str', '[', "'['"] '"]"': failsafe, json, core, yaml11: ['str', ']', "']'"] '","': failsafe, json, core, yaml11: ['str', ',', "','"] '"?"': failsafe, json, core, yaml11: ['str', '?', "'?'"] '"? "': failsafe, json, core, yaml11: ['str', '? ', "'? '"] '"? a"': failsafe, json, core, yaml11: ['str', '? a', "'? a'"] '"#"': failsafe, json, core, yaml11: ['str', '#', "'#'"] '"no comment #"': failsafe, json, core, yaml11: ['str', 'no comment #', "'no comment #'"] '"# "': failsafe, json, core, yaml11: ['str', '# ', "'# '"] '"no #comment"': failsafe, json, core, yaml11: ['str', 'no #comment', "'no #comment'"] '"|"': failsafe, json, core, yaml11: ['str', '|', "'|'"] '">"': failsafe, json, core, yaml11: ['str', '>', "'>'"] '"''"': failsafe, json, core, yaml11: ['str', '''', "\"'\""] '"''\""': failsafe, json, core, yaml11: ['str', '''"', "'''\"'"] '"\""': failsafe, json, core, yaml11: ['str', '"', "'\"'"] '"\n "': failsafe, json, core, yaml11: ['str', "\n ", '"\n "'] '" \n"': failsafe, json, core, yaml11: ['str', " \n", '" \n"'] '"foo\nbar"': failsafe, json, core, yaml11: ['str', "foo\nbar", "|-\n foo\n bar"] '"x\n\"y\\z"': failsafe, json, core, yaml11: ['str', "x\n\"y\\z", "|-\n x\n \"y\\z"] '"no comment#"': failsafe, json, core, yaml11: ['str', 'no comment#', "no comment#"] 'foo\bar': failsafe, json, core, yaml11: ['str', 'foo\bar', 'foo\bar'] '^string': failsafe, json, core, yaml11: ['str', '^string', '^string'] 'str"ing': failsafe, json, core, yaml11: ['str', 'str"ing', 'str"ing'] Common.pm100644001750001750 1453114161720075 15372 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Common; our $VERSION = '0.031'; # 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 PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; use constant { YAML_ANY_SCALAR_STYLE => 0, YAML_PLAIN_SCALAR_STYLE => 1, YAML_SINGLE_QUOTED_SCALAR_STYLE => 2, YAML_DOUBLE_QUOTED_SCALAR_STYLE => 3, YAML_LITERAL_SCALAR_STYLE => 4, YAML_FOLDED_SCALAR_STYLE => 5, YAML_QUOTED_SCALAR_STYLE => 'Q', # deprecated YAML_ANY_SEQUENCE_STYLE => 0, YAML_BLOCK_SEQUENCE_STYLE => 1, YAML_FLOW_SEQUENCE_STYLE => 2, YAML_ANY_MAPPING_STYLE => 0, YAML_BLOCK_MAPPING_STYLE => 1, YAML_FLOW_MAPPING_STYLE => 2, PRESERVE_ORDER => 2, PRESERVE_SCALAR_STYLE => 4, PRESERVE_FLOW_STYLE => 8, PRESERVE_ALIAS => 16, PRESERVE_ALL => 31, }; my %scalar_style_to_string = ( YAML_PLAIN_SCALAR_STYLE() => ':', YAML_SINGLE_QUOTED_SCALAR_STYLE() => "'", YAML_DOUBLE_QUOTED_SCALAR_STYLE() => '"', YAML_LITERAL_SCALAR_STYLE() => '|', YAML_FOLDED_SCALAR_STYLE() => '>', ); sub event_to_test_suite { my ($event, $args) = @_; my $ev = $event->{name}; my $string; my $content = $event->{value}; my $properties = ''; $properties .= " &$event->{anchor}" if defined $event->{anchor}; $properties .= " <$event->{tag}>" if defined $event->{tag}; if ($ev eq 'document_start_event') { $string = "+DOC"; $string .= " ---" unless $event->{implicit}; } elsif ($ev eq 'document_end_event') { $string = "-DOC"; $string .= " ..." unless $event->{implicit}; } elsif ($ev eq 'stream_start_event') { $string = "+STR"; } elsif ($ev eq 'stream_end_event') { $string = "-STR"; } elsif ($ev eq 'mapping_start_event') { $string = "+MAP"; if ($event->{style} and $event->{style} eq YAML_FLOW_MAPPING_STYLE) { $string .= ' {}' if $args->{flow}; } $string .= $properties; if (0) { # doesn't match yaml-test-suite format } } elsif ($ev eq 'sequence_start_event') { $string = "+SEQ"; if ($event->{style} and $event->{style} eq YAML_FLOW_SEQUENCE_STYLE) { $string .= ' []' if $args->{flow}; } $string .= $properties; if (0) { # doesn't match yaml-test-suite format } } elsif ($ev eq 'mapping_end_event') { $string = "-MAP"; } elsif ($ev eq 'sequence_end_event') { $string = "-SEQ"; } elsif ($ev eq 'scalar_event') { $string = '=VAL'; $string .= $properties; $content =~ s/\\/\\\\/g; $content =~ s/\t/\\t/g; $content =~ s/\r/\\r/g; $content =~ s/\n/\\n/g; $content =~ s/[\b]/\\b/g; $string .= ' ' . $scalar_style_to_string{ $event->{style} } . $content; } elsif ($ev eq 'alias_event') { $string = "=ALI *$content"; } return $string; } sub test_suite_to_event { my ($str) = @_; my $event = {}; if ($str =~ s/^\+STR//) { $event->{name} = 'stream_start_event'; } elsif ($str =~ s/^\-STR//) { $event->{name} = 'stream_end_event'; } elsif ($str =~ s/^\+DOC//) { $event->{name} = 'document_start_event'; if ($str =~ s/^ ---//) { $event->{implicit} = 0; } else { $event->{implicit} = 1; } } elsif ($str =~ s/^\-DOC//) { $event->{name} = 'document_end_event'; if ($str =~ s/^ \.\.\.//) { $event->{implicit} = 0; } else { $event->{implicit} = 1; } } elsif ($str =~ s/^\+SEQ//) { $event->{name} = 'sequence_start_event'; if ($str =~ s/^ \&(\S+)//) { $event->{anchor} = $1; } if ($str =~ s/^ <(\S+)>//) { $event->{tag} = $1; } } elsif ($str =~ s/^\-SEQ//) { $event->{name} = 'sequence_end_event'; } elsif ($str =~ s/^\+MAP//) { $event->{name} = 'mapping_start_event'; if ($str =~ s/^ \&(\S+)//) { $event->{anchor} = $1; } if ($str =~ s/^ <(\S+)>//) { $event->{tag} = $1; } } elsif ($str =~ s/^\-MAP//) { $event->{name} = 'mapping_end_event'; } elsif ($str =~ s/^=VAL//) { $event->{name} = 'scalar_event'; if ($str =~ s/^ <(\S+)>//) { $event->{tag} = $1; } if ($str =~ s/^ [:'">|]//) { $event->{style} = $1; } if ($str =~ s/^(.*)//) { $event->{value} = $1; } } elsif ($str =~ s/^=ALI//) { $event->{name} = 'alias_event'; if ($str =~ s/^ \*(.*)//) { $event->{value} = $1; } } else { die "Could not parse event '$str'"; } return $event; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Common - Constants and common functions =head1 SYNOPSIS use YAML::PP::Common 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 FUNCTIONS =over =item event_to_test_suite my $string = YAML::PP::Common::event_to_test_suite($event_prom_parser); For examples of the returned format look into this distributions's directory C which is a copy of L. =item test_suite_to_event my $event = YAML::PP::Common::test_suite_to_event($str); Turns an event string in test suite format into an event hashref. Not complete yet. =back Parser.pm100644001750001750 12077414161720075 15425 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP# ABSTRACT: YAML Parser use strict; use warnings; package YAML::PP::Parser; our $VERSION = '0.031'; # VERSION use constant TRACE => $ENV{YAML_PP_TRACE} ? 1 : 0; use constant DEBUG => ($ENV{YAML_PP_DEBUG} || $ENV{YAML_PP_TRACE}) ? 1 : 0; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE /; use YAML::PP::Render; use YAML::PP::Lexer; use YAML::PP::Grammar qw/ $GRAMMAR /; use YAML::PP::Exception; use YAML::PP::Reader; use Carp qw/ croak /; sub new { my ($class, %args) = @_; my $reader = delete $args{reader} || YAML::PP::Reader->new; my $default_yaml_version = delete $args{default_yaml_version}; my $self = bless { default_yaml_version => $default_yaml_version || '1.2', lexer => YAML::PP::Lexer->new( reader => $reader, ), }, $class; my $receiver = delete $args{receiver}; if ($receiver) { $self->set_receiver($receiver); } return $self; } sub clone { my ($self) = @_; my $clone = { default_yaml_version => $self->default_yaml_version, lexer => YAML::PP::Lexer->new(), }; return bless $clone, ref $self; } sub receiver { return $_[0]->{receiver} } sub set_receiver { my ($self, $receiver) = @_; my $callback; if (ref $receiver eq 'CODE') { $callback = $receiver; } else { $callback = sub { my ($self, $event, $info) = @_; return $receiver->$event($info); }; } $self->{callback} = $callback; $self->{receiver} = $receiver; } sub reader { return $_[0]->lexer->{reader} } sub set_reader { my ($self, $reader) = @_; $self->lexer->set_reader($reader); } sub lexer { return $_[0]->{lexer} } sub callback { return $_[0]->{callback} } sub set_callback { $_[0]->{callback} = $_[1] } sub level { return $#{ $_[0]->{offset} } } sub offset { return $_[0]->{offset} } sub set_offset { $_[0]->{offset} = $_[1] } sub events { return $_[0]->{events} } sub set_events { $_[0]->{events} = $_[1] } sub new_node { return $_[0]->{new_node} } sub set_new_node { $_[0]->{new_node} = $_[1] } sub tagmap { return $_[0]->{tagmap} } sub set_tagmap { $_[0]->{tagmap} = $_[1] } sub tokens { return $_[0]->{tokens} } sub set_tokens { $_[0]->{tokens} = $_[1] } sub event_stack { return $_[0]->{event_stack} } sub set_event_stack { $_[0]->{event_stack} = $_[1] } sub default_yaml_version { return $_[0]->{default_yaml_version} } sub yaml_version { return $_[0]->{yaml_version} } sub set_yaml_version { $_[0]->{yaml_version} = $_[1] } sub yaml_version_directive { return $_[0]->{yaml_version_directive} } sub set_yaml_version_directive { $_[0]->{yaml_version_directive} = $_[1] } sub rule { return $_[0]->{rule} } sub set_rule { my ($self, $name) = @_; no warnings 'uninitialized'; DEBUG and $self->info("set_rule($name)"); $self->{rule} = $name; } sub init { my ($self) = @_; $self->set_offset([]); $self->set_events([]); $self->set_new_node(0); $self->set_tagmap({ '!!' => "tag:yaml.org,2002:", }); $self->set_tokens([]); $self->set_rule(undef); $self->set_event_stack([]); $self->set_yaml_version($self->default_yaml_version); $self->set_yaml_version_directive(undef); $self->lexer->init; } sub parse_string { my ($self, $yaml) = @_; $self->set_reader(YAML::PP::Reader->new( input => $yaml )); $self->parse(); } sub parse_file { my ($self, $file) = @_; $self->set_reader(YAML::PP::Reader::File->new( input => $file )); $self->parse(); } my %nodetypes = ( MAPVALUE => 'NODETYPE_COMPLEX', MAP => 'NODETYPE_MAP', # IMAP => 'NODETYPE_SEQ', SEQ => 'NODETYPE_SEQ', SEQ0 => 'NODETYPE_SEQ', FLOWMAP => 'NODETYPE_FLOWMAP', FLOWMAPVALUE => 'NODETYPE_FLOWMAPVALUE', FLOWSEQ => 'NODETYPE_FLOWSEQ', FLOWSEQ_NEXT => 'FLOWSEQ_NEXT', DOC => 'FULLNODE', DOC_END => 'DOCUMENT_END', STR => 'STREAM', END_FLOW => 'END_FLOW', ); sub parse { my ($self) = @_; TRACE and warn "=== parse()\n"; TRACE and $self->debug_yaml; $self->init; $self->lexer->init; eval { $self->start_stream; $self->set_rule( 'STREAM' ); $self->parse_tokens(); $self->end_stream; }; if (my $error = $@) { if (ref $error) { croak "$error\n "; } croak $error; } DEBUG and $self->highlight_yaml; TRACE and $self->debug_tokens; } sub lex_next_tokens { my ($self) = @_; DEBUG and $self->info("----------------> lex_next_tokens"); TRACE and $self->debug_events; my $indent = $self->offset->[-1]; my $event_types = $self->events; my $next_tokens = $self->lexer->fetch_next_tokens($indent); return unless @$next_tokens; my $next = $next_tokens->[0]; return 1 if ($next->{name} ne 'SPACE'); my $flow = $event_types->[-1] =~ m/^FLOW/; my $space = length $next->{value}; my $tokens = $self->tokens; if (not $space) { shift @$next_tokens; } else { push @$tokens, shift @$next_tokens; } if ($flow) { if ($space >= $indent) { return 1; } $self->exception("Bad indendation in " . $self->events->[-1]); } $next = $next_tokens->[0]; if ($space > $indent ) { return 1 if $indent < 0; unless ($self->new_node) { $self->exception("Bad indendation in " . $self->events->[-1]); } return 1; } if ($self->new_node) { if ($space < $indent) { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); $self->remove_nodes($space); } else { # unindented sequence starts my $exp = $self->events->[-1]; my $seq_start = $next->{name} eq 'DASH'; if ( $seq_start and ($exp eq 'MAPVALUE' or $exp eq 'MAP')) { } else { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } } } else { if ($space < $indent) { $self->remove_nodes($space); } } my $exp = $self->events->[-1]; if ($exp eq 'SEQ0' and $next->{name} ne 'DASH') { TRACE and $self->info("In unindented sequence"); $self->end_sequence; $exp = $self->events->[-1]; } if ($self->offset->[-1] != $space) { $self->exception("Expected " . $self->events->[-1]); } return 1; } my %next_event = ( MAP => 'MAPVALUE', IMAP => 'IMAPVALUE', MAPVALUE => 'MAP', IMAPVALUE => 'IMAP', SEQ => 'SEQ', SEQ0 => 'SEQ0', DOC => 'DOC_END', STR => 'STR', FLOWSEQ => 'FLOWSEQ_NEXT', FLOWSEQ_NEXT => 'FLOWSEQ', FLOWMAP => 'FLOWMAPVALUE', FLOWMAPVALUE => 'FLOWMAP', ); my %event_to_method = ( MAP => 'mapping', IMAP => 'mapping', FLOWMAP => 'mapping', SEQ => 'sequence', SEQ0 => 'sequence', FLOWSEQ => 'sequence', DOC => 'document', STR => 'stream', VAL => 'scalar', ALI => 'alias', MAPVALUE => 'mapping', IMAPVALUE => 'mapping', ); #sub process_events { # my ($self, $res) = @_; # # my $event_stack = $self->event_stack; # return unless @$event_stack; # # if (@$event_stack == 1 and $event_stack->[0]->[0] eq 'properties') { # return; # } # # my $event_types = $self->events; # my $properties; # my @send_events; # for my $event (@$event_stack) { # TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$event], ['event']); # my ($type, $info) = @$event; # if ($type eq 'properties') { # $properties = $info; # } # elsif ($type eq 'scalar') { # $info->{name} = 'scalar_event'; # $event_types->[-1] = $next_event{ $event_types->[-1] }; # push @send_events, $info; # } # elsif ($type eq 'begin') { # my $name = $info->{name}; # $info->{name} = $event_to_method{ $name } . '_start_event'; # push @{ $event_types }, $name; # push @{ $self->offset }, $info->{offset}; # push @send_events, $info; # } # elsif ($type eq 'end') { # my $name = $info->{name}; # $info->{name} = $event_to_method{ $name } . '_end_event'; # $self->$type($name, $info); # push @send_events, $info; # if (@$event_types) { # $event_types->[-1] = $next_event{ $event_types->[-1] }; # } # } # elsif ($type eq 'alias') { # if ($properties) { # $self->exception("Parse error: Alias not allowed in this context"); # } # $info->{name} = 'alias_event'; # $event_types->[-1] = $next_event{ $event_types->[-1] }; # push @send_events, $info; # } # } # @$event_stack = (); # for my $info (@send_events) { # DEBUG and $self->debug_event( $info ); # $self->callback->($self, $info->{name}, $info); # } #} my %fetch_method = ( '"' => 'fetch_quoted', "'" => 'fetch_quoted', '|' => 'fetch_block', '>' => 'fetch_block', '' => 'fetch_plain', ); sub parse_tokens { my ($self) = @_; my $event_types = $self->events; my $offsets = $self->offset; my $tokens = $self->tokens; my $next_tokens = $self->lexer->next_tokens; unless ($self->lex_next_tokens) { $self->end_document(1); return 0; } unless ($self->new_node) { if ($self->level > 0) { my $new_rule = $nodetypes{ $event_types->[-1] } or die "Did not find '$event_types->[-1]'"; $self->set_rule( $new_rule ); } } my $rule_name = $self->rule; DEBUG and $self->info("----------------> parse_tokens($rule_name)"); my $rule = $GRAMMAR->{ $rule_name } or die "Could not find rule $rule_name"; TRACE and $self->debug_rules($rule); TRACE and $self->debug_yaml; DEBUG and $self->debug_next_line; RULE: while ($rule_name) { DEBUG and $self->info("RULE: $rule_name"); TRACE and $self->debug_tokens($next_tokens); unless (@$next_tokens) { $self->exception("No more tokens"); } TRACE and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$next_tokens->[0]], ['next_token']); my $got = $next_tokens->[0]->{name}; if ($got eq 'CONTEXT') { my $context = shift @$next_tokens; my $indent = $offsets->[-1]; $indent++ unless $self->lexer->flowcontext; my $method = $fetch_method{ $context->{value} }; my $partial = $self->lexer->$method($indent, $context->{value}); next RULE; } my $def = $rule->{ $got }; if ($def) { push @$tokens, shift @$next_tokens; } elsif ($def = $rule->{DEFAULT}) { $got = 'DEFAULT'; } else { $self->expected( expected => [keys %$rule], got => $next_tokens->[0], ); } DEBUG and $self->got("---got $got"); if (my $sub = $def->{match}) { DEBUG and $self->info("CALLBACK $sub"); $self->$sub(@$tokens ? $tokens->[-1] : ()); } my $eol = $got eq 'EOL'; my $new = $def->{new}; if ($new) { DEBUG and $self->got("NEW: $new"); $rule_name = $new; $self->set_rule($rule_name); } elsif ($eol) { } elsif ($def->{return}) { $rule_name = $nodetypes{ $event_types->[-1] } or die "Unexpected event type $event_types->[-1]"; $self->set_rule($rule_name); } else { $rule_name .= " - $got"; # for debugging $rule = $def; next RULE; } if ($eol) { unless ($self->lex_next_tokens) { if ($rule_name eq 'DIRECTIVE') { $self->exception("Directive needs document start"); } $self->end_document(1); return 0; } unless ($self->new_node) { if ($self->level > 0) { $rule_name = $nodetypes{ $event_types->[-1] } or die "Did not find '$event_types->[-1]'"; $self->set_rule( $rule_name ); } } $rule_name = $self->rule; } $rule = $GRAMMAR->{ $rule_name } or die "Unexpected rule $rule_name"; } die "Unexpected"; } sub end_sequence { my ($self) = @_; my $event_types = $self->events; pop @{ $event_types }; pop @{ $self->offset }; my $info = { name => 'sequence_end_event' }; $self->callback->($self, $info->{name} => $info ); $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub remove_nodes { my ($self, $space) = @_; my $offset = $self->offset; my $event_types = $self->events; my $exp = $event_types->[-1]; while (@$offset) { if ($offset->[ -1 ] <= $space) { last; } if ($exp eq 'MAPVALUE') { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); $exp = 'MAP'; } my $info = { name => $exp }; $info->{name} = $event_to_method{ $exp } . '_end_event'; pop @{ $event_types }; pop @{ $offset }; $self->callback->($self, $info->{name} => $info ); $event_types->[-1] = $next_event{ $event_types->[-1] }; $exp = $event_types->[-1]; } return $exp; } sub start_stream { my ($self) = @_; push @{ $self->events }, 'STR'; push @{ $self->offset }, -1; $self->callback->($self, 'stream_start_event', { name => 'stream_start_event', }); } sub start_document { my ($self, $implicit) = @_; push @{ $self->events }, 'DOC'; push @{ $self->offset }, -1; my $directive = $self->yaml_version_directive; my %directive; if ($directive) { my ($major, $minor) = split m/\./, $self->yaml_version; %directive = ( version_directive => { major => $major, minor => $minor } ); } $self->callback->($self, 'document_start_event', { name => 'document_start_event', implicit => $implicit, %directive, }); $self->set_yaml_version_directive(undef); $self->set_rule( 'FULLNODE' ); $self->set_new_node(1); } sub start_sequence { my ($self, $offset) = @_; my $offsets = $self->offset; if ($offsets->[-1] == $offset) { push @{ $self->events }, 'SEQ0'; } else { push @{ $self->events }, 'SEQ'; } push @{ $offsets }, $offset; my $event_stack = $self->event_stack; my $info = { name => 'sequence_start_event' }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { my $properties = pop @$event_stack; $self->node_properties($properties->[1], $info); } $self->callback->($self, 'sequence_start_event', $info); } sub start_flow_sequence { my ($self, $offset) = @_; my $offsets = $self->offset; my $new_offset = $offsets->[-1]; my $event_types = $self->events; if ($new_offset < 0) { $new_offset = 0; } elsif ($self->new_node) { if ($event_types->[-1] !~ m/^FLOW/) { $new_offset++; } } push @{ $self->events }, 'FLOWSEQ'; push @{ $offsets }, $new_offset; my $event_stack = $self->event_stack; my $info = { style => YAML_FLOW_SEQUENCE_STYLE, name => 'sequence_start_event' }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($event_stack, $info); } $self->callback->($self, 'sequence_start_event', $info); } sub start_flow_mapping { my ($self, $offset, $implicit_flowseq_map) = @_; my $offsets = $self->offset; my $new_offset = $offsets->[-1]; my $event_types = $self->events; if ($new_offset < 0) { $new_offset = 0; } elsif ($self->new_node) { if ($event_types->[-1] !~ m/^FLOW/) { $new_offset++; } } push @{ $self->events }, $implicit_flowseq_map ? 'IMAP' : 'FLOWMAP'; push @{ $offsets }, $new_offset; my $event_stack = $self->event_stack; my $info = { name => 'mapping_start_event', style => YAML_FLOW_MAPPING_STYLE }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($event_stack, $info); } $self->callback->($self, 'mapping_start_event', $info); } sub end_flow_sequence { my ($self) = @_; my $event_types = $self->events; pop @{ $event_types }; pop @{ $self->offset }; my $info = { name => 'sequence_end_event' }; $self->callback->($self, $info->{name}, $info); if ($event_types->[-1] =~ m/^FLOW|^IMAP/) { $event_types->[-1] = $next_event{ $event_types->[-1] }; } else { push @$event_types, 'END_FLOW'; } } sub end_flow_mapping { my ($self) = @_; my $event_types = $self->events; pop @{ $event_types }; pop @{ $self->offset }; my $info = { name => 'mapping_end_event' }; $self->callback->($self, $info->{name}, $info); if ($event_types->[-1] =~ m/^FLOW|^IMAP/) { $event_types->[-1] = $next_event{ $event_types->[-1] }; } else { push @$event_types, 'END_FLOW'; } } sub cb_end_outer_flow { my ($self) = @_; my $event_types = $self->events; pop @$event_types; $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub start_mapping { my ($self, $offset) = @_; my $offsets = $self->offset; push @{ $self->events }, 'MAP'; push @{ $offsets }, $offset; my $event_stack = $self->event_stack; my $info = { name => 'mapping_start_event' }; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { my $properties = pop @$event_stack; $self->node_properties($properties->[1], $info); } $self->callback->($self, 'mapping_start_event', $info); } sub end_document { my ($self, $implicit) = @_; my $event_types = $self->events; if ($event_types->[-1] =~ m/FLOW/) { die "Unexpected end of flow context"; } if ($self->new_node) { $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } $self->remove_nodes(-1); if ($event_types->[-1] eq 'STR') { return; } my $last = pop @{ $event_types }; if ($last ne 'DOC' and $last ne 'DOC_END') { $self->exception("Unexpected event type $last"); } pop @{ $self->offset }; $self->callback->($self, 'document_end_event', { name => 'document_end_event', implicit => $implicit, }); if ($self->yaml_version eq '1.2') { # In YAML 1.2, directives are only for the following # document. In YAML 1.1, they are global $self->set_tagmap({ '!!' => "tag:yaml.org,2002:" }); } $event_types->[-1] = $next_event{ $event_types->[-1] }; $self->set_rule('STREAM'); } sub end_stream { my ($self) = @_; my $last = pop @{ $self->events }; $self->exception("Unexpected event type $last") unless $last eq 'STR'; pop @{ $self->offset }; $self->callback->($self, 'stream_end_event', { name => 'stream_end_event', }); } sub fetch_inline_properties { my ($self, $stack, $info) = @_; my $properties = $stack->[-1]; $properties = $properties->[1]; my $property_offset; if ($properties) { for my $p (@{ $properties->{inline} }) { my $type = $p->{type}; if (exists $info->{ $type }) { $self->exception("A node can only have one $type"); } $info->{ $type } = $p->{value}; unless (defined $property_offset) { $property_offset = $p->{offset}; $info->{offset} = $p->{offset}; } } delete $properties->{inline}; undef $properties unless $properties->{newline}; } unless ($properties) { pop @$stack; } } sub node_properties { my ($self, $properties, $info) = @_; if ($properties) { for my $p (@{ $properties->{newline} }) { my $type = $p->{type}; if (exists $info->{ $type }) { $self->exception("A node can only have one $type"); } $info->{ $type } = $p->{value}; } undef $properties; } } sub scalar_event { my ($self, $info) = @_; my $event_types = $self->events; my $event_stack = $self->event_stack; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { my $properties = pop @$event_stack; $properties = $self->node_properties($properties->[1], $info); } $info->{name} = 'scalar_event'; $self->callback->($self, 'scalar_event', $info); $self->set_new_node(0); $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub alias_event { my ($self, $info) = @_; my $event_stack = $self->event_stack; if (@$event_stack and $event_stack->[-1]->[0] eq 'properties') { $self->exception("Parse error: Alias not allowed in this context"); } my $event_types = $self->events; $info->{name} = 'alias_event'; $self->callback->($self, 'alias_event', $info); $self->set_new_node(0); $event_types->[-1] = $next_event{ $event_types->[-1] }; } sub yaml_to_tokens { my ($class, $type, $input) = @_; my $yp = YAML::PP::Parser->new( receiver => sub {} ); my @docs = eval { $type eq 'string' ? $yp->parse_string($input) : $yp->parse_file($input); }; my $error = $@; my $tokens = $yp->tokens; if ($error) { my $remaining_tokens = $yp->_remaining_tokens; push @$tokens, map { +{ %$_, name => 'ERROR' } } @$remaining_tokens; } return $error, $tokens; } sub _remaining_tokens { my ($self) = @_; my @tokens; my $next = $self->lexer->next_tokens; push @tokens, @$next; my $next_line = $self->lexer->next_line; my $remaining = ''; if ($next_line) { if ($self->lexer->offset > 0) { $remaining = $next_line->[1] . $next_line->[2]; } else { $remaining = join '', @$next_line; } } $remaining .= $self->reader->read; $remaining = '' unless defined $remaining; push @tokens, { name => "ERROR", value => $remaining }; return \@tokens; } # deprecated sub event_to_test_suite { # uncoverable subroutine my ($self, $event) = @_; # uncoverable statement if (ref $event eq 'ARRAY') { # uncoverable statement return YAML::PP::Common::event_to_test_suite($event->[1]); # uncoverable statement } return YAML::PP::Common::event_to_test_suite($event); # uncoverable statement } sub debug_events { # uncoverable subroutine my ($self) = @_; # uncoverable statement $self->note("EVENTS: (" # uncoverable statement . join (' | ', @{ $_[0]->events }) . ')' # uncoverable statement ); $self->debug_offset; # uncoverable statement } sub debug_offset { # uncoverable subroutine my ($self) = @_; # uncoverable statement $self->note( qq{OFFSET: (} # uncoverable statement count:1 # uncoverable statement count:2 # uncoverable statement count:3 . join (' | ', map { defined $_ ? sprintf "%-3d", $_ : '?' } @{ $_[0]->offset }) # uncoverable statement . qq/) level=@{[ $_[0]->level ]}]}/ ); } sub debug_yaml { # uncoverable subroutine my ($self) = @_; # uncoverable statement my $line = $self->lexer->line; # uncoverable statement $self->note("LINE NUMBER: $line"); # uncoverable statement my $next_tokens = $self->lexer->next_tokens; # uncoverable statement if (@$next_tokens) { # uncoverable statement $self->debug_tokens($next_tokens); # uncoverable statement } } sub debug_next_line { my ($self) = @_; my $next_line = $self->lexer->next_line || []; my $line = $next_line->[0]; $line = '' unless defined $line; $line =~ s/( +)$/'·' x length $1/e; $line =~ s/\t/▸/g; $self->note("NEXT LINE: >>$line<<"); } sub note { my ($self, $msg) = @_; $self->_colorize_warn(["yellow"], "============ $msg"); } sub info { my ($self, $msg) = @_; $self->_colorize_warn(["cyan"], "============ $msg"); } sub got { my ($self, $msg) = @_; $self->_colorize_warn(["green"], "============ $msg"); } sub _colorize_warn { # uncoverable subroutine my ($self, $colors, $text) = @_; # uncoverable statement require Term::ANSIColor; # uncoverable statement warn Term::ANSIColor::colored($colors, $text), "\n"; # uncoverable statement } sub debug_event { # uncoverable subroutine my ($self, $event) = @_; # uncoverable statement my $str = YAML::PP::Common::event_to_test_suite($event); # uncoverable statement require Term::ANSIColor; # uncoverable statement warn Term::ANSIColor::colored(["magenta"], "============ $str"), "\n"; # uncoverable statement } sub debug_rules { # uncoverable subroutine my ($self, $rules) = @_; # uncoverable statement local $Data::Dumper::Maxdepth = 2; # uncoverable statement $self->note("RULES:"); # uncoverable statement for my $rule ($rules) { # uncoverable statement if (ref $rule eq 'ARRAY') { # uncoverable statement my $first = $rule->[0]; # uncoverable statement if (ref $first eq 'SCALAR') { # uncoverable statement $self->info("-> $$first"); # uncoverable statement } else { # uncoverable statement if (ref $first eq 'ARRAY') { # uncoverable statement $first = $first->[0]; # uncoverable statement } $self->info("TYPE $first"); # uncoverable statement } } else { # uncoverable statement eval { # uncoverable statement my @keys = sort keys %$rule; # uncoverable statement $self->info("@keys"); # uncoverable statement }; } } } sub debug_tokens { # uncoverable subroutine my ($self, $tokens) = @_; # uncoverable statement $tokens ||= $self->tokens; # uncoverable statement require Term::ANSIColor; # uncoverable statement for my $token (@$tokens) { # uncoverable statement my $type = Term::ANSIColor::colored(["green"], # uncoverable statement sprintf "%-22s L %2d C %2d ", # uncoverable statement $token->{name}, $token->{line}, $token->{column} + 1 # uncoverable statement ); local $Data::Dumper::Useqq = 1; # uncoverable statement local $Data::Dumper::Terse = 1; # uncoverable statement require Data::Dumper; # uncoverable statement my $str = Data::Dumper->Dump([$token->{value}], ['str']); # uncoverable statement chomp $str; # uncoverable statement $str =~ s/(^.|.$)/Term::ANSIColor::colored(['blue'], $1)/ge; # uncoverable statement warn "$type$str\n"; # uncoverable statement } } sub highlight_yaml { my ($self) = @_; require YAML::PP::Highlight; my $tokens = $self->tokens; my $highlighted = YAML::PP::Highlight->ansicolored($tokens); warn $highlighted; } sub exception { my ($self, $msg, %args) = @_; my $next = $self->lexer->next_tokens; my $line = @$next ? $next->[0]->{line} : $self->lexer->line; my $offset = @$next ? $next->[0]->{column} : $self->lexer->offset; $offset++; my $next_line = $self->lexer->next_line; my $remaining = ''; if ($next_line) { if ($self->lexer->offset > 0) { $remaining = $next_line->[1] . $next_line->[2]; } else { $remaining = join '', @$next_line; } } my $caller = $args{caller} || [ caller(0) ]; my $e = YAML::PP::Exception->new( got => $args{got}, expected => $args{expected}, line => $line, column => $offset, msg => $msg, next => $next, where => $caller->[1] . ' line ' . $caller->[2], yaml => $remaining, ); croak $e; } sub expected { my ($self, %args) = @_; my $expected = $args{expected}; @$expected = sort grep { m/^[A-Z_]+$/ } @$expected; my $got = $args{got}->{name}; my @caller = caller(0); $self->exception("Expected (@$expected), but got $got", caller => \@caller, expected => $expected, got => $args{got}, ); } sub cb_tag { my ($self, $token) = @_; my $stack = $self->event_stack; if (! @$stack or $stack->[-1]->[0] ne 'properties') { push @$stack, [ properties => {} ]; } my $last = $stack->[-1]->[1]; my $tag = $self->_read_tag($token->{value}, $self->tagmap); $last->{inline} ||= []; push @{ $last->{inline} }, { type => 'tag', value => $tag, offset => $token->{column}, }; } sub _read_tag { my ($self, $tag, $map) = @_; if ($tag eq '!') { return "!"; } elsif ($tag =~ m/^!<(.*)>/) { return $1; } elsif ($tag =~ m/^(![^!]*!|!)(.+)/) { my $alias = $1; my $name = $2; $name =~ s/%([0-9a-fA-F]{2})/chr hex $1/eg; if (exists $map->{ $alias }) { $tag = $map->{ $alias }. $name; } else { if ($alias ne '!' and $alias ne '!!') { die "Found undefined tag handle '$alias'"; } $tag = "!$name"; } } else { die "Invalid tag"; } return $tag; } sub cb_anchor { my ($self, $token) = @_; my $anchor = $token->{value}; $anchor = substr($anchor, 1); my $stack = $self->event_stack; if (! @$stack or $stack->[-1]->[0] ne 'properties') { push @$stack, [ properties => {} ]; } my $last = $stack->[-1]->[1]; $last->{inline} ||= []; push @{ $last->{inline} }, { type => 'anchor', value => $anchor, offset => $token->{column}, }; } sub cb_property_eol { my ($self, $res) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]->[1]; my $inline = delete $last->{inline} or return; my $newline = $last->{newline} ||= []; push @$newline, @$inline; } sub cb_mapkey { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; } sub cb_send_mapkey { my ($self, $res) = @_; my $last = pop @{ $self->event_stack }; $self->scalar_event($last->[1]); $self->set_new_node(1); } sub cb_send_scalar { my ($self, $res) = @_; my $last = pop @{ $self->event_stack }; return unless $last; $self->scalar_event($last->[1]); my $e = $self->events; if ($e->[-1] eq 'IMAP') { $self->end_flow_mapping; } } sub cb_empty_mapkey { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); $self->set_new_node(1); } sub cb_send_flow_alias { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); $self->alias_event({ value => $alias }); } sub cb_send_alias { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); $self->alias_event({ value => $alias }); } sub cb_send_alias_from_stack { my ($self, $token) = @_; my $last = pop @{ $self->event_stack }; $self->alias_event($last->[1]); } sub cb_alias { my ($self, $token) = @_; my $alias = substr($token->{value}, 1); push @{ $self->event_stack }, [ alias => { value => $alias, offset => $token->{column}, }]; } sub cb_question { my ($self, $res) = @_; $self->set_new_node(1); } sub cb_flow_question { my ($self, $res) = @_; $self->set_new_node(2); } sub cb_empty_complexvalue { my ($self, $res) = @_; $self->scalar_event({ style => YAML_PLAIN_SCALAR_STYLE, value => '' }); } sub cb_questionstart { my ($self, $token) = @_; $self->start_mapping($token->{column}); } sub cb_complexcolon { my ($self, $res) = @_; $self->set_new_node(1); } sub cb_seqstart { my ($self, $token) = @_; my $column = $token->{column}; $self->start_sequence($column); $self->set_new_node(1); } sub cb_seqitem { my ($self, $res) = @_; $self->set_new_node(1); } sub cb_take_quoted { my ($self, $token) = @_; my $subtokens = $token->{subtokens}; my $stack = $self->event_stack; my $info = { style => $subtokens->[0]->{value} eq '"' ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_SINGLE_QUOTED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; } sub cb_quoted_multiline { my ($self, $token) = @_; my $subtokens = $token->{subtokens}; my $stack = $self->event_stack; my $info = { style => $subtokens->[0]->{value} eq '"' ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_SINGLE_QUOTED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; $self->cb_send_scalar; } sub cb_take_quoted_key { my ($self, $token) = @_; $self->cb_take_quoted($token); $self->cb_send_mapkey; } sub cb_send_plain_multi { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; $self->cb_send_scalar; } sub cb_start_plain { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $stack }, [ scalar => $info ]; } sub cb_start_flowseq { my ($self, $token) = @_; $self->start_flow_sequence($token->{column}); } sub cb_start_flowmap { my ($self, $token) = @_; $self->start_flow_mapping($token->{column}); } sub cb_end_flowseq { my ($self, $res) = @_; $self->cb_send_scalar; $self->end_flow_sequence; $self->set_new_node(0); } sub cb_flow_comma { my ($self) = @_; my $event_types = $self->events; $self->set_new_node(0); if ($event_types->[-1] =~ m/^FLOWSEQ/) { $self->cb_send_scalar; $event_types->[-1] = $next_event{ $event_types->[-1] }; } } sub cb_flow_colon { my ($self) = @_; $self->set_new_node(1); } sub cb_empty_flow_mapkey { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_end_flowmap { my ($self, $res) = @_; $self->end_flow_mapping; $self->set_new_node(0); } sub cb_end_flowmap_empty { my ($self, $res) = @_; $self->cb_empty_flowmap_value; $self->end_flow_mapping; $self->set_new_node(0); } sub cb_flowkey_plain { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_flowkey_quoted { my ($self, $token) = @_; my $stack = $self->event_stack; my $subtokens = $token->{subtokens}; my $info = { style => $subtokens->[0]->{value} eq '"' ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_SINGLE_QUOTED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_empty_flowmap_key_value { my ($self, $token) = @_; $self->cb_empty_flow_mapkey($token); $self->cb_empty_flowmap_value; $self->cb_flow_comma; } sub cb_end_empty_flowmap_key_value { my ($self, $token) = @_; $self->cb_empty_flow_mapkey($token); $self->cb_empty_flowmap_value; $self->cb_flow_comma; $self->cb_end_flowmap; } sub cb_empty_flowmap_value { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->scalar_event($info); } sub cb_empty_flowseq_comma { my ($self, $token) = @_; $self->cb_empty_flowmap_value($token); $self->cb_flow_comma; } sub cb_empty_flowseq_end { my ($self, $token) = @_; $self->cb_empty_flowmap_value($token); $self->cb_end_flowseq; } sub cb_insert_map_alias { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_mapping($info->{offset}); $self->alias_event($info); $self->set_new_node(1); } sub cb_insert_map { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_mapping($info->{offset}); $self->scalar_event($info); $self->set_new_node(1); } sub cb_insert_implicit_flowseq_map { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_flow_mapping($info->{offset}, 1); $self->scalar_event($info); $self->set_new_node(1); } sub cb_insert_empty_implicit_flowseq_map { my ($self, $res) = @_; my $stack = $self->event_stack; my $scalar = pop @$stack; my $info = $scalar->[1]; $self->start_flow_mapping($info->{offset}, 1); $self->cb_empty_flowmap_value; $self->set_new_node(2); } sub cb_insert_empty_map { my ($self, $token) = @_; my $stack = $self->event_stack; my $info = { style => YAML_PLAIN_SCALAR_STYLE, value => '', offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } $self->start_mapping($info->{offset}); $self->scalar_event($info); $self->set_new_node(1); } sub cb_send_block_scalar { my ($self, $token) = @_; my $type = $token->{subtokens}->[0]->{value}; my $stack = $self->event_stack; my $info = { style => $type eq '|' ? YAML_LITERAL_SCALAR_STYLE : YAML_FOLDED_SCALAR_STYLE, value => $token->{value}, offset => $token->{column}, }; if (@$stack and $stack->[-1]->[0] eq 'properties') { $self->fetch_inline_properties($stack, $info); } push @{ $self->event_stack }, [ scalar => $info ]; $self->cb_send_scalar; } sub cb_end_document { my ($self, $token) = @_; $self->end_document(0); } sub cb_end_document_empty { my ($self, $token) = @_; $self->end_document(0); } sub cb_doc_start_implicit { my ($self, $token) = @_; $self->start_document(1); } sub cb_doc_start_explicit { my ($self, $token) = @_; $self->start_document(0); } sub cb_end_doc_start_document { my ($self, $token) = @_; $self->end_document(1); $self->start_document(0); } sub cb_tag_directive { my ($self, $token) = @_; my ($name, $tag_alias, $tag_url) = split ' ', $token->{value}; $self->tagmap->{ $tag_alias } = $tag_url; } sub cb_reserved_directive { } sub cb_set_yaml_version_directive { my ($self, $token) = @_; if ($self->yaml_version_directive) { croak "Found duplicate YAML directive"; } my ($version) = $token->{value} =~ m/^%YAML[ \t]+(1\.[12])/; $self->set_yaml_version($version); $self->set_yaml_version_directive(1); } 1; Reader.pm100644001750001750 301014161720075 15312 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP# ABSTRACT: Reader class for YAML::PP representing input data use strict; use warnings; package YAML::PP::Reader; our $VERSION = '0.031'; # 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; Dumper.pm100644001750001750 2024614161720075 15376 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Dumper; our $VERSION = '0.031'; # VERSION use Scalar::Util qw/ blessed refaddr reftype /; use YAML::PP; use YAML::PP::Emitter; use YAML::PP::Representer; use YAML::PP::Writer; use YAML::PP::Writer::File; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_ANY_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE YAML_BLOCK_MAPPING_STYLE YAML_BLOCK_SEQUENCE_STYLE /; sub new { my ($class, %args) = @_; my $header = delete $args{header}; $header = 1 unless defined $header; my $footer = delete $args{footer}; $footer = 0 unless defined $footer; my $version_directive = delete $args{version_directive}; my $preserve = delete $args{preserve}; my $schema = delete $args{schema} || YAML::PP->default_schema( boolean => 'perl', ); my $emitter = delete $args{emitter} || YAML::PP::Emitter->new; unless (blessed($emitter)) { $emitter = YAML::PP::Emitter->new( %$emitter ); } if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my $self = bless { representer => YAML::PP::Representer->new( schema => $schema, preserve => $preserve, ), version_directive => $version_directive, emitter => $emitter, seen => {}, anchors => {}, anchor_num => 0, header => $header, footer => $footer, }, $class; return $self; } sub clone { my ($self) = @_; my $clone = { representer => $self->representer->clone, emitter => $self->emitter->clone, version_directive => $self->version_directive, seen => {}, anchors => {}, anchor_num => 0, header => $self->header, footer => $self->footer, }; return bless $clone, ref $self; } sub init { my ($self) = @_; $self->{seen} = {}; $self->{anchors} = {}; $self->{anchor_num} = 0; } sub emitter { return $_[0]->{emitter} } sub representer { return $_[0]->{representer} } sub set_representer { $_[0]->{representer} = $_[1] } sub header { return $_[0]->{header} } sub footer { return $_[0]->{footer} } sub version_directive { return $_[0]->{version_directive} } sub dump { my ($self, @docs) = @_; $self->emitter->init; $self->emitter->stream_start_event({}); for my $i (0 .. $#docs) { my $header_implicit = ($i == 0 and not $self->header); my %args = ( implicit => $header_implicit, ); if ($self->version_directive) { my ($major, $minor) = split m/\./, $self->representer->schema->yaml_version; $args{version_directive} = { major => $major, minor => $minor }; } $self->emitter->document_start_event( \%args ); $self->init; $self->check_references($docs[ $i ]); $self->dump_node($docs[ $i ]); my $footer_implicit = (not $self->footer); $self->emitter->document_end_event({ implicit => $footer_implicit }); } $self->emitter->stream_end_event({}); my $output = $self->emitter->writer->output; $self->emitter->finish; return $output; } sub dump_node { my ($self, $value) = @_; my $node = { value => $value, }; if (ref $value) { my $seen = $self->{seen}; my $refaddr = refaddr $value; if ($seen->{ $refaddr } and $seen->{ $refaddr } > 1) { my $anchor = $self->{anchors}->{ $refaddr }; unless (defined $anchor) { if ($self->representer->preserve_alias) { if (ref $node->{value} eq 'YAML::PP::Preserve::Scalar') { if (defined $node->{value}->alias) { $node->{anchor} = $node->{value}->alias; $self->{anchors}->{ $refaddr } = $node->{value}->alias; } } elsif (reftype $node->{value} eq 'HASH') { if (my $tied = tied %{ $node->{value} } ) { if (defined $tied->{alias}) { $node->{anchor} = $tied->{alias}; $self->{anchors}->{ $refaddr } = $node->{anchor}; } } } elsif (reftype $node->{value} eq 'ARRAY') { if (my $tied = tied @{ $node->{value} } ) { if (defined $tied->{alias}) { $node->{anchor} = $tied->{alias}; $self->{anchors}->{ $refaddr } = $node->{anchor}; } } } } unless (defined $node->{anchor}) { my $num = ++$self->{anchor_num}; $self->{anchors}->{ $refaddr } = $num; $node->{anchor} = $num; } } else { $node->{value} = $anchor; $self->emit_node([ alias => $node ]); return; } } } $node = $self->representer->represent_node($node); $self->emit_node($node); } sub emit_node { my ($self, $item) = @_; my ($type, $node, %args) = @$item; if ($type eq 'alias') { $self->emitter->alias_event({ value => $node->{value} }); return; } if ($type eq 'mapping') { my $style = $args{style} || YAML_BLOCK_MAPPING_STYLE; # TODO if ($node->{items} and @{ $node->{items} } == 0) { # $style = YAML_FLOW_MAPPING_STYLE; } $self->emitter->mapping_start_event({ anchor => $node->{anchor}, style => $style, tag => $node->{tag}, }); for (@{ $node->{items} }) { $self->dump_node($_); } $self->emitter->mapping_end_event; return; } if ($type eq 'sequence') { my $style = $args{style} || YAML_BLOCK_SEQUENCE_STYLE; if (@{ $node->{items} } == 0) { # $style = YAML_FLOW_SEQUENCE_STYLE; } $self->emitter->sequence_start_event({ anchor => $node->{anchor}, style => $style, tag => $node->{tag}, }); for (@{ $node->{items} }) { $self->dump_node($_); } $self->emitter->sequence_end_event; return; } $self->emitter->scalar_event({ value => $node->{items}->[0], style => $node->{style}, anchor => $node->{anchor}, tag => $node->{tag}, }); } sub dump_string { my ($self, @docs) = @_; my $writer = YAML::PP::Writer->new; $self->emitter->set_writer($writer); my $output = $self->dump(@docs); return $output; } sub dump_file { my ($self, $file, @docs) = @_; my $writer = YAML::PP::Writer::File->new(output => $file); $self->emitter->set_writer($writer); my $output = $self->dump(@docs); return $output; } my %_reftypes = ( HASH => 1, ARRAY => 1, Regexp => 1, REGEXP => 1, CODE => 1, SCALAR => 1, REF => 1, GLOB => 1, ); sub check_references { my ($self, $doc) = @_; my $reftype = reftype $doc or return; my $seen = $self->{seen}; # check which references are used more than once if ($reftype eq 'SCALAR' and ref $doc eq $self->representer->schema->bool_class) { # JSON::PP and boolean.pm always return the same reference for booleans # Avoid printing *aliases in those case if (ref $doc eq 'boolean' or ref $doc eq 'JSON::PP::Boolean') { return; } } if (++$seen->{ refaddr $doc } > 1) { # seen already return; } unless ($_reftypes{ $reftype }) { die sprintf "Reference %s not implemented", $reftype; } if ($reftype eq 'HASH') { $self->check_references($doc->{ $_ }) for keys %$doc; } elsif ($reftype eq 'ARRAY') { $self->check_references($_) for @$doc; } elsif ($reftype eq 'REF') { $self->check_references($$doc); } } 1; Schema.pm100644001750001750 2543714161720075 15351 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Schema; use B; use Module::Load qw//; our $VERSION = '0.031'; # 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, glob => 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 (defined(my $glob = $args{glob})) { $representers->{glob} = { code => $args{code}, }; return; } if (my $undef = $args{undefined}) { $representers->{undef} = $undef; return; } } sub load_scalar { my ($self, $constructor, $event) = @_; my $tag = $event->{tag}; my $value = $event->{value}; my $resolvers = $self->resolvers; my $res; if ($tag) { $res = $resolvers->{tag}->{ $tag }; if (not $res and my $matches = $resolvers->{tags}) { for my $match (@$matches) { my ($re, $rule) = @$match; if ($tag =~ $re) { $res = $rule; last; } } } } else { $res = $resolvers->{value}; if ($event->{style} ne YAML_PLAIN_SCALAR_STYLE) { return $value; } } if (my $equals = $res->{equals}) { if (exists $equals->{ $value }) { my $res = $equals->{ $value }; if (ref $res eq 'CODE') { return $res->($constructor, $event); } return $res; } } if (my $regex = $res->{regex}) { for my $item (@$regex) { my ($re, $sub) = @$item; my @matches = $value =~ $re; if (@matches) { return $sub->($constructor, $event, \@matches); } } } if (my $catch_all = $res->{all}) { if (ref $catch_all eq 'CODE') { return $catch_all->($constructor, $event); } return $catch_all; } return $value; } sub create_sequence { my ($self, $constructor, $event) = @_; my $tag = $event->{tag}; my $data = []; my $on_data; my $resolvers = $self->resolvers->{sequence}; if ($tag) { if (my $equals = $resolvers->{tag}->{ $tag }) { my $on_create = $equals->{on_create}; $on_data = $equals->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } if (my $matches = $resolvers->{tags}) { for my $match (@$matches) { my ($re, $actions) = @$match; my $on_create = $actions->{on_create}; if ($tag =~ $re) { $on_data = $actions->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } } } } return ($data, $on_data); } sub create_mapping { my ($self, $constructor, $event) = @_; my $tag = $event->{tag}; my $data = {}; my $on_data; my $resolvers = $self->resolvers->{mapping}; if ($tag) { if (my $equals = $resolvers->{tag}->{ $tag }) { my $on_create = $equals->{on_create}; $on_data = $equals->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } if (my $matches = $resolvers->{tags}) { for my $match (@$matches) { my ($re, $actions) = @$match; my $on_create = $actions->{on_create}; if ($tag =~ $re) { $on_data = $actions->{on_data}; $on_create and $data = $on_create->($constructor, $event); return ($data, $on_data); } } } } return ($data, $on_data); } sub bool_jsonpp_true { JSON::PP::true() } sub bool_booleanpm_true { boolean::true() } sub bool_perl_true { 1 } sub bool_jsonpp_false { JSON::PP::false() } sub bool_booleanpm_false { boolean::false() } sub bool_perl_false { !1 } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema - Schema for YAML::PP Writer.pm100644001750001750 235014161720075 15372 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP# ABSTRACT: Writer class for YAML::PP representing output data use strict; use warnings; package YAML::PP::Writer; our $VERSION = '0.031'; # 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 Loader.pm100644001750001750 467214161720075 15335 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP# ABSTRACT: Load YAML into data with Parser and Constructor use strict; use warnings; package YAML::PP::Loader; our $VERSION = '0.031'; # 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 $duplicate_keys = delete $args{duplicate_keys}; my $schemas = delete $args{schemas}; $schemas ||= { '1.2' => YAML::PP->default_schema( boolean => 'perl', ) }; my $constructor = delete $args{constructor} || YAML::PP::Constructor->new( schemas => $schemas, cyclic_refs => $cyclic_refs, default_yaml_version => $default_yaml_version, preserve => $preserve, duplicate_keys => $duplicate_keys, ); my $parser = delete $args{parser}; unless ($parser) { $parser = YAML::PP::Parser->new( default_yaml_version => $default_yaml_version, ); } unless ($parser->receiver) { $parser->set_receiver($constructor); } if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } my $self = bless { parser => $parser, constructor => $constructor, }, $class; return $self; } sub clone { my ($self) = @_; my $clone = { parser => $self->parser->clone, constructor => $self->constructor->clone, }; bless $clone, ref $self; $clone->parser->set_receiver($clone->constructor); return $clone; } sub parser { return $_[0]->{parser} } sub constructor { return $_[0]->{constructor} } sub filename { my ($self) = @_; my $reader = $self->parser->reader; if ($reader->isa('YAML::PP::Reader::File')) { return $reader->input; } die "Reader is not a YAML::PP::Reader::File"; } sub load_string { my ($self, $yaml) = @_; $self->parser->set_reader(YAML::PP::Reader->new( input => $yaml )); $self->load(); } sub load_file { my ($self, $file) = @_; $self->parser->set_reader(YAML::PP::Reader::File->new( input => $file )); $self->load(); } sub load { my ($self) = @_; my $parser = $self->parser; my $constructor = $self->constructor; $constructor->init; $parser->parse(); my $docs = $constructor->docs; return wantarray ? @$docs : $docs->[0]; } 1; Render.pm100644001750001750 646114161720075 15344 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP# ABSTRACT: YAML::PP Rendering functions use strict; use warnings; package YAML::PP::Render; our $VERSION = '0.031'; # 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; 24.double-escapes.t100644001750001750 304214161720075 15477 0ustar00tinatina000000000000YAML-PP-0.031/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 014161720075 13663 5ustar00tinatina000000000000YAML-PP-0.031/t/lib/YAMLTest.pm100644001750001750 5130214161720075 15321 0ustar00tinatina000000000000YAML-PP-0.031/t/lib/YAML/PPpackage YAML::PP::Test; use strict; use warnings; use File::Basename qw/ dirname basename /; use Encode; use Test::More; use YAML::PP::Common qw/ YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE YAML_PLAIN_SCALAR_STYLE /; sub new { my ($class, %args) = @_; my $self = bless { stats => {}, %args, }, $class; my $id2tags = $self->get_tags; $self->{id2tags} = $id2tags; return $self; } sub get_tags { my ($self, %args) = @_; my %id_tags; my $dir = $self->{test_suite_dir} . "/tags"; return unless -d $dir; opendir my $dh, $dir or die $!; my @tags = grep { not m/^\./ } readdir $dh; for my $tag (sort @tags) { opendir my $dh, "$dir/$tag" or die $!; my @ids = grep { -l "$dir/$tag/$_" } readdir $dh; $id_tags{ $_ }->{ $tag } = 1 for @ids; closedir $dh; } closedir $dh; return \%id_tags; } sub get_tests { my ($self) = @_; my $test_suite_dir = $self->{test_suite_dir}; my $dir = $self->{dir}; my $tag = $self->{tag}; my $id2tags = $self->{id2tags}; my $valid = $self->{valid}; my $json = $self->{in_json}; my @dirs; if (-d $test_suite_dir) { opendir my $dh, $test_suite_dir or die $!; my @ids = grep { m/^[A-Z0-9]{4}\z/ } readdir $dh; @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; } if ($tag) { @ids = grep { $id2tags->{ $_ }->{ $tag }; } @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, $event, $info) = @_; push @events, YAML::PP::Common::event_to_test_suite($info, { flow => 1 }); }, ); eval { $parser->parse_string($testcase->{in_yaml}); }; my $err = $@; my $line = $parser->lexer->line; return { events => \@events, err => $err, parser => $parser, line => $line, }; } sub compare_parse_events { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $test_events = $testcase->{test_events}; my $exp_lines = $testcase->{linecount}; my @events = @{ $result->{events} }; $_ = encode_utf8 $_ for @events; my $ok = 0; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title (ERROR)"); } else { $ok = is_deeply(\@events, $test_events, "$id - $title"); } if ($ok) { push @{ $stats->{OK} }, $id; if (defined $exp_lines) { my $lines = $result->{line}; cmp_ok($lines, '==', $exp_lines, "$id - Line count $lines == $exp_lines"); } } else { push @{ $stats->{DIFF} }, $id unless $err; if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$yaml" unless $testcase->{todo}; diag "EVENTS:\n" . join '', map { "$_\n" } @$test_events; diag "GOT EVENTS:\n" . join '', map { "$_\n" } @events; } } } sub parse_tokens { my ($class, $testcase) = @_; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; }, ); eval { $parser->parse_string($testcase->{in_yaml}); }; my $err = $@; my $tokens = $parser->tokens; return { err => $err, tokens => $tokens, }; } sub compare_tokens { my ($self, $testcase, $result) = @_; my $id = $testcase->{id}; my $title = $testcase->{title}; my $yaml = $testcase->{in_yaml}; my $all_tokens = $result->{tokens}; my @yaml_lines = split /(?<=\n)/, $yaml; my $error; my $ok = 1; LINE: for my $i (0 .. $#yaml_lines) { my $line_number = $i + 1; # diag("============== Line $line_number"); my $line = $yaml_lines[ $i ]; my @tokens; TOKEN: while (@$all_tokens) { my $next = $all_tokens->[0]; if (my $sub = $next->{subtokens}) { shift @$all_tokens; unshift @$all_tokens, @$sub; next TOKEN; } if ($next->{line} < $line_number) { $error = { token => $next, msg => "Wrong line", }; $ok = 0; last LINE; } last if $next->{line} > $line_number; $next = shift @$all_tokens; push @tokens, $next; } my $column = 0; while (@tokens) { my $token = shift @tokens; my $token_column = $token->{column}; my $value = $token->{value}; if ($token->{orig}) { $value = $token->{orig}; } unless ($token->{column} == $column) { $ok = 0; $error = { token => $token, msg => "Wrong column", }; last LINE; } unless ($line =~ s/^\Q$value//) { $ok = 0; $error = { token => $token, msg => "Token does not match YAML", }; last LINE; } $column += length($value); } if (length $line) { $ok = 0; $error = { msg => "Line is longer than tokens", }; } } if (@$all_tokens) { $ok = 0; $error = { msg => "More tokens than YAML lines", }; } unless ($ok) { warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([$error], ['error']); diag($yaml); } ok($ok, "$id - Tokens match YAML"); } sub compare_invalid_parse_events { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $test_events = $testcase->{test_events}; my $ok = 0; if (not $err) { push @{ $stats->{OK} }, $id; ok(0, "$id - $title - should be invalid"); } else { push @{ $stats->{ERROR} }, $id; if (not $result->{events}) { $ok = ok(1, "$id - $title"); } else { $ok = is_deeply($result->{events}, $test_events, "$id - $title"); } } if ($ok) { } else { push @{ $stats->{DIFF} }, $id; if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$yaml" unless $testcase->{todo}; diag "EVENTS:\n" . join '', map { "$_\n" } @$test_events; diag "GOT EVENTS:\n" . join '', map { "$_\n" } @{ $result->{events} }; } } } sub load_json { my ($self, $testcase) = @_; my $ypp = YAML::PP->new(boolean => 'JSON::PP', schema => [qw/ Core /]); my @docs = eval { $ypp->load_string($testcase->{in_yaml}) }; my $err = $@; return { data => \@docs, err => $err, }; } sub compare_load_json { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $exp_json = $testcase->{in_json}; my $docs = $result->{data}; # input can contain multiple JSON my @exp_json = split m/^(?=true|false|null|[0-9"\{\[])/m, $exp_json; $exp_json = ''; my $coder = JSON::PP->new->ascii->pretty->allow_nonref->canonical; for my $exp (@exp_json) { my $data = $coder->decode($exp); $exp = $coder->encode($data); $exp_json .= $exp; } my $json = ''; for my $doc (@$docs) { my $j = $coder->encode($doc); $json .= $j; } my $ok = 0; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title - ERROR"); } else { $ok = cmp_ok($json, 'eq', $exp_json, "$id - load -> JSON equals expected JSON"); if ($ok) { push @{ $stats->{OK} }, $id; } else { push @{ $stats->{DIFF} }, $id; } } unless ($ok) { if ($testcase->{todo}) { push @{ $stats->{TODO} }, $id; } if (not $testcase->{todo} or $ENV{YAML_PP_TRACE}) { diag "YAML:\n$yaml" unless $testcase->{todo}; diag "JSON:\n" . $exp_json; diag "GOT JSON:\n" . $json; } } } sub dump_yaml { my ($self, $testcase) = @_; my $id = $testcase->{id}; my $ypp = YAML::PP->new( boolean => 'JSON::PP', duplicate_keys => 1 ); my @docs = eval { $ypp->load_string($testcase->{in_yaml}) }; my $err = $@; my $result = {}; if ($err) { diag "ERROR loading $id"; $result->{err} = $err; return $result; } my $out_yaml; eval { $out_yaml = $ypp->dump_string(@docs); }; $err = $@; if ($err) { diag "ERROR dumping $id"; $result->{err} = $err; return $result; } $result->{dump_yaml} = $out_yaml; my @reload = eval { $ypp->load_string($out_yaml) }; $err = $@; if ($err) { diag "ERROR reloading $id"; $result->{err} = $err; return $result; } $result->{data} = \@docs; $result->{data_reload} = \@reload; 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, $args) = @_; my $flow = $args->{flow} ||= 'no'; my $indent = $args->{indent} ||= 2; my $id = $testcase->{id}; my $exp_yaml = $testcase->{emit_yaml}; my @events; my $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; push @events, [@args]; }, ); eval { $parser->parse_string($testcase->{in_yaml}); }; my $err = $@; my $result = {}; if ($err) { diag "ERROR parsing $id\n$err"; $result->{err} = $err; return $result; } my $emit_yaml = $self->_emit_events(\@events, $args); my @reparse_events; my @expected_reparse_events; my @ev; my @emit_events; $parser = YAML::PP::Parser->new( receiver => sub { my ($self, @args) = @_; my ($type, $info) = @args; push @emit_events, $info; push @ev, YAML::PP::Common::event_to_test_suite($info, { flow => $flow eq 'keep' }); }, ); eval { $parser->parse_string($emit_yaml); }; $err = $@; if ($err) { diag "ERROR parsing $id\n$err"; diag $emit_yaml; $result->{err} = $err; return $result; } @reparse_events = @ev; if ($flow eq 'keep') { @expected_reparse_events = map { YAML::PP::Common::event_to_test_suite($_->[1], { flow => 1 }) } @events; } elsif ($flow eq 'no') { @ev = (); eval { $parser->parse_string($exp_yaml); }; @expected_reparse_events = @ev; } else { @expected_reparse_events = map { if ($_->[1]->{name} eq 'sequence_start_event') { $_->[1]->{style} = YAML_FLOW_SEQUENCE_STYLE; } elsif ($_->[1]->{name} eq 'mapping_start_event') { $_->[1]->{style} = YAML_FLOW_MAPPING_STYLE; } elsif ($_->[1]->{name} eq 'scalar_event') { $_->[1]->{style} = YAML_PLAIN_SCALAR_STYLE; } YAML::PP::Common::event_to_test_suite($_->[1], { flow => 1 }); } @events; @reparse_events = map { if ($_->{name} eq 'scalar_event') { $_->{style} = YAML_PLAIN_SCALAR_STYLE; } YAML::PP::Common::event_to_test_suite($_, { flow => 1 }); } @emit_events; } $result = { expected_events => \@expected_reparse_events, reparse_events => \@reparse_events, }; # note "========= EMIT:\n$emit_yaml"; $result->{emit_yaml} = $emit_yaml if $flow eq 'no'; return $result; } sub _emit_events { my ($testsuite, $events, $args) = @_; my $indent = $args->{indent} ||= 2; my $writer = YAML::PP::Writer->new; my $emitter = YAML::PP::Emitter->new( indent => $indent ); $emitter->set_writer($writer); $emitter->init; for my $event (@$events) { my ($type, $info) = @$event; delete $info->{version_directive}; if ($type eq 'sequence_start_event' or $type eq 'mapping_start_event') { if ($args->{flow} eq 'no') { delete $info->{style}; } elsif ($args->{flow} eq 'keep') { delete $info->{style} if $args->{flow} eq 'no'; } elsif ($args->{flow} eq 'yes') { if ($type eq 'sequence_start_event') { $info->{style} = YAML_FLOW_SEQUENCE_STYLE; } else { $info->{style} = YAML_FLOW_MAPPING_STYLE; } } } $emitter->$type($info); } my $yaml = $emitter->writer->output; return $yaml; } sub compare_emit_yaml { my ($self, $testcase, $result) = @_; my $stats = $self->{stats}; my $id = $testcase->{id}; my $title = $testcase->{title}; my $err = $result->{err}; my $yaml = $testcase->{in_yaml}; my $exp_emit_yaml = $testcase->{emit_yaml}; my $emit_yaml = $result->{emit_yaml}; my $exp_events = $result->{expected_events}; my $reparse_events = $result->{reparse_events}; if ($err) { push @{ $stats->{ERROR} }, $id; ok(0, "$id - $title - ERROR"); return; } $_ = encode_utf8 $_ for (@$reparse_events, @$exp_events); my $same_events = is_deeply($reparse_events, $exp_events, "$id - $title - Events from re-parsing are the same"); if ($same_events) { push @{ $stats->{SAME_EVENTS} }, $id; if (defined $emit_yaml) { $_ = encode_utf8 $_ for ($emit_yaml, $exp_emit_yaml); my $same_yaml = cmp_ok($emit_yaml, 'eq', $exp_emit_yaml, "$id - $title - Emit events"); if ($same_yaml) { push @{ $stats->{SAME_YAML} }, $id; } else { local $Data::Dumper::Useqq = 1; diag(' ' . Data::Dumper->Dump([$emit_yaml], ['emit_yaml'])); diag(Data::Dumper->Dump([$exp_emit_yaml], ['exp_emit_yaml'])); push @{ $stats->{DIFF_YAML} }, $id; } } } else { push @{ $stats->{DIFF_EVENTS} }, $id; } } 1; out.yaml100644001750001750 45314161720075 15443 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v024- !!str : second key: - !!str : - !!str : - !!str : - !!str : - &anchor1 : second key: - &anchor2 : - &anchor3 : - &anchor4 : - &anchor5 : - &anchor6 !!str : - &anchor7 !!str : - &anchor8 !!str : - &anchor9 !!str : - &anchor10 !!str : - &anchor11 !!str : - &anchor12 !!str : - &anchor13 !!str : out.yaml100644001750001750 3214161720075 15412 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v031--- a ... --- b ... --- c out.yaml100644001750001750 3114161720075 15412 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v023- [] - [] - [] - [] - [] out.yaml100644001750001750 614161720075 15372 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v030--- a out.yaml100644001750001750 7214161720075 15421 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v025- : - : - : - : - : - : - : key: value - : key: value out.yaml100644001750001750 11114161720075 15426 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v020--- ? x: y : z a: b --- top1: ? a: 1 : b: - c x: y top2: value out.yaml100644001750001750 7514161720075 15427 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v019--- mapping: ? > key : : value ? - a - b : out.yaml100644001750001750 17014161720075 15443 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v028- "1 leading \ttab" - "2 leading \ttab" - "3 leading tab" - "4 leading \t tab" - "5 leading \t tab" - "6 leading tab" out.yaml100644001750001750 46114161720075 15440 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v022- - !!str - second value - - !!str - - !!str - - !!str - - !!str - - &anchor1 - second value - - &anchor2 - - &anchor3 - - &anchor4 - - &anchor5 - - &anchor6 !!str - - &anchor7 !!str - - &anchor8 !!str - - &anchor9 !!str - - &anchor10 !!str - - &anchor11 !!str - - &anchor12 !!str - - &anchor13 !!str out.yaml100644001750001750 17214161720075 15444 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v027- "1 trailing\t tab" - "2 trailing\t tab" - "3 trailing\t tab" - "4 trailing\t tab" - "5 trailing tab" - "6 trailing tab" out.yaml100644001750001750 2214161720075 15416 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v009a: - 1 - 2 - b: 3 out.yaml100644001750001750 514161720075 15373 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v032- -1 out.yaml100644001750001750 614161720075 15402 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v029--- a out.yaml100644001750001750 6614161720075 15425 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v026- "1 inline\ttab" - "2 inline\ttab" - "3 inline\ttab" out.yaml100644001750001750 4714161720075 15417 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v021- one: |2 two three: | four test-suite-html.pl100755001750001750 2255014161720075 16140 0ustar00tinatina000000000000YAML-PP-0.031/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; Emitter.pm100644001750001750 7056514161720075 15564 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Emitter; our $VERSION = '0.031'; # VERSION use Data::Dumper; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE /; use constant DEBUG => $ENV{YAML_PP_EMIT_DEBUG} ? 1 : 0; use constant DEFAULT_WIDTH => 80; sub new { my ($class, %args) = @_; my $self = bless { indent => $args{indent} || 2, writer => $args{writer}, width => $args{width} || DEFAULT_WIDTH, }, $class; $self->init; return $self; } sub clone { my ($self) = @_; my $clone = { indent => $self->indent, }; return bless $clone, ref $self; } sub event_stack { return $_[0]->{event_stack} } sub set_event_stack { $_[0]->{event_stack} = $_[1] } sub indent { return $_[0]->{indent} } sub width { return $_[0]->{width} } sub line { return $_[0]->{line} } sub column { return $_[0]->{column} } sub set_indent { $_[0]->{indent} = $_[1] } sub writer { $_[0]->{writer} } sub set_writer { $_[0]->{writer} = $_[1] } sub tagmap { return $_[0]->{tagmap} } sub set_tagmap { $_[0]->{tagmap} = $_[1] } sub init { my ($self) = @_; unless ($self->writer) { $self->set_writer(YAML::PP::Writer->new); } $self->set_tagmap({ 'tag:yaml.org,2002:' => '!!', }); $self->{open_ended} = 0; $self->{line} = 0; $self->{column} = 0; $self->writer->init; } sub mapping_start_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ mapping_start_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $new_indent = $indent; my $yaml = ''; my $props = ''; my $anchor = $info->{anchor}; my $tag = $info->{tag}; if (defined $anchor) { $anchor = "&$anchor"; } if (defined $tag) { $tag = $self->emit_tag('map', $tag); } $props = join ' ', grep defined, ($anchor, $tag); my $flow = $last->{flow} || 0; $flow++ if ($info->{style} || 0) eq YAML_FLOW_MAPPING_STYLE; my $newline = 0; if ($flow > 1) { if ($last->{type} eq 'SEQ') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "["; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAP') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "{"; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die "Should not happen (index 0 in MAPVALUE)"; } $yaml .= ": "; } if ($props) { $yaml .= " $props "; } $new_indent .= ' ' x $self->indent; } else { if ($last->{type} eq 'DOC') { $newline = $last->{newline}; } else { if ($last->{newline}) { $yaml .= "\n"; $last->{column} = 0; } if ($last->{type} eq 'MAPVALUE') { $new_indent .= ' ' x $self->indent; $newline = 1; } else { $new_indent = $indent; if (not $props and $self->indent == 1) { $new_indent .= ' ' x 2; } else { $new_indent .= ' ' x $self->indent; } if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($last->{type} eq 'SEQ') { $yaml .= '-'; } elsif ($last->{type} eq 'MAP') { $yaml .= "?"; $last->{type} = 'COMPLEX'; } elsif ($last->{type} eq 'COMPLEXVALUE') { $yaml .= ":"; } else { die "Should not happen ($last->{type} in mapping_start)"; } $last->{column} = 1; } $last->{newline} = 0; } if ($props) { $yaml .= $last->{column} ? ' ' : $indent; $yaml .= $props; $newline = 1; } } $self->_write($yaml); my $new_info = { index => 0, indent => $new_indent, info => $info, newline => $newline, column => $self->column, flow => $flow, }; $new_info->{type} = 'MAP'; push @{ $stack }, $new_info; $last->{index}++; $self->{open_ended} = 0; } sub mapping_end_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ mapping_end_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = pop @{ $stack }; if ($last->{index} == 0) { my $indent = $last->{indent}; my $zero_indent = $last->{zero_indent}; if ($last->{zero_indent}) { $indent .= ' ' x $self->indent; } if ($self->column) { $self->_write(" {}\n"); } else { $self->_write("$indent\{}\n"); } } elsif ($last->{flow}) { my $yaml = "}"; if ($last->{flow} == 1) { $yaml .= "\n"; } $self->_write("$yaml"); } $last = $stack->[-1]; $last->{column} = $self->column; if ($last->{type} eq 'SEQ') { } elsif ($last->{type} eq 'MAP') { $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'COMPLEX') { $last->{type} = 'COMPLEXVALUE'; } elsif ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; } } sub sequence_start_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ sequence_start_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $new_indent = $indent; my $yaml = ''; my $props = ''; my $anchor = $info->{anchor}; my $tag = $info->{tag}; if (defined $anchor) { $anchor = "&$anchor"; } if (defined $tag) { $tag = $self->emit_tag('seq', $tag); } $props = join ' ', grep defined, ($anchor, $tag); my $flow = $last->{flow} || 0; $flow++ if $flow or ($info->{style} || 0) eq YAML_FLOW_SEQUENCE_STYLE; my $newline = 0; my $zero_indent = 0; if ($flow > 1) { if ($last->{type} eq 'SEQ') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "["; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAP') { if ($last->{newline}) { $yaml .= ' '; } if ($last->{index} == 0) { $yaml .= "{"; } else { $yaml .= ","; } } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die "Should not happen (index 0 in MAPVALUE)"; } $yaml .= ": "; } if ($props) { $yaml .= " $props "; } $new_indent .= ' ' x $self->indent; } else { if ($last->{type} eq 'DOC') { $newline = $last->{newline}; } else { if ($last->{newline}) { $yaml .= "\n"; $last->{column} = 0; } if ($last->{type} eq 'MAPVALUE') { $zero_indent = 1; $newline = 1; } else { if (not $props and $self->indent == 1) { $new_indent .= ' ' x 2; } else { $new_indent .= ' ' x $self->indent; } if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($last->{type} eq 'SEQ') { $yaml .= "-"; } elsif ($last->{type} eq 'MAP') { $last->{type} = 'COMPLEX'; $zero_indent = 1; $yaml .= "?"; } elsif ($last->{type} eq 'COMPLEXVALUE') { $yaml .= ":"; $zero_indent = 1; } else { die "Should not happen ($last->{type} in sequence_start)"; } $last->{column} = 1; } $last->{newline} = 0; } if ($props) { $yaml .= $last->{column} ? ' ' : $indent; $yaml .= $props; $newline = 1; } } $self->_write($yaml); $last->{index}++; my $new_info = { index => 0, indent => $new_indent, info => $info, zero_indent => $zero_indent, newline => $newline, column => $self->column, flow => $flow, }; $new_info->{type} = 'SEQ'; push @{ $stack }, $new_info; $self->{open_ended} = 0; } sub sequence_end_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ sequence_end_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = pop @{ $stack }; if ($last->{index} == 0) { my $indent = $last->{indent}; my $zero_indent = $last->{zero_indent}; if ($last->{zero_indent}) { $indent .= ' ' x $self->indent; } my $yaml .= $self->column ? ' ' : $indent; $yaml .= "[]"; if ($last->{flow} < 2) { $yaml .= "\n"; } $self->_write($yaml); } elsif ($last->{flow}) { my $yaml = "]"; if ($last->{flow} == 1) { $yaml .= "\n"; } $self->_write($yaml); } $last = $stack->[-1]; $last->{column} = $self->column; if ($last->{type} eq 'SEQ') { } elsif ($last->{type} eq 'MAP') { $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'COMPLEX') { $last->{type} = 'COMPLEXVALUE'; } elsif ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; } } my %forbidden_first = (qw/ ! 1 & 1 * 1 { 1 } 1 [ 1 ] 1 | 1 > 1 @ 1 ` 1 " 1 ' 1 /, '#' => 1, '%' => 1, ',' => 1, " " => 1); my %forbidden_first_plus_space = (qw/ ? 1 - 1 : 1 /); my %control = ( "\x00" => '\0', "\x01" => '\x01', "\x02" => '\x02', "\x03" => '\x03', "\x04" => '\x04', "\x05" => '\x05', "\x06" => '\x06', "\x07" => '\a', "\x08" => '\b', "\x0b" => '\v', "\x0c" => '\f', "\x0e" => '\x0e', "\x0f" => '\x0f', "\x10" => '\x10', "\x11" => '\x11', "\x12" => '\x12', "\x13" => '\x13', "\x14" => '\x14', "\x15" => '\x15', "\x16" => '\x16', "\x17" => '\x17', "\x18" => '\x18', "\x19" => '\x19', "\x1a" => '\x1a', "\x1b" => '\e', "\x1c" => '\x1c', "\x1d" => '\x1d', "\x1e" => '\x1e', "\x1f" => '\x1f', "\x7f" => '\x7f', "\x80" => '\x80', "\x81" => '\x81', "\x82" => '\x82', "\x83" => '\x83', "\x84" => '\x84', "\x86" => '\x86', "\x87" => '\x87', "\x88" => '\x88', "\x89" => '\x89', "\x8a" => '\x8a', "\x8b" => '\x8b', "\x8c" => '\x8c', "\x8d" => '\x8d', "\x8e" => '\x8e', "\x8f" => '\x8f', "\x90" => '\x90', "\x91" => '\x91', "\x92" => '\x92', "\x93" => '\x93', "\x94" => '\x94', "\x95" => '\x95', "\x96" => '\x96', "\x97" => '\x97', "\x98" => '\x98', "\x99" => '\x99', "\x9a" => '\x9a', "\x9b" => '\x9b', "\x9c" => '\x9c', "\x9d" => '\x9d', "\x9e" => '\x9e', "\x9f" => '\x9f', "\x{2029}" => '\P', "\x{2028}" => '\L', "\x85" => '\N', "\xa0" => '\_', ); my $control_re = '\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\x84\x86-\x9f\x{d800}-\x{dfff}\x{fffe}\x{ffff}\x{2028}\x{2029}\x85\xa0'; my %to_escape = ( "\n" => '\n', "\t" => '\t', "\r" => '\r', '\\' => '\\\\', '"' => '\\"', %control, ); my $escape_re = $control_re . '\n\t\r'; my $escape_re_without_lb = $control_re . '\t\r'; sub scalar_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ scalar_event\n"; my ($self, $info) = @_; my $stack = $self->event_stack; my $last = $stack->[-1]; my $indent = $last->{indent}; my $value = $info->{value}; my $flow = $last->{flow}; my $props = ''; my $anchor = $info->{anchor}; my $tag = $info->{tag}; if (defined $anchor) { $anchor = "&$anchor"; } if (defined $tag) { $tag = $self->emit_tag('scalar', $tag); } $props = join ' ', grep defined, ($anchor, $tag); my $style = $info->{style}; DEBUG and local $Data::Dumper::Useqq = 1; $value = '' unless defined $value; my $first = substr($value, 0, 1); if ($value eq '') { if ($flow and $last->{type} ne 'MAPVALUE' and $last->{type} ne 'MAP') { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif (not $style) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } # no control characters anywhere elsif ($value =~ m/[$control_re]/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } $style ||= YAML_PLAIN_SCALAR_STYLE; if ($style == YAML_SINGLE_QUOTED_SCALAR_STYLE) { if ($value =~ m/ \n/ or $value =~ m/\n / or $value =~ m/^\n/ or $value =~ m/\n$/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value eq "\n") { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } } elsif ($style == YAML_LITERAL_SCALAR_STYLE or $style == YAML_FOLDED_SCALAR_STYLE) { if ($value eq '') { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($flow) { # no block scalars in flow if ($value =~ tr/\n//) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } else { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } } elsif ($style == YAML_PLAIN_SCALAR_STYLE) { if (not length $value) { } elsif ($value =~ m/[$escape_re_without_lb]/) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value eq "\n") { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value !~ tr/ //c) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value !~ tr/ \n//c) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ tr/\n//) { $style = $flow ? YAML_DOUBLE_QUOTED_SCALAR_STYLE : YAML_LITERAL_SCALAR_STYLE; } elsif ($forbidden_first{ $first }) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($flow and $value =~ tr/,[]{}//) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif (substr($value, 0, 3) =~ m/^(?:---|\.\.\.)/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/: /) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/ #/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/[: \t]\z/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($value =~ m/[^\x20-\x3A\x3B-\x7E\x85\xA0-\x{D7FF}\x{E000}-\x{FEFE}\x{FF00}-\x{FFFD}\x{10000}-\x{10FFFF}]/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } elsif ($forbidden_first_plus_space{ $first }) { if (length ($value) == 1 or substr($value, 1, 1) =~ m/^\s/) { $style = YAML_SINGLE_QUOTED_SCALAR_STYLE; } } } if ($style == YAML_SINGLE_QUOTED_SCALAR_STYLE and not $info->{style}) { if ($value =~ tr/'// and $value !~ tr/"//) { $style = YAML_DOUBLE_QUOTED_SCALAR_STYLE; } } my $open_ended = 0; if ($style == YAML_PLAIN_SCALAR_STYLE) { $value =~ s/\n/\n\n/g; } elsif ($style == YAML_SINGLE_QUOTED_SCALAR_STYLE) { my $new_indent = $last->{indent} . (' ' x $self->indent); $value =~ s/(\n+)/"\n" x (1 + (length $1))/eg; my @lines = split m/\n/, $value, -1; if (@lines > 1) { for my $line (@lines[1 .. $#lines]) { $line = $new_indent . $line if length $line; } } $value = join "\n", @lines; $value =~ s/'/''/g; $value = "'" . $value . "'"; } elsif ($style == YAML_LITERAL_SCALAR_STYLE) { DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$value], ['value']); my $indicators = ''; if ($value =~ m/\A\n* +/) { $indicators .= $self->indent; } my $indent = $indent . ' ' x $self->indent; if ($value !~ m/\n\z/) { $indicators .= '-'; $value .= "\n"; } elsif ($value =~ m/(\n|\A)\n\z/) { $indicators .= '+'; $open_ended = 1; } $value =~ s/^(?=.)/$indent/gm; $value = "|$indicators\n$value"; } elsif ($style == YAML_FOLDED_SCALAR_STYLE) { DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\$value], ['value']); my @lines = split /\n/, $value, -1; DEBUG and warn __PACKAGE__.':'.__LINE__.$".Data::Dumper->Dump([\@lines], ['lines']); my $eol = 0; my $indicators = ''; if ($value =~ m/\A\n* +/) { $indicators .= $self->indent; } my $indent = $indent . ' ' x $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 == YAML_LITERAL_SCALAR_STYLE or $style == YAML_FOLDED_SCALAR_STYLE); my $newline = 0; if ($flow) { $indent = 0; if ($props and not length $value) { $pvalue .= ' '; } if ($last->{type} eq 'SEQ') { if ($last->{index} == 0) { if ($self->column) { $yaml .= ' '; } $yaml .= "["; } else { $yaml .= ", "; } } elsif ($last->{type} eq 'MAP') { if ($last->{index} == 0) { if ($self->column) { $yaml .= ' '; } $yaml .= "{"; } else { $yaml .= ", "; } $last->{type} = 'MAPVALUE'; } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die "Should not happen (index 0 in MAPVALUE)"; } $yaml .= ": "; $last->{type} = 'MAP'; } if ($self->column + length $pvalue > $self->width) { $yaml .= "\n"; $yaml .= $last->{indent}; $yaml .= ' ' x $self->indent; } $yaml .= $pvalue; } else { if ($last->{type} eq 'MAP' or $last->{type} eq 'SEQ') { if ($last->{index} == 0 and $last->{newline}) { $yaml .= "\n"; $last->{column} = 0; $last->{newline} = 0; } } my $space = ' '; if ($last->{type} eq 'MAP') { if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($props and not length $value) { $pvalue .= ' '; } my $new_event = 'MAPVALUE'; $last->{type} = $new_event; if ($multiline) { # oops, a complex key $yaml .= "? "; $new_event = 'COMPLEXVALUE'; $last->{type} = $new_event; } if (not $multiline) { $pvalue .= ":"; } } else { if ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'DOC') { } else { if ($last->{column}) { my $space = $self->indent > 1 ? ' ' x ($self->indent - 1) : ' '; $yaml .= $space; } else { $yaml .= $indent; } if ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; $yaml .= ":"; } elsif ($last->{type} eq 'SEQ') { $yaml .= "-"; } else { die "Should not happen ($last->{type} in scalar_event)"; } $last->{column} = 1; } if (length $pvalue) { if ($last->{column}) { $pvalue = "$space$pvalue"; } } if (not $multiline) { $pvalue .= "\n"; } } $yaml .= $pvalue; } $last->{index}++; $last->{newline} = $newline; $self->_write($yaml); $last->{column} = $self->column; $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 $flow = $last->{flow}; my $alias = '*' . $info->{value}; my $yaml = ''; if ($last->{type} eq 'MAP' or $last->{type} eq 'SEQ') { if ($last->{index} == 0 and $last->{newline}) { $yaml .= "\n"; $last->{column} = 0; $last->{newline} = 0; } } $yaml .= $last->{column} ? ' ' : $indent; if ($flow) { my $space = ''; if ($last->{type} eq 'SEQ') { if ($last->{index} == 0) { if ($flow == 1) { $yaml .= ' '; } $yaml .= "["; } else { $yaml .= ", "; } } elsif ($last->{type} eq 'MAP') { if ($last->{index} == 0) { if ($flow == 1) { $yaml .= ' '; } $yaml .= "{"; } else { $yaml .= ", "; } $last->{type} = 'MAPVALUE'; $space = ' '; } elsif ($last->{type} eq 'MAPVALUE') { if ($last->{index} == 0) { die 23; if ($flow == 1) { $yaml .= ' '; } $yaml .= "{"; } else { $yaml .= ": "; } $last->{type} = 'MAP'; } $yaml .= "$alias$space"; } else { if ($last->{type} eq 'MAP') { $yaml .= "$alias :"; $last->{type} = 'MAPVALUE'; } else { if ($last->{type} eq 'MAPVALUE') { $last->{type} = 'MAP'; } elsif ($last->{type} eq 'DOC') { # TODO an alias at document level isn't actually valid } else { if ($last->{type} eq 'COMPLEXVALUE') { $last->{type} = 'MAP'; $yaml .= ": "; } elsif ($last->{type} eq 'COMPLEX') { $yaml .= ": "; } elsif ($last->{type} eq 'SEQ') { $yaml .= "- "; } else { die "Unexpected"; } } $yaml .= "$alias\n"; } } $self->_write("$yaml"); $last->{index}++; $last->{column} = $self->column; $self->{open_ended} = 0; } sub document_start_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ document_start_event\n"; my ($self, $info) = @_; my $newline = 0; my $implicit = $info->{implicit}; if ($info->{version_directive}) { if ($self->{open_ended}) { $self->_write("...\n"); } $self->_write("%YAML $info->{version_directive}->{major}.$info->{version_directive}->{minor}\n"); $self->{open_ended} = 0; $implicit = 0; # we need --- } unless ($implicit) { $newline = 1; $self->_write("---"); } $self->set_event_stack([ { type => 'DOC', index => 0, indent => '', info => $info, newline => $newline, column => $self->column, } ]); } sub document_end_event { DEBUG and warn __PACKAGE__.':'.__LINE__.": +++ document_end_event\n"; my ($self, $info) = @_; $self->set_event_stack([]); if ($self->{open_ended} or not $info->{implicit}) { $self->_write("...\n"); $self->{open_ended} = 0; } else { $self->{open_ended} = 1; } } sub stream_start_event { } sub stream_end_event { } sub emit_tag { my ($self, $type, $tag) = @_; my $map = $self->tagmap; for my $key (sort keys %$map) { if ($tag =~ m/^\Q$key\E(.*)/) { $tag = $map->{ $key } . $1; return $tag; } } if ($tag =~ m/^(!.*)/) { $tag = "$1"; } else { $tag = "!<$tag>"; } return $tag; } sub finish { my ($self) = @_; $self->writer->finish; } sub _write { my ($self, $yaml) = @_; return unless length $yaml; my @lines = split m/\n/, $yaml, -1; my $newlines = @lines - 1; $self->{line} += $newlines; if (length $lines[-1]) { if ($newlines) { $self->{column} = length $lines[-1]; } else { $self->{column} += length $lines[-1]; } } else { $self->{column} = 0; } $self->writer->write($yaml); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Emitter - Emitting events =head1 SYNOPSIS my $emitter = YAML::PP::Emitter->new( indent => 4, ); $emitter->init; $emitter->stream_start_event; $emitter->document_start_event({ implicit => 1 }); $emitter->sequence_start_event; $emitter->scalar_event({ value => $input, style => $style }); $emitter->sequence_end_event; $emitter->document_end_event({ implicit => 1 }); $emitter->stream_end_event; my $yaml = $emitter->writer->output; $emitter->finish; =head1 DESCRIPTION The emitter emits events to YAML. It provides methods for each event type. The arguments are mostly the same as the events from L. =head1 METHODS =over =item new my $emitter = YAML::PP::Emitter->new( indent => 4, ); Constructor. Currently takes these options: =over =item indent =item writer =back =item stream_start_event, stream_end_event, document_start_event, document_end_event, sequence_start_event, sequence_end_event, mapping_start_event, mapping_end_event, scalar_event, alias_event =item indent, set_indent Getter/setter for number of indentation spaces. TODO: Currently sequences are always zero-indented. =item writer, set_writer Getter/setter for the writer object. By default L. You can pass your own writer if you want to output the resulting YAML yourself. =item init Initialize =item finish =back =cut Grammar.pm100644001750001750 13607314161720075 15556 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Grammar; our $VERSION = '0.031'; # VERSION use base 'Exporter'; our @EXPORT_OK = qw/ $GRAMMAR /; our $GRAMMAR = {}; # START OF GRAMMAR INLINE # DO NOT CHANGE THIS # This grammar is automatically generated from etc/grammar.yaml $GRAMMAR = { 'DIRECTIVE' => { 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_doc_start_explicit' }, 'EOL' => { 'new' => 'DIRECTIVE' }, 'RESERVED_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_reserved_directive' }, 'TAG_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_tag_directive' }, 'YAML_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_set_yaml_version_directive' } }, 'DOCUMENT_END' => { 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'DOCUMENT_END' } }, 'END_FLOW' => { 'EOL' => { 'match' => 'cb_end_outer_flow', 'return' => 1 } }, 'FLOWMAP' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'NEWFLOWMAP_ANCHOR' }, 'EOL' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' }, 'WS' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' }, 'match' => 'cb_anchor' }, 'COLON' => { 'EOL' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'DEFAULT' => { 'new' => 'FLOWMAP_CONTENT' }, 'EOL' => { 'new' => 'FLOWMAP' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap', 'return' => 1 }, 'TAG' => { 'DEFAULT' => { 'new' => 'NEWFLOWMAP_TAG' }, 'EOL' => { 'new' => 'NEWFLOWMAP_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWMAP_TAG_SPC' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'FLOWMAP' } }, 'FLOWMAP_CONTENT' => { 'ALIAS' => { 'match' => 'cb_send_alias', 'return' => 1 }, 'COLON' => { 'EOL' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'match' => 'cb_flowkey_plain', 'return' => 1 }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'return' => 1 }, 'QUOTED' => { 'match' => 'cb_flowkey_quoted', 'return' => 1 }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'return' => 1 } }, 'FLOWMAP_EMPTYKEY' => { 'FLOWMAP_END' => { 'match' => 'cb_end_empty_flowmap_key_value', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_key_value', 'return' => 1 } }, 'FLOWMAP_EXPLICIT_KEY' => { 'DEFAULT' => { 'new' => 'FLOWMAP' }, 'EOL' => { 'new' => 'FLOWMAP_EXPLICIT_KEY' }, 'FLOWMAP_END' => { 'match' => 'cb_end_empty_flowmap_key_value', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_key_value', 'return' => 1 }, 'WS' => { 'new' => 'FLOWMAP_EXPLICIT_KEY' } }, 'FLOWMAP_PROPS' => { 'COLON' => { 'EOL' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_empty_flow_mapkey', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_END' => { 'match' => 'cb_end_empty_flowmap_key_value', 'return' => 1 }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_key_value', 'return' => 1 }, 'PLAIN' => { 'match' => 'cb_flowkey_plain', 'return' => 1 }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'return' => 1 }, 'QUOTED' => { 'match' => 'cb_flowkey_quoted', 'return' => 1 }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'return' => 1 } }, 'FLOWSEQ' => { 'ALIAS' => { 'match' => 'cb_send_flow_alias', 'new' => 'FLOWSEQ_NEXT' }, 'COLON' => { 'EOL' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'new' => 'FLOWSEQ_NEXT' }, 'QUOTED' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'new' => 'FLOWSEQ_NEXT' } }, 'FLOWSEQ_EMPTY' => { 'FLOWSEQ_END' => { 'match' => 'cb_empty_flowseq_end', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowseq_comma', 'return' => 1 } }, 'FLOWSEQ_MAYBE_KEY' => { 'COLON' => { 'DEFAULT' => { 'match' => 'cb_insert_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'EOL' => { 'match' => 'cb_insert_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_insert_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'DEFAULT' => { 'new' => 'FLOWSEQ_NEXT' }, 'WS' => { 'new' => 'FLOWSEQ_MAYBE_KEY' } }, 'FLOWSEQ_NEXT' => { 'EOL' => { 'new' => 'FLOWSEQ_NEXT' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_flow_comma', 'return' => 1 }, 'WS' => { 'new' => 'FLOWSEQ_NEXT' } }, 'FLOWSEQ_PROPS' => { 'COLON' => { 'EOL' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'match' => 'cb_insert_empty_implicit_flowseq_map', 'new' => 'RULE_FULLFLOWSCALAR' } }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_END' => { 'match' => 'cb_empty_flowseq_end', 'return' => 1 }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowseq_comma', 'return' => 1 }, 'PLAIN' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'new' => 'FLOWSEQ_NEXT' }, 'QUOTED' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_MAYBE_KEY' }, 'EOL' => { 'match' => 'cb_send_scalar', 'new' => 'FLOWSEQ_NEXT' }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'new' => 'FLOWSEQ_NEXT' } }, 'FULLMAPVALUE_INLINE' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_ANCHOR' }, 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG' }, 'WS' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_MAPVALUE_INLINE' } }, 'match' => 'cb_tag' } }, 'FULLNODE' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_ANCHOR' }, 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG' }, 'WS' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'FULLNODE_ANCHOR' => { 'ANCHOR' => { 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE_ANCHOR' }, 'TAG' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'FULLNODE_TAG' => { 'ANCHOR' => { 'EOL' => { 'match' => 'cb_property_eol', 'new' => 'FULLNODE_TAG_ANCHOR' }, 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE_TAG' }, 'TAG' => { 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'FULLNODE_TAG_ANCHOR' => { 'ANCHOR' => { 'WS' => { 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'TAG' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_NODE' }, 'EOL' => { 'new' => 'FULLNODE_TAG_ANCHOR' }, 'TAG' => { 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'match' => 'cb_tag' } }, 'NEWFLOWMAP' => { 'DEFAULT' => { 'new' => 'FLOWMAP' }, 'EOL' => { 'new' => 'NEWFLOWMAP' }, 'QUESTION' => { 'match' => 'cb_flow_question', 'new' => 'FLOWMAP_EXPLICIT_KEY' }, 'WS' => { 'new' => 'NEWFLOWMAP' } }, 'NEWFLOWMAP_ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' } }, 'NEWFLOWMAP_ANCHOR_SPC' => { 'DEFAULT' => { 'new' => 'FLOWMAP_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' }, 'TAG' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' }, 'EOL' => { 'new' => 'FLOWMAP_PROPS' }, 'WS' => { 'new' => 'FLOWMAP_PROPS' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWMAP_ANCHOR_SPC' } }, 'NEWFLOWMAP_TAG' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' } }, 'NEWFLOWMAP_TAG_SPC' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWMAP_EMPTYKEY' }, 'EOL' => { 'new' => 'FLOWMAP_PROPS' }, 'WS' => { 'new' => 'FLOWMAP_PROPS' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWMAP_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWMAP_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWMAP_TAG_SPC' } }, 'NEWFLOWSEQ' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'NEWFLOWSEQ_ANCHOR' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' }, 'WS' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWSEQ' }, 'EOL' => { 'new' => 'NEWFLOWSEQ' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'TAG' => { 'DEFAULT' => { 'new' => 'NEWFLOWSEQ_TAG' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWSEQ' } }, 'NEWFLOWSEQ_ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' } }, 'NEWFLOWSEQ_ANCHOR_SPC' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' }, 'TAG' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' }, 'EOL' => { 'new' => 'FLOWSEQ_PROPS' }, 'WS' => { 'new' => 'FLOWSEQ_PROPS' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'NEWFLOWSEQ_ANCHOR_SPC' } }, 'NEWFLOWSEQ_TAG' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' } }, 'NEWFLOWSEQ_TAG_SPC' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'FLOWSEQ_EMPTY' }, 'EOL' => { 'new' => 'FLOWSEQ_PROPS' }, 'WS' => { 'new' => 'FLOWSEQ_PROPS' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'FLOWSEQ_PROPS' }, 'EOL' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' }, 'WS' => { 'new' => 'NEWFLOWSEQ_TAG_SPC' } }, 'NODETYPE_COMPLEX' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_complexcolon' }, 'DEFAULT' => { 'match' => 'cb_empty_complexvalue', 'new' => 'NODETYPE_MAP' }, 'EOL' => { 'new' => 'NODETYPE_COMPLEX' } }, 'NODETYPE_FLOWMAP' => { 'DEFAULT' => { 'new' => 'NEWFLOWMAP' }, 'EOL' => { 'new' => 'NODETYPE_FLOWMAP' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_flow_comma', 'new' => 'NEWFLOWMAP' }, 'WS' => { 'new' => 'NODETYPE_FLOWMAP' } }, 'NODETYPE_FLOWMAPVALUE' => { 'COLON' => { 'DEFAULT' => { 'new' => 'RULE_FULLFLOWSCALAR' }, 'EOL' => { 'new' => 'RULE_FULLFLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FULLFLOWSCALAR' }, 'match' => 'cb_flow_colon' }, 'EOL' => { 'new' => 'NODETYPE_FLOWMAPVALUE' }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap_empty', 'return' => 1 }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flowmap_value', 'return' => 1 }, 'WS' => { 'new' => 'NODETYPE_FLOWMAPVALUE' } }, 'NODETYPE_FLOWSEQ' => { 'DEFAULT' => { 'new' => 'NEWFLOWSEQ' }, 'EOL' => { 'new' => 'NODETYPE_FLOWSEQ' }, 'FLOWSEQ_END' => { 'match' => 'cb_end_flowseq', 'return' => 1 }, 'WS' => { 'new' => 'NODETYPE_FLOWSEQ' } }, 'NODETYPE_MAP' => { 'ANCHOR' => { 'WS' => { 'DEFAULT' => { 'new' => 'RULE_MAPKEY' }, 'TAG' => { 'WS' => { 'new' => 'RULE_MAPKEY' }, 'match' => 'cb_tag' } }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_MAPKEY' }, 'TAG' => { 'WS' => { 'ANCHOR' => { 'WS' => { 'new' => 'RULE_MAPKEY' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_MAPKEY' } }, 'match' => 'cb_tag' } }, 'NODETYPE_MAPVALUE_INLINE' => { 'ALIAS' => { 'EOL' => {}, 'match' => 'cb_send_alias' }, 'BLOCK_SCALAR' => { 'EOL' => {}, 'match' => 'cb_send_block_scalar' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'EOL' => { 'match' => 'cb_send_scalar' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'EOL' => {}, 'match' => 'cb_send_plain_multi' }, 'QUOTED' => { 'EOL' => { 'match' => 'cb_send_scalar' }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'EOL' => {}, 'match' => 'cb_quoted_multiline' } }, 'NODETYPE_NODE' => { 'DASH' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_seqstart' }, 'DEFAULT' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' } }, 'NODETYPE_SCALAR_OR_MAP' => { 'ALIAS' => { 'EOL' => { 'match' => 'cb_send_alias_from_stack' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map_alias' } }, 'match' => 'cb_alias' }, 'BLOCK_SCALAR' => { 'EOL' => {}, 'match' => 'cb_send_block_scalar' }, 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_empty_map' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'NODETYPE_SCALAR_OR_MAP' }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'PLAIN' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' } }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'EOL' => {}, 'match' => 'cb_send_plain_multi' }, 'QUESTION' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_questionstart' }, 'QUOTED' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_insert_map' } }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'EOL' => {}, 'match' => 'cb_quoted_multiline' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } }, 'NODETYPE_SEQ' => { 'DASH' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_seqitem' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'NODETYPE_SEQ' } }, 'RULE_FLOWSCALAR' => { 'ALIAS' => { 'match' => 'cb_send_alias', 'return' => 1 }, 'FLOWMAP_END' => { 'match' => 'cb_end_flowmap_empty', 'return' => 1 }, 'FLOWMAP_START' => { 'match' => 'cb_start_flowmap', 'new' => 'NEWFLOWMAP' }, 'FLOWSEQ_START' => { 'match' => 'cb_start_flowseq', 'new' => 'NEWFLOWSEQ' }, 'FLOW_COMMA' => { 'match' => 'cb_empty_flow_mapkey', 'return' => 1 }, 'PLAIN' => { 'DEFAULT' => { 'match' => 'cb_send_scalar', 'return' => 1 }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'match' => 'cb_start_plain' }, 'PLAIN_MULTI' => { 'match' => 'cb_send_plain_multi', 'return' => 1 }, 'QUOTED' => { 'DEFAULT' => { 'match' => 'cb_send_scalar', 'return' => 1 }, 'EOL' => { 'match' => 'cb_send_scalar' }, 'WS' => { 'match' => 'cb_send_scalar', 'return' => 1 }, 'match' => 'cb_take_quoted' }, 'QUOTED_MULTILINE' => { 'match' => 'cb_quoted_multiline', 'return' => 1 } }, 'RULE_FULLFLOWSCALAR' => { 'ANCHOR' => { 'DEFAULT' => { 'new' => 'RULE_FULLFLOWSCALAR_ANCHOR' }, 'EOL' => { 'new' => 'RULE_FULLFLOWSCALAR_ANCHOR' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_FLOWSCALAR' }, 'TAG' => { 'DEFAULT' => { 'new' => 'RULE_FULLFLOWSCALAR_TAG' }, 'EOL' => { 'new' => 'RULE_FULLFLOWSCALAR_TAG' }, 'match' => 'cb_tag' } }, 'RULE_FULLFLOWSCALAR_ANCHOR' => { 'DEFAULT' => { 'new' => 'RULE_FLOWSCALAR' }, 'TAG' => { 'EOL' => { 'new' => 'RULE_FLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FLOWSCALAR' }, 'match' => 'cb_tag' }, 'WS' => { 'new' => 'RULE_FULLFLOWSCALAR_ANCHOR' } }, 'RULE_FULLFLOWSCALAR_TAG' => { 'ANCHOR' => { 'EOL' => { 'new' => 'RULE_FLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FLOWSCALAR' }, 'match' => 'cb_anchor' }, 'DEFAULT' => { 'new' => 'RULE_FLOWSCALAR' }, 'WS' => { 'new' => 'RULE_FULLFLOWSCALAR_TAG' } }, 'RULE_MAPKEY' => { 'ALIAS' => { 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } } }, 'match' => 'cb_send_alias' }, 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_empty_mapkey' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_end_doc_start_document' }, 'EOL' => { 'new' => 'RULE_MAPKEY' }, 'PLAIN' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_send_mapkey' }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' }, 'match' => 'cb_send_mapkey' } }, 'match' => 'cb_mapkey' }, 'QUESTION' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_question' }, 'QUOTED' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } }, 'WS' => { 'COLON' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLMAPVALUE_INLINE' } } }, 'match' => 'cb_take_quoted_key' } }, 'STREAM' => { 'DEFAULT' => { 'match' => 'cb_doc_start_implicit', 'new' => 'FULLNODE' }, 'DOC_END' => { 'EOL' => {}, 'match' => 'cb_end_document_empty' }, 'DOC_START' => { 'EOL' => { 'new' => 'FULLNODE' }, 'WS' => { 'new' => 'FULLNODE' }, 'match' => 'cb_doc_start_explicit' }, 'EOL' => { 'new' => 'STREAM' }, 'RESERVED_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_reserved_directive' }, 'TAG_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_tag_directive' }, 'YAML_DIRECTIVE' => { 'EOL' => { 'new' => 'DIRECTIVE' }, 'WS' => { 'new' => 'DIRECTIVE' }, 'match' => 'cb_set_yaml_version_directive' } } }; # END OF GRAMMAR INLINE 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Grammar - YAML grammar =head1 GRAMMAR This is the Grammar in YAML # START OF YAML INLINE # DO NOT CHANGE THIS # This grammar is automatically generated from etc/grammar.yaml --- NODETYPE_NODE: DASH: match: cb_seqstart EOL: { new: FULLNODE } WS: { new: FULLNODE } DEFAULT: { new: NODETYPE_SCALAR_OR_MAP } NODETYPE_SCALAR_OR_MAP: # Flow nodes can follow tabs WS: { new: FULLMAPVALUE_INLINE } ALIAS: match: cb_alias EOL: { match: cb_send_alias_from_stack } WS: COLON: match: cb_insert_map_alias EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUESTION: match: cb_questionstart EOL: { new: FULLNODE } WS: { new: FULLNODE } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } WS: COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } QUOTED_MULTILINE: match: cb_quoted_multiline EOL: { } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar WS: COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } COLON: match: cb_insert_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } PLAIN_MULTI: match: cb_send_plain_multi EOL: { } COLON: match: cb_insert_empty_map EOL: { new: FULLNODE } WS: { new: FULLMAPVALUE_INLINE } BLOCK_SCALAR: match: cb_send_block_scalar EOL: { } FLOWSEQ_START: match: cb_start_flowseq new: NEWFLOWSEQ FLOWMAP_START: match: cb_start_flowmap new: NEWFLOWMAP DOC_END: match: cb_end_document EOL: { } DOC_START: match: cb_end_doc_start_document EOL: { new: FULLNODE } WS: { new: FULLNODE } EOL: new: NODETYPE_SCALAR_OR_MAP NODETYPE_COMPLEX: COLON: match: cb_complexcolon EOL: { new: FULLNODE } WS: { new: FULLNODE } DEFAULT: match: cb_empty_complexvalue new: NODETYPE_MAP EOL: new: NODETYPE_COMPLEX RULE_FULLFLOWSCALAR: ANCHOR: match: cb_anchor EOL: { new: RULE_FULLFLOWSCALAR_ANCHOR } DEFAULT: { new: RULE_FULLFLOWSCALAR_ANCHOR } TAG: match: cb_tag EOL: { new: RULE_FULLFLOWSCALAR_TAG } DEFAULT: { new: RULE_FULLFLOWSCALAR_TAG } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FULLFLOWSCALAR_ANCHOR: WS: { new: RULE_FULLFLOWSCALAR_ANCHOR } TAG: match: cb_tag WS: { new: RULE_FLOWSCALAR } EOL: { new: RULE_FLOWSCALAR } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FULLFLOWSCALAR_TAG: WS: { new: RULE_FULLFLOWSCALAR_TAG } ANCHOR: match: cb_anchor WS: { new: RULE_FLOWSCALAR } EOL: { new: RULE_FLOWSCALAR } DEFAULT: { new: RULE_FLOWSCALAR } RULE_FLOWSCALAR: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } QUOTED: match: cb_take_quoted EOL: { match: cb_send_scalar } WS: { match: cb_send_scalar, return: 1 } DEFAULT: { match: cb_send_scalar, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } PLAIN: match: cb_start_plain EOL: { match: cb_send_scalar } DEFAULT: { match: cb_send_scalar, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } FLOW_COMMA: { match: cb_empty_flow_mapkey, return: 1 } FLOWMAP_END: match: cb_end_flowmap_empty return: 1 FLOWSEQ: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_flow_alias, new: FLOWSEQ_NEXT } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: match: cb_start_plain EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY PLAIN_MULTI: { match: cb_send_plain_multi, new: FLOWSEQ_NEXT } QUOTED: match: cb_take_quoted EOL: match: cb_send_scalar new: FLOWSEQ_NEXT DEFAULT: new: FLOWSEQ_MAYBE_KEY QUOTED_MULTILINE: { match: cb_quoted_multiline, new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 COLON: WS: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_empty_implicit_flowseq_map new: RULE_FULLFLOWSCALAR FLOWSEQ_EMPTY: FLOW_COMMA: match: cb_empty_flowseq_comma return: 1 FLOWSEQ_END: match: cb_empty_flowseq_end return: 1 FLOWSEQ_NEXT: WS: { new: FLOWSEQ_NEXT } EOL: { new: FLOWSEQ_NEXT } FLOW_COMMA: match: cb_flow_comma return: 1 FLOWSEQ_END: match: cb_end_flowseq return: 1 FLOWSEQ_MAYBE_KEY: WS: { new: FLOWSEQ_MAYBE_KEY } COLON: WS: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR EOL: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: match: cb_insert_implicit_flowseq_map new: RULE_FULLFLOWSCALAR DEFAULT: new: FLOWSEQ_NEXT FLOWMAP_CONTENT: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } ALIAS: { match: cb_send_alias, return: 1 } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOWMAP_PROPS: FLOWSEQ_START: { match: cb_start_flowseq, new: NEWFLOWSEQ } FLOWMAP_START: { match: cb_start_flowmap, new: NEWFLOWMAP } PLAIN: { match: cb_flowkey_plain, return: 1 } PLAIN_MULTI: { match: cb_send_plain_multi, return: 1 } QUOTED: { match: cb_flowkey_quoted, return: 1 } QUOTED_MULTILINE: { match: cb_quoted_multiline, return: 1 } COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOWMAP_EMPTYKEY: FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 NEWFLOWSEQ: EOL: { new: NEWFLOWSEQ } WS: { new: NEWFLOWSEQ } ANCHOR: match: cb_anchor WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } DEFAULT: { new: NEWFLOWSEQ_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } DEFAULT: { new: NEWFLOWSEQ_TAG } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: FLOWSEQ } NODETYPE_FLOWSEQ: EOL: { new: NODETYPE_FLOWSEQ } WS: { new: NODETYPE_FLOWSEQ } FLOWSEQ_END: match: cb_end_flowseq return: 1 DEFAULT: { new: NEWFLOWSEQ } NODETYPE_FLOWMAPVALUE: WS: { new: NODETYPE_FLOWMAPVALUE } EOL: { new: NODETYPE_FLOWMAPVALUE } COLON: match: cb_flow_colon WS: { new: RULE_FULLFLOWSCALAR } EOL: { new: RULE_FULLFLOWSCALAR } DEFAULT: { new: RULE_FULLFLOWSCALAR } FLOW_COMMA: match: cb_empty_flowmap_value return: 1 FLOWMAP_END: match: cb_end_flowmap_empty return: 1 NEWFLOWSEQ_ANCHOR: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_TAG: DEFAULT: { new: FLOWSEQ_EMPTY } NEWFLOWSEQ_ANCHOR_SPC: WS: { new: NEWFLOWSEQ_ANCHOR_SPC } EOL: { new: NEWFLOWSEQ_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWSEQ_TAG_SPC: WS: { new: NEWFLOWSEQ_TAG_SPC } EOL: { new: NEWFLOWSEQ_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWSEQ_PROPS } EOL: { new: FLOWSEQ_PROPS } DEFAULT: { new: FLOWSEQ_EMPTY } DEFAULT: { new: FLOWSEQ_PROPS } NEWFLOWMAP_ANCHOR: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_TAG: DEFAULT: { new: FLOWMAP_EMPTYKEY } NEWFLOWMAP_ANCHOR_SPC: WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } TAG: match: cb_tag WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP_TAG_SPC: WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } ANCHOR: match: cb_anchor WS: { new: FLOWMAP_PROPS } EOL: { new: FLOWMAP_PROPS } DEFAULT: { new: FLOWMAP_EMPTYKEY } DEFAULT: { new: FLOWMAP_PROPS } NEWFLOWMAP: EOL: { new: NEWFLOWMAP } WS: { new: NEWFLOWMAP } QUESTION: { match: cb_flow_question, new: FLOWMAP_EXPLICIT_KEY } DEFAULT: { new: FLOWMAP } FLOWMAP_EXPLICIT_KEY: WS: { new: FLOWMAP_EXPLICIT_KEY } EOL: { new: FLOWMAP_EXPLICIT_KEY } FLOWMAP_END: match: cb_end_empty_flowmap_key_value return: 1 FLOW_COMMA: match: cb_empty_flowmap_key_value return: 1 DEFAULT: { new: FLOWMAP } FLOWMAP: EOL: { new: FLOWMAP } WS: { new: FLOWMAP } ANCHOR: match: cb_anchor WS: { new: NEWFLOWMAP_ANCHOR_SPC } EOL: { new: NEWFLOWMAP_ANCHOR_SPC } DEFAULT: { new: NEWFLOWMAP_ANCHOR } TAG: match: cb_tag WS: { new: NEWFLOWMAP_TAG_SPC } EOL: { new: NEWFLOWMAP_TAG_SPC } DEFAULT: { new: NEWFLOWMAP_TAG } FLOWMAP_END: match: cb_end_flowmap return: 1 COLON: WS: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR EOL: match: cb_empty_flow_mapkey new: RULE_FULLFLOWSCALAR DEFAULT: { new: FLOWMAP_CONTENT } NODETYPE_FLOWMAP: EOL: { new: NODETYPE_FLOWMAP } WS: { new: NODETYPE_FLOWMAP } FLOWMAP_END: match: cb_end_flowmap return: 1 FLOW_COMMA: { match: cb_flow_comma, new: NEWFLOWMAP } DEFAULT: { new: NEWFLOWMAP } END_FLOW: EOL: match: cb_end_outer_flow return: 1 RULE_MAPKEY: QUESTION: match: cb_question EOL: { new: FULLNODE } WS: { new: FULLNODE } ALIAS: match: cb_send_alias 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 53.customtag-alias.t100644001750001750 326614161720075 15713 0ustar00tinatina000000000000YAML-PP-0.031/t#!/usr/bin/env perl use strict; use warnings; use Test::More; use Test::Deep; use FindBin '$Bin'; use YAML::PP; subtest 'join-tag' => sub { my $yp = YAML::PP->new; $yp->schema->add_sequence_resolver( tag => '!join', on_create => sub { return '' }, on_data => sub { my ($constructor, $data, $list) = @_; my $join = shift @$list; $$data .= join $join, @$list; }, ); my $yaml = <<'EOM'; --- name: &name YAML string: &what !join [ ' ', *name, Ain't, Markup, Language ] alias: *what EOM my $string = "YAML Ain't Markup Language"; my $expected = { name => 'YAML', string => $string, alias => $string, }; my ($data) = $yp->load_string($yaml); is_deeply($data, $expected, 'Loaded data as expected'); }; subtest 'inherit-tag' => sub { my $yp = YAML::PP->new; $yp->schema->add_mapping_resolver( tag => '!inherit', # on_create => sub { return '' }, on_data => sub { my ($constructor, $data, $list) = @_; for my $item (@$list) { %$$data = (%$$data, %$item); } }, ); my $yaml = <<'EOM'; --- parent: &parent a: A b: B child: &child !inherit *parent : a: new A c: C twin: *child EOM my $string = "YAML Ain't Markup Language"; my $child = { a => 'new A', b => 'B', c => 'C', }; my $expected = { parent => { a => 'A', b => 'B', }, child => $child, twin => $child, }; my ($data) = $yp->load_string($yaml); is_deeply($data, $expected, 'Loaded data as expected'); }; done_testing; in.yaml100644001750001750 2614161720075 15531 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i034--- x: [ y ]in: valid in.yaml100644001750001750 3314161720075 15526 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i033--- { ? ? question: mark } in.yaml100644001750001750 4214161720075 15525 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i032! > scalar in.yaml100644001750001750 414161720075 15510 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i037- - in.yaml100644001750001750 514161720075 15512 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i038- - in.yaml100644001750001750 1014161720075 15523 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i035--- |10 in.yaml100644001750001750 2014161720075 15525 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i036foo: | bar: 1 generate-grammar.pl100755001750001750 312214161720075 16260 0ustar00tinatina000000000000YAML-PP-0.031/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; schema-perl.pm100644001750001750 543314161720075 16312 0ustar00tinatina000000000000YAML-PP-0.031/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 174514161720075 16017 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v024+STR +DOC +SEQ +MAP {} =VAL : =VAL : =VAL :second key =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL &anchor1 : =VAL : =VAL :second key =VAL : -MAP +MAP {} =VAL &anchor2 : =VAL : -MAP +MAP {} =VAL &anchor3 : =VAL : -MAP +MAP {} =VAL &anchor4 : =VAL : -MAP +MAP {} =VAL &anchor5 : =VAL : -MAP +MAP {} =VAL &anchor6 : =VAL : -MAP +MAP {} =VAL &anchor7 : =VAL : -MAP +MAP {} =VAL &anchor8 : =VAL : -MAP +MAP {} =VAL &anchor9 : =VAL : -MAP +MAP {} =VAL &anchor10 : =VAL : -MAP +MAP {} =VAL &anchor11 : =VAL : -MAP +MAP {} =VAL &anchor12 : =VAL : -MAP +MAP {} =VAL &anchor13 : =VAL : -MAP -SEQ -DOC -STR test.event100644001750001750 12414161720075 15763 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v031+STR +DOC --- =VAL :a -DOC ... +DOC --- =VAL :b -DOC ... +DOC --- =VAL :c -DOC -STR test.event100644001750001750 13714161720075 15770 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v023+STR +DOC +SEQ +SEQ [] -SEQ +SEQ [] -SEQ +SEQ [] -SEQ +SEQ [] -SEQ +SEQ [] -SEQ -SEQ -DOC -STR test.event100644001750001750 4014161720075 15737 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v030+STR +DOC --- =VAL :a -DOC -STR test.event100644001750001750 44214161720075 15771 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v025+STR +DOC +SEQ +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : -MAP +MAP {} =VAL : =VAL : =VAL :key =VAL :value -MAP +MAP {} =VAL : =VAL : =VAL :key =VAL :value -MAP -SEQ -DOC -STR test.event100644001750001750 35114161720075 15763 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v020+STR +DOC --- +MAP +MAP =VAL :x =VAL :y -MAP =VAL :z =VAL :a =VAL :b -MAP -DOC +DOC --- +MAP =VAL :top1 +MAP +MAP =VAL :a =VAL :1 -MAP +MAP =VAL :b +SEQ [] =VAL :c -SEQ -MAP =VAL :x =VAL :y -MAP =VAL :top2 =VAL :value -MAP -DOC -STR test.event100644001750001750 20114161720075 15765 0ustar00tinatina000000000000YAML-PP-0.031/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 24214161720075 15772 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v028+STR +DOC +SEQ =VAL "1 leading \ttab =VAL "2 leading \ttab =VAL "3 leading tab =VAL "4 leading \t tab =VAL "5 leading \t tab =VAL "6 leading tab -SEQ -DOC -STR test.event100644001750001750 153514161720075 16012 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v022+STR +DOC +SEQ +SEQ [] =VAL : =VAL :second value -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL : -SEQ +SEQ [] =VAL &anchor1 : =VAL :second value -SEQ +SEQ [] =VAL &anchor2 : -SEQ +SEQ [] =VAL &anchor3 : -SEQ +SEQ [] =VAL &anchor4 : -SEQ +SEQ [] =VAL &anchor5 : -SEQ +SEQ [] =VAL &anchor6 : -SEQ +SEQ [] =VAL &anchor7 : -SEQ +SEQ [] =VAL &anchor8 : -SEQ +SEQ [] =VAL &anchor9 : -SEQ +SEQ [] =VAL &anchor10 : -SEQ +SEQ [] =VAL &anchor11 : -SEQ +SEQ [] =VAL &anchor12 : -SEQ +SEQ [] =VAL &anchor13 : -SEQ -SEQ -DOC -STR test.event100644001750001750 24414161720075 15773 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v027+STR +DOC +SEQ =VAL "1 trailing\t tab =VAL "2 trailing\t tab =VAL "3 trailing\t tab =VAL "4 trailing\t tab =VAL "5 trailing tab =VAL "6 trailing tab -SEQ -DOC -STR test.event100644001750001750 12714161720075 15773 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v009+STR +DOC +MAP =VAL :a +SEQ =VAL :1 =VAL :2 =VAL : -SEQ =VAL :b =VAL :3 -MAP -DOC -STR test.event100644001750001750 4714161720075 15750 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v032+STR +DOC +SEQ =VAL :-1 -SEQ -DOC -STR test.event100644001750001750 4014161720075 15747 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v029+STR +DOC --- =VAL :a -DOC -STR test.event100644001750001750 13214161720075 15766 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v026+STR +DOC +SEQ =VAL "1 inline\ttab =VAL "2 inline\ttab =VAL "3 inline\ttab -SEQ -DOC -STR test.event100644001750001750 13014161720075 15757 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v021+STR +DOC +SEQ +MAP =VAL :one =VAL | two\n =VAL :three =VAL |four\n -MAP -SEQ -DOC -STR test.event100644001750001750 24714161720075 15772 0ustar00tinatina000000000000YAML-PP-0.031/t/valid/v014+STR +DOC --- =VAL :scalar -DOC ... +DOC --- =VAL :scalar -DOC +DOC --- =VAL :scalar -DOC -STR generate-examples.pl100644001750001750 262714161720075 16456 0ustar00tinatina000000000000YAML-PP-0.031/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 1374314161720075 16055 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Highlight; our $VERSION = '0.031'; # VERSION our @EXPORT_OK = qw/ Dump /; use base 'Exporter'; use YAML::PP; use YAML::PP::Parser; use Encode; sub Dump { my (@docs) = @_; # Dumping objects is safe, so we enable the Perl schema here require YAML::PP::Schema::Perl; my $yp = YAML::PP->new( schema => [qw/ + Perl /] ); my $yaml = $yp->dump_string(@docs); my ($error, $tokens) = YAML::PP::Parser->yaml_to_tokens(string => $yaml); my $highlighted = YAML::PP::Highlight->ansicolored($tokens); encode_utf8 $highlighted; } my %ansicolors = ( ANCHOR => [qw/ green /], ALIAS => [qw/ bold green /], TAG => [qw/ bold blue /], INDENT => [qw/ white on_grey3 /], COMMENT => [qw/ grey12 /], COLON => [qw/ bold magenta /], DASH => [qw/ bold magenta /], QUESTION => [qw/ bold magenta /], YAML_DIRECTIVE => [qw/ cyan /], TAG_DIRECTIVE => [qw/ bold cyan /], SINGLEQUOTE => [qw/ bold green /], SINGLEQUOTED => [qw/ green /], SINGLEQUOTED_LINE => [qw/ green /], DOUBLEQUOTE => [qw/ bold green /], DOUBLEQUOTED => [qw/ green /], DOUBLEQUOTED_LINE => [qw/ green /], LITERAL => [qw/ bold yellow /], FOLDED => [qw/ bold yellow /], DOC_START => [qw/ bold /], DOC_END => [qw/ bold /], BLOCK_SCALAR_CONTENT => [qw/ yellow /], TAB => [qw/ on_blue /], ERROR => [qw/ bold red /], EOL => [qw/ grey12 /], TRAILING_SPACE => [qw/ on_grey6 /], FLOWSEQ_START => [qw/ bold magenta /], FLOWSEQ_END => [qw/ bold magenta /], FLOWMAP_START => [qw/ bold magenta /], FLOWMAP_END => [qw/ bold magenta /], FLOW_COMMA => [qw/ bold magenta /], PLAINKEY => [qw/ bright_blue /], ); sub ansicolored { my ($class, $tokens, %args) = @_; my $expand_tabs = $args{expand_tabs}; $expand_tabs = 1 unless defined $expand_tabs; require Term::ANSIColor; local $Term::ANSIColor::EACHLINE = "\n"; my $ansi = ''; my $highlighted = ''; my @list = $class->transform($tokens); for my $token (@list) { my $name = $token->{name}; my $str = $token->{value}; my $color = $ansicolors{ $name }; if ($color) { $str = Term::ANSIColor::colored($color, $str); } $highlighted .= $str; } if ($expand_tabs) { # Tabs can't be displayed with ansicolors $highlighted =~ s/\t/' ' x 8/eg; } $ansi .= $highlighted; return $ansi; } my %htmlcolors = ( ANCHOR => 'anchor', ALIAS => 'alias', SINGLEQUOTE => 'singlequote', DOUBLEQUOTE => 'doublequote', SINGLEQUOTED => 'singlequoted', DOUBLEQUOTED => 'doublequoted', SINGLEQUOTED_LINE => 'singlequoted', DOUBLEQUOTED_LINE => 'doublequoted', INDENT => 'indent', DASH => 'dash', COLON => 'colon', QUESTION => 'question', YAML_DIRECTIVE => 'yaml_directive', TAG_DIRECTIVE => 'tag_directive', TAG => 'tag', COMMENT => 'comment', LITERAL => 'literal', FOLDED => 'folded', DOC_START => 'doc_start', DOC_END => 'doc_end', BLOCK_SCALAR_CONTENT => 'block_scalar_content', TAB => 'tab', ERROR => 'error', EOL => 'eol', TRAILING_SPACE => 'trailing_space', FLOWSEQ_START => 'flowseq_start', FLOWSEQ_END => 'flowseq_end', FLOWMAP_START => 'flowmap_start', FLOWMAP_END => 'flowmap_end', FLOW_COMMA => 'flow_comma', PLAINKEY => 'plainkey', ); 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) { if ($name eq 'PLAIN') { for my $n ($i+1 .. $#list) { my $next = $list[ $n ]; last if $next->{name} eq 'EOL'; next if $next->{name} =~ m/^(WS|SPACE)$/; if ($next->{name} eq 'COLON') { $token->{name} = 'PLAINKEY'; } } } my $next = $list[ $i + 1]; if ($next->{name} eq 'EOL') { if ($str =~ m/ \z/ and $name =~ m/^(BLOCK_SCALAR_CONTENT|WS)$/) { $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 360314161720075 16056 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Exception; our $VERSION = '0.031'; # 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; 17.load-complex-keys.t100644001750001750 261014161720075 16143 0ustar00tinatina000000000000YAML-PP-0.031/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; schema-ixhash.pm100644001750001750 205114161720075 16625 0ustar00tinatina000000000000YAML-PP-0.031/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; 34.emit-scalar-styles.t100644001750001750 364114161720075 16334 0ustar00tinatina000000000000YAML-PP-0.031/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; 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 /; my @input = ( "", " ", "\n", "\na", "a", "a\n", " a", "a ", " a ", "\na\n", "\n a", "\n a\n", "\na \n", "a \n", "\n a \n", "\n\n a \n\n", "\n \n a \n\n", "\n \n a \n \n", " \n a \n ", " \n\n a \n\n ", ); my $emitter = YAML::PP::Emitter->new(); $emitter->set_writer(YAML::PP::Writer->new); my $yp = YAML::PP->new( schema => ['Failsafe'] ); #my @styles = qw/ : " ' | > /; my @styles = ( YAML_PLAIN_SCALAR_STYLE, YAML_DOUBLE_QUOTED_SCALAR_STYLE, YAML_SINGLE_QUOTED_SCALAR_STYLE, YAML_LITERAL_SCALAR_STYLE ); 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 6014161720075 16257 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i034+STR +DOC --- +MAP =VAL :x +SEQ [] =VAL :y -SEQ test.event100644001750001750 2614161720075 16260 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i033+STR +DOC --- +MAP {} test.event100644001750001750 1214161720075 16252 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i032+STR +DOC test.event100644001750001750 1214161720075 16257 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i037+STR +DOC test.event100644001750001750 1214161720075 16260 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i038+STR +DOC test.event100644001750001750 1614161720075 16261 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i035+STR +DOC --- test.event100644001750001750 3114161720075 16257 0ustar00tinatina000000000000YAML-PP-0.031/t/invalid/i036+STR +DOC +MAP =VAL :foo Representer.pm100644001750001750 1527214161720075 16443 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPuse strict; use warnings; package YAML::PP::Representer; our $VERSION = '0.031'; # VERSION use Scalar::Util qw/ reftype blessed refaddr /; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE YAML_SINGLE_QUOTED_SCALAR_STYLE YAML_DOUBLE_QUOTED_SCALAR_STYLE YAML_ANY_SCALAR_STYLE YAML_LITERAL_SCALAR_STYLE YAML_FOLDED_SCALAR_STYLE YAML_FLOW_SEQUENCE_STYLE YAML_FLOW_MAPPING_STYLE YAML_BLOCK_MAPPING_STYLE YAML_BLOCK_SEQUENCE_STYLE PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; use B; sub new { my ($class, %args) = @_; my $preserve = delete $args{preserve} || 0; if ($preserve == 1) { $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS; } my $self = bless { schema => delete $args{schema}, preserve => $preserve, }, $class; if (keys %args) { die "Unexpected arguments: " . join ', ', sort keys %args; } return $self; } sub clone { my ($self) = @_; my $clone = { schema => $self->schema, preserve => $self->{preserve}, }; return bless $clone, ref $self; } sub schema { return $_[0]->{schema} } sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER } sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE } sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE } sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS } sub represent_node { my ($self, $node) = @_; my $preserve_alias = $self->preserve_alias; my $preserve_style = $self->preserve_scalar_style; if ($preserve_style or $preserve_alias) { if (ref $node->{value} eq 'YAML::PP::Preserve::Scalar') { my $value = $node->{value}->value; if ($preserve_style and $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 (not $node->{reftype} and reftype(\$node->{value}) eq 'GLOB') { $node->{reftype} = 'GLOB'; } if ($node->{reftype}) { $self->represent_noderef($node); } else { $self->represent_node_nonref($node); } $node->{reftype} = (reftype $node->{data}) || ''; if ($node->{reftype} eq 'HASH' and my $tied = tied(%{ $node->{data} })) { my $representers = $self->schema->representers; $tied = ref $tied; if (my $def = $representers->{tied_equals}->{ $tied }) { my $code = $def->{code}; my $done = $code->($self, $node); } } if ($node->{reftype} eq 'HASH') { unless (defined $node->{items}) { # by default we sort hash keys my @keys; if ($self->preserve_order) { @keys = keys %{ $node->{data} }; } else { @keys = sort keys %{ $node->{data} }; } for my $key (@keys) { push @{ $node->{items} }, $key, $node->{data}->{ $key }; } } my %args; if ($self->preserve_flow_style and reftype $node->{value} eq 'HASH') { if (my $tied = tied %{ $node->{value} } ) { $args{style} = $tied->{style}; } } return [ mapping => $node, %args ]; } elsif ($node->{reftype} eq 'ARRAY') { unless (defined $node->{items}) { @{ $node->{items} } = @{ $node->{data} }; } my %args; if ($self->preserve_flow_style and reftype $node->{value} eq 'ARRAY') { if (my $tied = tied @{ $node->{value} } ) { $args{style} = $tied->{style}; } } return [ sequence => $node, %args ]; } elsif ($node->{reftype}) { die "Cannot handle reftype '$node->{reftype}' (you might want to enable YAML::PP::Schema::Perl)"; } else { unless (defined $node->{items}) { $node->{items} = [$node->{data}]; } return [ scalar => $node ]; } } 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); } if ($node->{reftype} eq 'GLOB' and my $glob = $representers->{glob}) { my $code = $glob->{code}; return 1 if $code->($self, $node); } $node->{data} = $node->{value}; } 1; Constructor.pm100644001750001750 3111614161720075 16465 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP# ABSTRACT: Construct data structure from Parser Events use strict; use warnings; package YAML::PP::Constructor; our $VERSION = '0.031'; # VERSION use YAML::PP; use YAML::PP::Common qw/ PRESERVE_ORDER PRESERVE_SCALAR_STYLE PRESERVE_FLOW_STYLE PRESERVE_ALIAS /; use Scalar::Util qw/ reftype /; use Carp qw/ croak /; use constant DEBUG => ($ENV{YAML_PP_LOAD_DEBUG} or $ENV{YAML_PP_LOAD_TRACE}) ? 1 : 0; use constant TRACE => $ENV{YAML_PP_LOAD_TRACE} ? 1 : 0; my %cyclic_refs = qw/ allow 1 ignore 1 warn 1 fatal 1 /; sub new { my ($class, %args) = @_; my $default_yaml_version = delete $args{default_yaml_version}; my $duplicate_keys = delete $args{duplicate_keys}; unless (defined $duplicate_keys) { $duplicate_keys = 0; } my $preserve = delete $args{preserve} || 0; if ($preserve == 1) { $preserve = PRESERVE_ORDER | PRESERVE_SCALAR_STYLE | PRESERVE_FLOW_STYLE | PRESERVE_ALIAS; } my $cyclic_refs = delete $args{cyclic_refs} || '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, duplicate_keys => $duplicate_keys, }, $class; $self->init; return $self; } sub clone { my ($self) = @_; my $clone = { schemas => $self->{schemas}, schema => $self->{schema}, default_yaml_version => $self->{default_yaml_version}, cyclic_refs => $self->cyclic_refs, preserve => $self->{preserve}, }; return bless $clone, ref $self; } sub init { my ($self) = @_; $self->set_docs([]); $self->set_stack([]); $self->set_anchors({}); $self->set_yaml_version($self->default_yaml_version); $self->set_schema($self->schemas->{ $self->yaml_version } ); } sub docs { return $_[0]->{docs} } sub stack { return $_[0]->{stack} } sub anchors { return $_[0]->{anchors} } sub set_docs { $_[0]->{docs} = $_[1] } sub set_stack { $_[0]->{stack} = $_[1] } sub set_anchors { $_[0]->{anchors} = $_[1] } sub schemas { return $_[0]->{schemas} } sub schema { return $_[0]->{schema} } sub set_schema { $_[0]->{schema} = $_[1] } sub cyclic_refs { return $_[0]->{cyclic_refs} } sub set_cyclic_refs { $_[0]->{cyclic_refs} = $_[1] } sub yaml_version { return $_[0]->{yaml_version} } sub set_yaml_version { $_[0]->{yaml_version} = $_[1] } sub default_yaml_version { return $_[0]->{default_yaml_version} } sub preserve_order { return $_[0]->{preserve} & PRESERVE_ORDER } sub preserve_scalar_style { return $_[0]->{preserve} & PRESERVE_SCALAR_STYLE } sub preserve_flow_style { return $_[0]->{preserve} & PRESERVE_FLOW_STYLE } sub preserve_alias { return $_[0]->{preserve} & PRESERVE_ALIAS } sub duplicate_keys { return $_[0]->{duplicate_keys} } sub document_start_event { my ($self, $event) = @_; my $stack = $self->stack; if ($event->{version_directive}) { my $version = $event->{version_directive}; $version = "$version->{major}.$version->{minor}"; if ($self->{schemas}->{ $version }) { $self->set_yaml_version($version); $self->set_schema($self->schemas->{ $version }); } else { $self->set_yaml_version($self->default_yaml_version); $self->set_schema($self->schemas->{ $self->default_yaml_version }); } } my $ref = []; push @$stack, { type => 'document', ref => $ref, data => $ref, event => $event }; } sub document_end_event { my ($self, $event) = @_; my $stack = $self->stack; my $last = pop @$stack; $last->{type} eq 'document' or die "Expected mapping, but got $last->{type}"; if (@$stack) { die "Got unexpected end of document"; } my $docs = $self->docs; push @$docs, $last->{ref}->[0]; $self->set_anchors({}); $self->set_stack([]); } sub mapping_start_event { my ($self, $event) = @_; my ($data, $on_data) = $self->schema->create_mapping($self, $event); my $ref = { type => 'mapping', ref => [], data => \$data, event => $event, on_data => $on_data, }; my $stack = $self->stack; my $preserve_order = $self->preserve_order; my $preserve_style = $self->preserve_flow_style; my $preserve_alias = $self->preserve_alias; if (($preserve_order or $preserve_style or $preserve_alias) and not tied(%$data)) { tie %$data, 'YAML::PP::Preserve::Hash'; } if ($preserve_style) { my $t = tied %$data; $t->{style} = $event->{style}; } push @$stack, $ref; if (defined(my $anchor = $event->{anchor})) { if ($preserve_alias) { my $t = tied %$data; unless (exists $self->anchors->{ $anchor }) { # Repeated anchors cannot be preserved $t->{alias} = $anchor; } } $self->anchors->{ $anchor } = { data => $ref->{data} }; } } sub mapping_end_event { my ($self, $event) = @_; my $stack = $self->stack; my $last = pop @$stack; my ($ref, $data) = @{ $last }{qw/ ref data /}; $last->{type} eq 'mapping' or die "Expected mapping, but got $last->{type}"; my @merge_keys; my @ref; for (my $i = 0; $i < @$ref; $i += 2) { my $key = $ref->[ $i ]; if (ref $key eq 'YAML::PP::Type::MergeKey') { my $merge = $ref->[ $i + 1 ]; if ((reftype($merge) || '') eq 'HASH') { push @merge_keys, $merge; } elsif ((reftype($merge) || '') eq 'ARRAY') { for my $item (@$merge) { if ((reftype($item) || '') eq 'HASH') { push @merge_keys, $item; } else { die "Expected hash for merge key"; } } } else { die "Expected hash or array for merge key"; } } else { push @ref, $key, $ref->[ $i + 1 ]; } } for my $merge (@merge_keys) { for my $key (keys %$merge) { unless (exists $$data->{ $key }) { $$data->{ $key } = $merge->{ $key }; } } } my $on_data = $last->{on_data} || sub { my ($self, $hash, $items) = @_; my %seen; for (my $i = 0; $i < @$items; $i += 2) { my ($key, $value) = @$items[ $i, $i + 1 ]; $key = '' unless defined $key; if (ref $key) { $key = $self->stringify_complex($key); } if ($seen{ $key }++ and not $self->duplicate_keys) { croak "Duplicate key '$key'"; } $$hash->{ $key } = $value; } }; $on_data->($self, $data, \@ref); push @{ $stack->[-1]->{ref} }, $$data; if (defined(my $anchor = $last->{event}->{anchor})) { $self->anchors->{ $anchor }->{finished} = 1; } return; } sub sequence_start_event { my ($self, $event) = @_; my ($data, $on_data) = $self->schema->create_sequence($self, $event); my $ref = { type => 'sequence', ref => [], data => \$data, event => $event, on_data => $on_data, }; my $stack = $self->stack; my $preserve_style = $self->preserve_flow_style; my $preserve_alias = $self->preserve_alias; if ($preserve_style or $preserve_alias and not tied(@$data)) { tie @$data, 'YAML::PP::Preserve::Array', @$data; my $t = tied @$data; $t->{style} = $event->{style}; } push @$stack, $ref; if (defined(my $anchor = $event->{anchor})) { if ($preserve_alias) { my $t = tied @$data; unless (exists $self->anchors->{ $anchor }) { # Repeated anchors cannot be preserved $t->{alias} = $anchor; } } $self->anchors->{ $anchor } = { data => $ref->{data} }; } } sub sequence_end_event { my ($self, $event) = @_; my $stack = $self->stack; my $last = pop @$stack; $last->{type} eq 'sequence' or die "Expected mapping, but got $last->{type}"; my ($ref, $data) = @{ $last }{qw/ ref data /}; my $on_data = $last->{on_data} || sub { my ($self, $array, $items) = @_; push @$$array, @$items; }; $on_data->($self, $data, $ref); push @{ $stack->[-1]->{ref} }, $$data; if (defined(my $anchor = $last->{event}->{anchor})) { my $test = $self->anchors->{ $anchor }; $self->anchors->{ $anchor }->{finished} = 1; } return; } sub stream_start_event {} sub stream_end_event {} sub scalar_event { my ($self, $event) = @_; DEBUG and warn "CONTENT $event->{value} ($event->{style})\n"; my $value = $self->schema->load_scalar($self, $event); my $last = $self->stack->[-1]; my $preserve_alias = $self->preserve_alias; my $preserve_style = $self->preserve_scalar_style; if (($preserve_style or $preserve_alias) and not ref $value) { my %args = ( value => $value, tag => $event->{tag}, ); if ($preserve_style) { $args{style} = $event->{style}; } if ($preserve_alias and defined $event->{anchor}) { my $anchor = $event->{anchor}; unless (exists $self->anchors->{ $anchor }) { # Repeated anchors cannot be preserved $args{alias} = $event->{anchor}; } } $value = YAML::PP::Preserve::Scalar->new( %args ); } if (defined (my $name = $event->{anchor})) { $self->anchors->{ $name } = { data => \$value, finished => 1 }; } push @{ $last->{ref} }, $value; } sub alias_event { my ($self, $event) = @_; my $value; my $name = $event->{value}; if (my $anchor = $self->anchors->{ $name }) { # We know this is a cyclic ref since the node hasn't # been constructed completely yet unless ($anchor->{finished} ) { my $cyclic_refs = $self->cyclic_refs; if ($cyclic_refs ne 'allow') { if ($cyclic_refs eq 'fatal') { die "Found cyclic ref for alias '$name'"; } if ($cyclic_refs eq 'warn') { $anchor = { data => \undef }; warn "Found cyclic ref for alias '$name'"; } elsif ($cyclic_refs eq 'ignore') { $anchor = { data => \undef }; } } } $value = $anchor->{data}; } else { croak "No anchor defined for alias '$name'"; } my $last = $self->stack->[-1]; push @{ $last->{ref} }, $$value; } sub stringify_complex { my ($self, $data) = @_; return $data if ( ref $data eq 'YAML::PP::Preserve::Scalar' and ($self->preserve_scalar_style or $self->preserve_alias) ); require Data::Dumper; local $Data::Dumper::Quotekeys = 0; local $Data::Dumper::Terse = 1; local $Data::Dumper::Indent = 0; local $Data::Dumper::Useqq = 0; local $Data::Dumper::Sortkeys = 1; my $string = Data::Dumper->Dump([$data], ['data']); $string =~ s/^\$data = //; return $string; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Constructor - Constructing data structure from parsing events =head1 METHODS =over =item new The Constructor constructor my $constructor = YAML::PP::Constructor->new( schema => $schema, cyclic_refs => $cyclic_refs, ); =item init Resets any data being used during construction. $constructor->init; =item document_start_event, document_end_event, mapping_start_event, mapping_end_event, sequence_start_event, sequence_end_event, scalar_event, alias_event, stream_start_event, stream_end_event These methods are called from L: $constructor->document_start_event($event); =item anchors, set_anchors Helper for storing anchors during construction =item docs, set_docs Helper for storing resulting documents during construction =item stack, set_stack Helper for storing data during construction =item cyclic_refs, set_cyclic_refs Option for controlling the behaviour when finding circular references =item schema, set_schema Holds a L object =item stringify_complex When constructing a hash and getting a non-scalar key, this method is used to stringify the key. It uses a terse Data::Dumper output. Other modules, like L, use the default stringification, C for example. =back =cut Writer000755001750001750 014161720075 14674 5ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPFile.pm100644001750001750 345714161720075 16262 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Writeruse strict; use warnings; package YAML::PP::Writer::File; our $VERSION = '0.031'; # 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 014161720075 14620 5ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPJSON.pm100644001750001750 1360414161720075 16113 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::JSON; our $VERSION = '0.031'; # 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 Schema: L =head1 CONFIGURATION The official YAML 1.2 JSON Schema wants all strings to be quoted. YAML::PP currently does not require that (it might do this optionally in the future). That means, there are no empty nodes allowed in the official schema. Example: --- key: The default behaviour of YAML::PP::Schema::JSON is to return an empty string, so it would be equivalent to: --- key: '' You can configure it to resolve this as C: my $yp = YAML::PP->new( schema => [qw/ JSON empty=null /] ); This way it is equivalent to: --- key: null The default is: my $yp = YAML::PP->new( schema => [qw/ JSON empty=str /] ); =head1 METHODS =over =item register Called by YAML::PP::Schema =item represent_bool, represent_float, represent_int, represent_literal, represent_undef Functions to represent the several node types. represent_bool($representer, $node); =back =cut Perl.pm100644001750001750 5704314161720075 16251 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Perl; our $VERSION = '0.031'; # 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}; @$tags = ('!perl') unless @$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 = ''; } } # Code if ($loadcode) { my $load_code = sub { my ($constructor, $event) = @_; return $self->evaluate_code($event->{value}); }; my $load_code_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/code:}{}; my $sub = $self->evaluate_code($event->{value}); return $self->object($sub, $class); }; $schema->add_resolver( tag => "$_/code", match => [ all => $load_code], implicit => 0, ) for @perl_tags; $schema->add_resolver( tag => qr{^$perl_regex/code:$class_regex$}, match => [ all => $load_code_blessed ], implicit => 0, ); $schema->add_resolver( tag => qr{^$perl_regex/code:.+}, match => [ all => $load_code ], implicit => 0, ) if $no_objects; } else { my $loadcode_dummy = sub { return sub {} }; my $loadcode_blessed_dummy = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/code:}{}; return $self->object(sub {}, $class); }; $schema->add_resolver( tag => "$_/code", match => [ all => $loadcode_dummy ], implicit => 0, ) for @perl_tags; $schema->add_resolver( tag => qr{^$perl_regex/code:$class_regex$}, match => [ all => $loadcode_blessed_dummy ], implicit => 0, ); $schema->add_resolver( tag => qr{^$perl_regex/code:.+}, match => [ all => $loadcode_dummy ], implicit => 0, ) if $no_objects; } # Glob my $load_glob = sub { my $value = undef; return \$value; }; my $load_glob_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/glob:}{}; my $value = undef; return $self->object(\$value, $class); }; $schema->add_mapping_resolver( tag => "$_/glob", on_create => $load_glob, on_data => sub { my ($constructor, $ref, $list) = @_; $$ref = $self->construct_glob($list); }, ) for @perl_tags; if ($no_objects) { $schema->add_mapping_resolver( tag => qr{^$perl_regex/glob:.+$}, on_create => $load_glob, on_data => sub { my ($constructor, $ref, $list) = @_; $$ref = $self->construct_glob($list); }, ); } else { $schema->add_mapping_resolver( tag => qr{^$perl_regex/glob:$class_regex$}, on_create => $load_glob_blessed, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_glob($list); }, ); } # Regex my $load_regex = sub { my ($constructor, $event) = @_; return $self->construct_regex($event->{value}); }; my $load_regex_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/regexp:}{}; my $qr = $self->construct_regex($event->{value}); return $self->object($qr, $class); }; $schema->add_resolver( tag => "$_/regexp", match => [ all => $load_regex ], implicit => 0, ) for @perl_tags; $schema->add_resolver( tag => qr{^$perl_regex/regexp:$class_regex$}, match => [ all => $load_regex_blessed ], implicit => 0, ); $schema->add_resolver( tag => qr{^$perl_regex/regexp:$class_regex$}, match => [ all => $load_regex ], implicit => 0, ) if $no_objects; my $load_sequence = sub { return [] }; my $load_sequence_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/array:}{}; return $self->object([], $class); }; $schema->add_sequence_resolver( tag => "$_/array", on_create => $load_sequence, ) for @perl_tags; $schema->add_sequence_resolver( tag => qr{^$perl_regex/array:$class_regex$}, on_create => $load_sequence_blessed, ); $schema->add_sequence_resolver( tag => qr{^$perl_regex/array:.+$}, on_create => $load_sequence, ) if $no_objects; my $load_mapping = sub { return {} }; my $load_mapping_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/hash:}{}; return $self->object({}, $class); }; $schema->add_mapping_resolver( tag => "$_/hash", on_create => $load_mapping, ) for @perl_tags; $schema->add_mapping_resolver( tag => qr{^$perl_regex/hash:$class_regex$}, on_create => $load_mapping_blessed, ); $schema->add_mapping_resolver( tag => qr{^$perl_regex/hash:.+$}, on_create => $load_mapping, ) if $no_objects; # Ref my $load_ref = sub { my $value = undef; return \$value; }; my $load_ref_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/ref:}{}; my $value = undef; return $self->object(\$value, $class); }; $schema->add_mapping_resolver( tag => "$_/ref", on_create => $load_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_ref($list); }, ) for @perl_tags; $schema->add_mapping_resolver( tag => qr{^$perl_regex/ref:$class_regex$}, on_create => $load_ref_blessed, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_ref($list); }, ); $schema->add_mapping_resolver( tag => qr{^$perl_regex/ref:.+$}, on_create => $load_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_ref($list); }, ) if $no_objects; # Scalar ref my $load_scalar_ref = sub { my $value = undef; return \$value; }; my $load_scalar_ref_blessed = sub { my ($constructor, $event) = @_; my $class = $event->{tag}; $class =~ s{^$perl_regex/scalar:}{}; my $value = undef; return $self->object(\$value, $class); }; $schema->add_mapping_resolver( tag => "$_/scalar", on_create => $load_scalar_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_scalar($list); }, ) for @perl_tags; $schema->add_mapping_resolver( tag => qr{^$perl_regex/scalar:$class_regex$}, on_create => $load_scalar_ref_blessed, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_scalar($list); }, ); $schema->add_mapping_resolver( tag => qr{^$perl_regex/scalar:.+$}, on_create => $load_scalar_ref, on_data => sub { my ($constructor, $ref, $list) = @_; $$$ref = $self->construct_scalar($list); }, ) if $no_objects; $schema->add_representer( scalarref => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/scalar"; $node->{data} = $self->represent_scalar($node->{value}); }, ); $schema->add_representer( refref => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/ref"; $node->{data} = $self->represent_ref($node->{value}); }, ); $schema->add_representer( coderef => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/code"; $node->{data} = $self->represent_code($node->{value}); }, ); $schema->add_representer( glob => 1, code => sub { my ($rep, $node) = @_; $node->{tag} = $perl_tag . "/glob"; $node->{data} = $self->represent_glob($node->{value}); }, ); $schema->add_representer( class_matches => 1, code => sub { my ($rep, $node) = @_; my $blessed = blessed $node->{value}; my $tag_blessed = ":$blessed"; if ($blessed !~ m/^$class_regex$/) { $tag_blessed = ''; } $node->{tag} = sprintf "$perl_tag/%s%s", lc($node->{reftype}), $tag_blessed; if ($node->{reftype} eq 'HASH') { $node->{data} = $node->{value}; } elsif ($node->{reftype} eq 'ARRAY') { $node->{data} = $node->{value}; } # Fun with regexes in perl versions! elsif ($node->{reftype} eq 'REGEXP') { if ($blessed eq 'Regexp') { $node->{tag} = $perl_tag . "/regexp"; } $node->{data} = $self->represent_regex($node->{value}); } elsif ($node->{reftype} eq 'SCALAR') { # in perl <= 5.10 regex reftype(regex) was SCALAR if ($blessed eq 'Regexp') { $node->{tag} = $perl_tag . '/regexp'; $node->{data} = $self->represent_regex($node->{value}); } # In perl <= 5.10 there seemed to be no better pure perl # way to detect a blessed regex? elsif ( $] <= 5.010001 and not defined ${ $node->{value} } and $node->{value} =~ m/^\(\?/ ) { $node->{tag} = $perl_tag . '/regexp' . $tag_blessed; $node->{data} = $self->represent_regex($node->{value}); } else { # phew, just a simple scalarref $node->{data} = $self->represent_scalar($node->{value}); } } elsif ($node->{reftype} eq 'REF') { $node->{data} = $self->represent_ref($node->{value}); } elsif ($node->{reftype} eq 'CODE') { $node->{data} = $self->represent_code($node->{value}); } elsif ($node->{reftype} eq 'GLOB') { $node->{data} = $self->represent_glob($node->{value}); } else { die "Reftype '$node->{reftype}' not implemented"; } return 1; }, ); return; } sub evaluate_code { my ($self, $code) = @_; unless ($code =~ m/^ \s* \{ .* \} \s* \z/xs) { die "Malformed code"; } $code = "sub $code"; my $sub = eval $code; if ($@) { die "Couldn't eval code: $@>>$code<<"; } return $sub; } sub construct_regex { my ($self, $regex) = @_; if ($regex =~ m/^$qr_prefix(.*)\)\z/s) { $regex = $1; } my $qr = qr{$regex}; return $qr; } sub construct_glob { my ($self, $list) = @_; if (@$list % 2) { die "Unexpected data in perl/glob construction"; } my %globdata = @$list; my $name = delete $globdata{NAME} or die "Missing NAME in perl/glob"; my $pkg = delete $globdata{PACKAGE}; $pkg = 'main' unless defined $pkg; my @allowed = qw(SCALAR ARRAY HASH CODE IO); delete @globdata{ @allowed }; if (my @keys = keys %globdata) { die "Unexpected keys in perl/glob: @keys"; } no strict 'refs'; return *{"${pkg}::$name"}; } sub construct_scalar { my ($self, $list) = @_; if (@$list != 2) { die "Unexpected data in perl/scalar construction"; } my ($key, $value) = @$list; unless ($key eq '=') { die "Unexpected data in perl/scalar construction"; } return $value; } sub construct_ref { &construct_scalar; } sub represent_scalar { my ($self, $value) = @_; return { '=' => $$value }; } sub represent_ref { &represent_scalar; } sub represent_code { my ($self, $code) = @_; require B::Deparse; my $deparse = B::Deparse->new("-p", "-sC"); return $deparse->coderef2text($code); } my @stats = qw/ device inode mode links uid gid rdev size atime mtime ctime blksize blocks /; sub represent_glob { my ($self, $glob) = @_; my %glob; for my $type (qw/ PACKAGE NAME SCALAR ARRAY HASH CODE IO /) { my $value = *{ $glob }{ $type }; if ($type eq 'SCALAR') { $value = $$value; } elsif ($type eq 'IO') { if (defined $value) { undef $value; $value->{stat} = {}; if ($value->{fileno} = fileno(*{ $glob })) { @{ $value->{stat} }{ @stats } = stat(*{ $glob }); $value->{tell} = tell *{ $glob }; } } } $glob{ $type } = $value if defined $value; } return \%glob; } sub represent_regex { my ($self, $regex) = @_; $regex = "$regex"; if ($regex =~ m/^$qr_prefix(.*)\)\z/s) { $regex = $1; } return $regex; } sub object { my ($self, $data, $class) = @_; return bless $data, $class; } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Perl - Schema for serializing perl objects and special types =head1 SYNOPSIS use YAML::PP; # This can be dangerous when loading untrusted YAML! my $yp = YAML::PP->new( schema => [qw/ + Perl /] ); # or my $yp = YAML::PP->new( schema => [qw/ Core Perl /] ); my $yaml = $yp->dump_string(sub { return 23 }); # loading code references # This is very dangerous when loading untrusted YAML!! my $yp = YAML::PP->new( schema => [qw/ + Perl +loadcode /] ); my $code = $yp->load_string(<<'EOM'); --- !perl/code | { use 5.010; my ($name) = @_; say "Hello $name!"; } EOM $code->("Ingy"); =head1 DESCRIPTION This schema allows you to load and dump perl objects and special types. Please note that loading objects of arbitrary classes can be dangerous in Perl. You have to load the modules yourself, but if an exploitable module is loaded and an object is created, its C method will be called when the object falls out of scope. L is an example that can be exploitable and might remove arbitrary files. Dumping code references is on by default, but not loading (because that is easily exploitable since it's using string C). =head2 Tag Styles You can define the style of tags you want to support: my $yp_perl_two_one = YAML::PP->new( schema => [qw/ + Perl tags=!!perl+!perl /], ); =over =item C (default) Only C tags are supported. =item C Only C tags are supported. =item C Both C and C are supported when loading. When dumping, C is used. =item C Both C and C are supported when loading. When dumping, C is used. =back L.pm, L and L are using C when dumping. L.pm and L are supporting both C and C when loading. L currently only supports the latter. =head2 Allow only certain classes Since v0.017 Blessing arbitrary objects can be dangerous. Maybe you want to allow blessing only specific classes and ignore others. For this you have to instantiate a Perl Schema object first and use the C option. Currently it only allows a list of strings: my $perl = YAML::PP::Schema::Perl->new( classes => ['Foo', 'Bar'], ); my $yp = YAML::PP::Perl->new( schema => [qw/ + /, $perl], ); Allowed classes will be loaded and dumped as usual. The others will be ignored. If you want to allow no objects at all, pass an empty array ref. =cut =head2 EXAMPLES This is a list of the currently supported types and how they are dumped into YAML: =cut ### BEGIN EXAMPLE =pod =over 4 =item array # Code [ qw/ one two three four / ] # YAML --- - one - two - three - four =item array_blessed # Code bless [ qw/ one two three four / ], "Just::An::Arrayref" # YAML --- !perl/array:Just::An::Arrayref - one - two - three - four =item circular # Code my $circle = bless [ 1, 2 ], 'Circle'; push @$circle, $circle; $circle; # YAML --- &1 !perl/array:Circle - 1 - 2 - *1 =item coderef # Code sub { my (%args) = @_; return $args{x} + $args{y}; } # YAML --- !perl/code |- { use warnings; use strict; (my(%args) = @_); (return ($args{'x'} + $args{'y'})); } =item coderef_blessed # Code bless sub { my (%args) = @_; return $args{x} - $args{y}; }, "I::Am::Code" # YAML --- !perl/code:I::Am::Code |- { use warnings; use strict; (my(%args) = @_); (return ($args{'x'} - $args{'y'})); } =item hash # Code { U => 2, B => 52, } # YAML --- B: 52 U: 2 =item hash_blessed # Code bless { U => 2, B => 52, }, 'A::Very::Exclusive::Class' # YAML --- !perl/hash:A::Very::Exclusive::Class B: 52 U: 2 =item refref # Code my $ref = { a => 'hash' }; my $refref = \$ref; $refref; # YAML --- !perl/ref =: a: hash =item refref_blessed # Code my $ref = { a => 'hash' }; my $refref = bless \$ref, 'Foo'; $refref; # YAML --- !perl/ref:Foo =: a: hash =item regexp # Code my $string = 'unblessed'; qr{$string} # YAML --- !perl/regexp unblessed =item regexp_blessed # Code my $string = 'blessed'; bless qr{$string}, "Foo" # YAML --- !perl/regexp:Foo blessed =item scalarref # Code my $scalar = "some string"; my $scalarref = \$scalar; $scalarref; # YAML --- !perl/scalar =: some string =item scalarref_blessed # Code my $scalar = "some other string"; my $scalarref = bless \$scalar, 'Foo'; $scalarref; # YAML --- !perl/scalar:Foo =: some other string =back =cut ### END EXAMPLE =head2 METHODS =over =item new my $perl = YAML::PP::Schema::Perl->new( tags => "!perl", classes => ['MyClass'], loadcode => 1, ); 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 construct_glob, represent_glob C returns a glob from a hash. my $glob = YAML::PP::Schema::Perl->construct_glob($hash); C returns a hash representation of the glob. my $hash = YAML::PP::Schema::Perl->represent_glob($glob); =item object Does the same as C: my $object = YAML::PP::Schema::Perl->object($data, $class); =back =cut Core.pm100644001750001750 740314161720075 16212 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Core; our $VERSION = '0.031'; # 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 Schema: L Here you can see all Schemas and examples implemented by YAML::PP: L =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut generate-schema-html.pl100644001750001750 1326414161720075 17061 0ustar00tinatina000000000000YAML-PP-0.031/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/../ext/yaml-test-schema/yaml-schema.yaml"; my $modulesfile = "$Bin/../examples/yaml-schema-modules.yaml"; my $htmlfile = "$Bin/../gh-pages/schema-examples.html"; my $data = YAML::PP::LoadFile($file); my $modules = YAML::PP::LoadFile($modulesfile); my @mods = qw/ YAML YAML::Syck YAML::XS /; my %examples; for my $input (sort keys %$data) { my $schemas = $data->{ $input }; my @keys = keys %$schemas; for my $key (@keys) { my $def = $schemas->{ $key }; my @schemas = split m/ *, */, $key; for my $schema (@schemas) { $examples{ $input }->{ $schema } = $def; } } } my @keys = qw/ failsafe json core yaml11 /; for my $input (sort keys %examples) { my $schemas = $examples{ $input }; my $str = 0; for my $schema (@keys) { my $example = $schemas->{ $schema }; unless ($example) { $example = $schemas->{ $schema } = [ 'todo', '', '', '' ]; } if ($example->[0] eq 'str' or $example->[0] eq 'todo') { $str++; } } if ($str == 4) { delete $examples{ $input }; } } my %type_index = ( null => 0, bool => 1, float => 2, inf => 3, nan => 4, int => 5, str => 6, todo => 7, ); my $table = schema_table(\%examples, $modules); my $html = generate_html($table); open my $fh, '>', $htmlfile or die $!; print $fh $html; close $fh; sub sort_rows { my ($x, $y, $a, $b) = @_; $type_index{ $x->{yaml11}->[0] } <=> $type_index{ $y->{yaml11}->[0] } || $type_index{ $x->{core}->[0] } <=> $type_index{ $y->{core}->[0] } || $type_index{ $x->{json}->[0] } <=> $type_index{ $y->{json}->[0] } || lc $a cmp lc $b || $a cmp $b } sub schema_table { my ($examples) = @_; my $html = ''; my @sorted = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { not m/^!!\w/ } keys %$examples; my @sorted_explicit = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { m/^!!\w/ } keys %$examples; my @all = (@sorted, @sorted_explicit); $html .= qq{\n}; my $header; $header .= qq{}; $header .= join '', map { my $m = $_ eq 'YAML' ? 'YAML.pm' : $_; qq{\n}; } (qw/ Failsafe JSON Core /, 'YAML 1.1', @mods); $header .= qq{\n}; $html .= $header; $html .= qq{} . (qq{} x 7) . qq{\n}; for my $i (0 .. $#all) { my $input = $all[ $i ]; if ($i and $i % 30 == 0) { $html .= $header; } my $schemas = $examples->{ $input }; my $mods = $modules->{ $input }; my $input_escaped = uri_escape($input); $input =~ s/ / /g; $html .= qq{}; } else { $html .= qq{}; } } $html .= qq{\n}; } $html .= "
YAML::PPOther Perl Modules
Input YAML$m
TypeOutput
$input}; for my $mod (@mods) { my $result = $mods->{ $mod }; $schemas->{ $mod } = [ $result->{type}, '', $result->{dump} // '' ]; } for my $schema (@keys, @mods) { my $example = $schemas->{ $schema }; my $class = 'type-str'; my ($type, $perl, $out) = @$example; $class = "type-$type"; for ($out) { s/ / /g; } if ($type eq 'str') { $html .= qq{$type$type
$out
"; return $html; } #sub format_perl { # my ($type, $perl) = @_; # my $perlcode; # local $Data::Dumper::Terse = 1; # local $Data::Dumper::Useqq = 1; # if ($type eq 'null') { # $perlcode = 'undef'; # } # elsif ($type eq 'float' or $type eq 'int') { # $perlcode = $perl; # } # elsif ($type eq 'inf') { # if ($perl eq 'inf-neg()') { # $perlcode = '- "inf" + 0'; # } # else { # $perlcode = '"inf" + 0'; # } # } # elsif ($type eq 'nan') { # $perlcode = '"nan" + 0'; # } # elsif ($type eq 'bool') { # $perlcode = $perl; # } # else { # $perlcode = Data::Dumper->Dump([$perl], ['perl']); # } # return $perlcode; #} sub generate_html { my ($content) = @_; my $html = <<'EOM'; YAML Schema examples in YAML::PP and other Perl Modules YAML Test Suite Test Cases | Schema examples | Schema comparison

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

EOM $html .= $content; $html .= <<'EOM'; EOM return $html; } Merge.pm100644001750001750 467214161720075 16366 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Merge; our $VERSION = '0.031'; # VERSION use YAML::PP::Type::MergeKey; sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => 'tag:yaml.org,2002:merge', match => [ equals => '<<' => YAML::PP::Type::MergeKey->new ], ); } 1; __END__ =pod =encoding utf-8 =head1 NAME YAML::PP::Schema::Merge - Enabling YAML merge keys for mappings =head1 SYNOPSIS use YAML::PP; my $yp = YAML::PP->new( schema => [qw/ + Merge /] ); my $yaml = <<'EOM'; --- - &CENTER { x: 1, y: 2 } - &LEFT { x: 0, y: 2 } - &BIG { r: 10 } - &SMALL { r: 1 } # All the following maps are equal: - # Explicit keys x: 1 y: 2 r: 10 label: center/big - # Merge one map << : *CENTER r: 10 label: center/big - # Merge multiple maps << : [ *CENTER, *BIG ] label: center/big - # Override << : [ *BIG, *LEFT, *SMALL ] x: 1 label: center/big EOM my $data = $yp->load_string($yaml); # $data->[4] == $data->[5] == $data->[6] == $data->[7] =head1 DESCRIPTION See L for the specification. Quote: "Specify one or more mappings to be merged with the current one. The C<< << >> merge key is used to indicate that all the keys of one or more specified maps should be inserted into the current map. If the value associated with the key is a single mapping node, each of its key/value pairs is inserted into the current mapping, unless the key already exists in it. If the value associated with the merge key is a sequence, then this sequence is expected to contain mapping nodes and each of these nodes is merged in turn according to its order in the sequence. Keys in mapping nodes earlier in the sequence override keys specified in later mapping nodes." The implementation of this in a generic way is not trivial, because we also have to handle duplicate keys, and YAML::PP allows you to write your own handler for processing mappings. So the inner API of that is not stable at this point. Note that if you enable this schema, a plain scalar `<<` will be seen as special anywhere in your document, so if you want a literal `<<`, you have to put it in quotes. Note that the performed merge is not a "deep merge". Only top-level keys are merged. =head1 METHODS =over =item register Called by YAML::PP::Schema =back =cut include000755001750001750 014161720075 14370 5ustar00tinatina000000000000YAML-PP-0.031/t/datainclude.yaml100644001750001750 7614161720075 17002 0ustar00tinatina000000000000YAML-PP-0.031/t/data/include--- - !include include1.yaml - !include include2.yaml - item3 Type000755001750001750 014161720075 14341 5ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PPMergeKey.pm100644001750001750 60114161720075 16524 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Typeuse strict; use warnings; package YAML::PP::Type::MergeKey; our $VERSION = '0.031'; # 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 503414161720075 16544 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Binary; our $VERSION = '0.031'; # 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 include2.yaml100644001750001750 5014161720075 17054 0ustar00tinatina000000000000YAML-PP-0.031/t/data/include--- - include2 - !include include3.yaml include1.yaml100644001750001750 1514161720075 17054 0ustar00tinatina000000000000YAML-PP-0.031/t/data/include--- include1 include3.yaml100644001750001750 1514161720075 17056 0ustar00tinatina000000000000YAML-PP-0.031/t/data/include--- include3 YAML1_1.pm100644001750001750 1460114161720075 16403 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::YAML1_1; our $VERSION = '0.031'; # VERSION use YAML::PP::Schema::JSON qw/ represent_int represent_float represent_literal represent_bool represent_undef /; use YAML::PP::Common qw/ YAML_PLAIN_SCALAR_STYLE /; #https://yaml.org/type/bool.html # y|Y|yes|Yes|YES|n|N|no|No|NO # |true|True|TRUE|false|False|FALSE # |on|On|ON|off|Off|OFF # https://yaml.org/type/float.html # [-+]?([0-9][0-9_]*)?\.[0-9.]*([eE][-+][0-9]+)? (base 10) # |[-+]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]* (base 60) # |[-+]?\.(inf|Inf|INF) # (infinity) # |\.(nan|NaN|NAN) # (not a number) # https://yaml.org/type/int.html # [-+]?0b[0-1_]+ # (base 2) # |[-+]?0[0-7_]+ # (base 8) # |[-+]?(0|[1-9][0-9_]*) # (base 10) # |[-+]?0x[0-9a-fA-F_]+ # (base 16) # |[-+]?[1-9][0-9_]*(:[0-5]?[0-9])+ # (base 60) # https://yaml.org/type/null.html # ~ # (canonical) # |null|Null|NULL # (English) # | # (Empty) my $RE_INT_1_1 = qr{^([+-]?(?:0|[1-9][0-9_]*))$}; #my $RE_FLOAT_1_1 = qr{^([+-]?([0-9][0-9_]*)?\.[0-9.]*([eE][+-][0-9]+)?)$}; # https://yaml.org/type/float.html has a bug. The regex says \.[0-9.], but # probably means \.[0-9_] my $RE_FLOAT_1_1 = qr{^([+-]?(?:[0-9][0-9_]*)?\.[0-9_]*(?:[eE][+-][0-9]+)?)$}; my $RE_SEXAGESIMAL = qr{^([+-]?[0-9][0-9_]*(:[0-5]?[0-9])+\.[0-9_]*)$}; my $RE_SEXAGESIMAL_INT = qr{^([-+]?[1-9][0-9_]*(:[0-5]?[0-9])+)$}; my $RE_INT_OCTAL_1_1 = qr{^([+-]?)0([0-7_]+)$}; my $RE_INT_HEX_1_1 = qr{^([+-]?)(0x[0-9a-fA-F_]+)$}; my $RE_INT_BIN_1_1 = qr{^([-+]?)(0b[0-1_]+)$}; sub _from_oct { my ($constructor, $event, $matches) = @_; my ($sign, $oct) = @$matches; $oct =~ tr/_//d; my $result = oct $oct; $result = -$result if $sign eq '-'; return $result; } sub _from_hex { my ($constructor, $event, $matches) = @_; my ($sign, $hex) = @$matches; my $result = hex $hex; $result = -$result if $sign eq '-'; return $result; } sub _sexa_to_float { my ($constructor, $event, $matches) = @_; my ($float) = @$matches; my $result = 0; my $i = 0; my $sign = 1; $float =~ s/^-// and $sign = -1; for my $part (reverse split m/:/, $float) { $result += $part * ( 60 ** $i ); $i++; } $result = unpack F => pack F => $result; return $result * $sign; } sub _to_float { my ($constructor, $event, $matches) = @_; my ($float) = @$matches; $float =~ tr/_//d; $float = unpack F => pack F => $float; return $float; } sub _to_int { my ($constructor, $event, $matches) = @_; my ($int) = @$matches; $int =~ tr/_//d; 0 + $int; } sub register { my ($self, %args) = @_; my $schema = $args{schema}; $schema->add_resolver( tag => 'tag:yaml.org,2002:null', match => [ equals => $_ => undef ], ) for (qw/ null NULL Null ~ /, ''); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => $_ => $schema->true ], ) for (qw/ true TRUE True y Y yes Yes YES on On ON /); $schema->add_resolver( tag => 'tag:yaml.org,2002:bool', match => [ equals => $_ => $schema->false ], ) for (qw/ false FALSE False n N no No NO off Off OFF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_OCTAL_1_1 => \&_from_oct ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_1_1 => \&_to_int ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_HEX_1_1 => \&_from_hex ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ regex => $RE_FLOAT_1_1 => \&_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_INT_BIN_1_1 => \&_from_oct ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:int', match => [ regex => $RE_SEXAGESIMAL_INT => \&_sexa_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ regex => $RE_SEXAGESIMAL => \&_sexa_to_float ], ); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 + "inf" ], ) for (qw/ .inf .Inf .INF +.inf +.Inf +.INF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 - "inf" ], ) for (qw/ -.inf -.Inf -.INF /); $schema->add_resolver( tag => 'tag:yaml.org,2002:float', match => [ equals => $_ => 0 + "nan" ], ) for (qw/ .nan .NaN .NAN /); $schema->add_resolver( tag => 'tag:yaml.org,2002:str', match => [ all => sub { $_[1]->{value} } ], implicit => 0, ); my $int_flags = B::SVp_IOK; my $float_flags = B::SVp_NOK; $schema->add_representer( flags => $int_flags, code => \&represent_int, ); $schema->add_representer( flags => $float_flags, code => \&represent_float, ); $schema->add_representer( undefined => \&represent_undef, ); $schema->add_representer( equals => $_, code => \&represent_literal, ) for ("", qw/ true TRUE True y Y yes Yes YES on On ON false FALSE False n N n no No NO off Off OFF null NULL Null ~ .inf .Inf .INF -.inf -.Inf -.INF +.inf +.Inf +.INF .nan .NaN .NAN /); $schema->add_representer( regex => qr{$RE_INT_1_1|$RE_FLOAT_1_1|$RE_INT_OCTAL_1_1|$RE_INT_HEX_1_1|$RE_INT_BIN_1_1|$RE_SEXAGESIMAL_INT|$RE_SEXAGESIMAL}, code => \&represent_literal, ); if ($schema->bool_class) { $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 1454214161720075 16727 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Include; our $VERSION = '0.031'; # 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 yaml-test-schema000755001750001750 014161720075 15546 5ustar00tinatina000000000000YAML-PP-0.031/extMakefile100644001750001750 13114161720075 17321 0ustar00tinatina000000000000YAML-PP-0.031/ext/yaml-test-schemagh-pages: git worktree add gh-pages gh-pages update: perl etc/generate-schema-html.pl circular2.yaml100644001750001750 4614161720075 17242 0ustar00tinatina000000000000YAML-PP-0.031/t/data/include--- included: !include circular1.yaml circular1.yaml100644001750001750 4614161720075 17241 0ustar00tinatina000000000000YAML-PP-0.031/t/data/include--- included: !include circular2.yaml Failsafe.pm100644001750001750 134514161720075 17033 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schemause strict; use warnings; package YAML::PP::Schema::Failsafe; our $VERSION = '0.031'; # 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 README.md100644001750001750 17614161720075 17151 0ustar00tinatina000000000000YAML-PP-0.031/ext/yaml-test-schema## YAML Test Data for Schemas (YAML 1.1, YAML 1.2 Core, JSON, Failsafe) [HTML](https://perlpunk.github.io/yaml-test-schema/) schema-test-yaml-modules.pl100644001750001750 342214161720075 17665 0ustar00tinatina000000000000YAML-PP-0.031/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/../ext/yaml-test-schema/yaml-schema.yaml"; my $outputfile = "$Bin/../examples/yaml-schema-modules.yaml"; my $data = YAML::PP::LoadFile($file); my %examples; my %output; my %special = ( (0+'nan').'' => 'nan', (0+'inf').'' => 'inf', (0-'inf').'' => 'inf' ); for my $input (sort keys %$data) { for my $mod (qw/ YAML YAML::XS YAML::Syck /) { my $out = $output{ $input }->{ $mod } ||= {}; my $output; my $load = $mod->can("Load"); my $dump = $mod->can("Dump"); my $data = eval { $load->("--- $input") }; if ($@) { $out->{error} = 1; $out->{type} = 'error'; } else { $out->{type} = get_type($data); $output = $dump->($data); chomp $output; $output =~ s/^--- //; $out->{dump} = $output; } } } YAML::PP::DumpFile($outputfile, \%output); sub get_type { my ($value) = @_; return 'null' unless defined $value; if (ref $value) { if (ref $value eq 'JSON::PP::Boolean') { return 'bool'; } return 'unknown'; } my $flags = B::svref_2object(\$value)->FLAGS; if ($flags & $float_flags) { if (exists $special{ $value }) { return $special{ $value }; } return 'float'; } if ($flags & $int_flags) { return 'int'; } return 'str'; } Tie000755001750001750 014161720075 15341 5ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/SchemaIxHash.pm100644001750001750 463014161720075 17226 0ustar00tinatina000000000000YAML-PP-0.031/lib/YAML/PP/Schema/Tieuse strict; use warnings; package YAML::PP::Schema::Tie::IxHash; our $VERSION = '0.031'; # 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 12024614161720075 20346 0ustar00tinatina000000000000YAML-PP-0.031/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 #empty': YAML: dump: '''#empty''' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '!!null NULL': YAML: dump: 'NULL' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: error: 1 type: error '!!null Null': YAML: dump: 'Null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: error: 1 type: error '!!null null': YAML: dump: 'null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '!!null ~': YAML: dump: '''~''' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '!!str #empty': YAML: dump: '''#empty''' type: str YAML::Syck: dump: '''''' type: str YAML::XS: dump: '''''' type: str '!!str +.INF': YAML: dump: '+.INF' type: str YAML::Syck: dump: '+.INF' type: str YAML::XS: dump: '+.INF' type: str '!!str +.Inf': YAML: dump: '+.Inf' type: str YAML::Syck: dump: '+.Inf' type: str YAML::XS: dump: '+.Inf' type: str '!!str +.inf': YAML: dump: '+.inf' type: str YAML::Syck: dump: '+.inf' type: str YAML::XS: dump: '+.inf' type: str '!!str +0': YAML: dump: '+0' type: str YAML::Syck: dump: '+0' type: str YAML::XS: dump: '''+0''' type: str '!!str +0.3e+3': YAML: dump: '+0.3e+3' type: str YAML::Syck: dump: '''+0.3e+3''' type: str YAML::XS: dump: '''+0.3e+3''' type: str '!!str +0.3e3': YAML: dump: '+0.3e3' type: str YAML::Syck: dump: '''+0.3e3''' type: str YAML::XS: dump: '''+0.3e3''' type: str '!!str +0100_200': YAML: dump: +0100_200 type: str YAML::Syck: dump: +0100_200 type: str YAML::XS: dump: +0100_200 type: str '!!str +0b100': YAML: dump: +0b100 type: str YAML::Syck: dump: +0b100 type: str YAML::XS: dump: +0b100 type: str '!!str +190:20:30': YAML: dump: +190:20:30 type: str YAML::Syck: dump: +190:20:30 type: str YAML::XS: dump: +190:20:30 type: str '!!str +23': YAML: dump: '+23' type: str YAML::Syck: dump: '+23' type: str YAML::XS: dump: '''+23''' type: str '!!str -.INF': YAML: dump: '-.INF' type: str YAML::Syck: dump: '-.INF' type: str YAML::XS: dump: '-.INF' type: str '!!str -.Inf': YAML: dump: '-.Inf' type: str YAML::Syck: dump: '-.Inf' type: str YAML::XS: dump: '-.Inf' type: str '!!str -.inf': YAML: dump: '-.inf' type: str YAML::Syck: dump: '-.inf' type: str YAML::XS: dump: '-.inf' type: str '!!str -0': YAML: dump: '0' type: int YAML::Syck: dump: '''-0''' type: str YAML::XS: dump: '''-0''' type: str '!!str -0100_200': YAML: dump: -0100_200 type: str YAML::Syck: dump: -0100_200 type: str YAML::XS: dump: -0100_200 type: str '!!str -0b101': YAML: dump: -0b101 type: str YAML::Syck: dump: -0b101 type: str YAML::XS: dump: -0b101 type: str '!!str -0x30': YAML: dump: -0x30 type: str YAML::Syck: dump: -0x30 type: str YAML::XS: dump: -0x30 type: str '!!str -190:20:30': YAML: dump: -190:20:30 type: str YAML::Syck: dump: -190:20:30 type: str YAML::XS: dump: -190:20:30 type: str '!!str -23': YAML: dump: '-23' type: int YAML::Syck: dump: '-23' type: str YAML::XS: dump: '''-23''' type: str '!!str -3.14': YAML: dump: '-3.14' type: float YAML::Syck: dump: '''-3.14''' type: str YAML::XS: dump: '''-3.14''' type: str '!!str .0': YAML: dump: '0' type: float YAML::Syck: dump: '.0' type: str YAML::XS: dump: '''.0''' type: str '!!str .3E-1': YAML: dump: '0.03' type: float YAML::Syck: dump: '''.3E-1''' type: str YAML::XS: dump: '''.3E-1''' type: str '!!str .3e+3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e+3''' type: str YAML::XS: dump: '''.3e+3''' type: str '!!str .3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e3''' type: str YAML::XS: dump: '''.3e3''' type: str '!!str .INF': YAML: dump: '.INF' type: str YAML::Syck: dump: '.INF' type: str YAML::XS: dump: '.INF' type: str '!!str .Inf': YAML: dump: '.Inf' type: str YAML::Syck: dump: '.Inf' type: str YAML::XS: dump: '.Inf' type: str '!!str .NAN': YAML: dump: '.NAN' type: str YAML::Syck: dump: '.NAN' type: str YAML::XS: dump: '.NAN' type: str '!!str .NaN': YAML: dump: '.NaN' type: str YAML::Syck: dump: '.NaN' type: str YAML::XS: dump: '.NaN' type: str '!!str .inf': YAML: dump: '.inf' type: str YAML::Syck: dump: '.inf' type: str YAML::XS: dump: '.inf' type: str '!!str .nan': YAML: dump: '.nan' type: str YAML::Syck: dump: '.nan' type: str YAML::XS: dump: '.nan' type: str '!!str 0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: str YAML::XS: dump: '''0''' type: str '!!str 0.0': YAML: dump: '0' type: float YAML::Syck: dump: '''0.0''' type: str YAML::XS: dump: '''0.0''' type: str '!!str 0.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''0.3e3''' type: str YAML::XS: dump: '''0.3e3''' type: str '!!str 00': YAML: dump: '00' type: str YAML::Syck: dump: '''00''' type: str YAML::XS: dump: '''00''' type: str '!!str 001.23': YAML: dump: '001.23' type: str YAML::Syck: dump: '''001.23''' type: str YAML::XS: dump: '''001.23''' type: str '!!str 0011': YAML: dump: '0011' type: str YAML::Syck: dump: '''0011''' type: str YAML::XS: dump: '''0011''' type: str '!!str 010': YAML: dump: '010' type: str YAML::Syck: dump: '''010''' type: str YAML::XS: dump: '''010''' type: str '!!str 02_0': YAML: dump: 02_0 type: str YAML::Syck: dump: 02_0 type: str YAML::XS: dump: 02_0 type: str '!!str 07': YAML: dump: '07' type: str YAML::Syck: dump: '''07''' type: str YAML::XS: dump: '''07''' type: str '!!str 0b0': YAML: dump: 0b0 type: str YAML::Syck: dump: 0b0 type: str YAML::XS: dump: 0b0 type: str '!!str 0b100_101': YAML: dump: 0b100_101 type: str YAML::Syck: dump: 0b100_101 type: str YAML::XS: dump: 0b100_101 type: str '!!str 0o0': YAML: dump: '0o0' type: str YAML::Syck: dump: '0o0' type: str YAML::XS: dump: '0o0' type: str '!!str 0o10': YAML: dump: '0o10' type: str YAML::Syck: dump: '0o10' type: str YAML::XS: dump: '0o10' type: str '!!str 0o7': YAML: dump: '0o7' type: str YAML::Syck: dump: '0o7' type: str YAML::XS: dump: '0o7' type: str '!!str 0x0': YAML: dump: '0x0' type: str YAML::Syck: dump: '0x0' type: str YAML::XS: dump: '0x0' type: str '!!str 0x2_0': YAML: dump: 0x2_0 type: str YAML::Syck: dump: 0x2_0 type: str YAML::XS: dump: 0x2_0 type: str '!!str 0xa': YAML: dump: '0xa' type: str YAML::Syck: dump: '0xa' type: str YAML::XS: dump: '0xa' type: str '!!str 100_000': YAML: dump: 100_000 type: str YAML::Syck: dump: 100_000 type: str YAML::XS: dump: 100_000 type: str '!!str 190:20:30': YAML: dump: 190:20:30 type: str YAML::Syck: dump: 190:20:30 type: str YAML::XS: dump: 190:20:30 type: str '!!str 190:20:30.15': YAML: dump: 190:20:30.15 type: str YAML::Syck: dump: 190:20:30.15 type: str YAML::XS: dump: 190:20:30.15 type: str '!!str 23': YAML: dump: '23' type: int YAML::Syck: dump: '23' type: str YAML::XS: dump: '''23''' type: str '!!str 3.14': YAML: dump: '3.14' type: float YAML::Syck: dump: '''3.14''' type: str YAML::XS: dump: '''3.14''' type: str '!!str 3.3e+3': YAML: dump: '3300' type: int YAML::Syck: dump: '''3.3e+3''' type: str YAML::XS: dump: '''3.3e+3''' type: str '!!str 85.230_15e+03': YAML: dump: 85.230_15e+03 type: str YAML::Syck: dump: 85.230_15e+03 type: str YAML::XS: dump: 85.230_15e+03 type: str '!!str 85_230.15': YAML: dump: 85_230.15 type: str YAML::Syck: dump: 85_230.15 type: str YAML::XS: dump: 85_230.15 type: str '!!str FALSE': YAML: dump: 'FALSE' type: str YAML::Syck: dump: '''FALSE''' type: str YAML::XS: dump: 'FALSE' type: str '!!str False': YAML: dump: 'False' type: str YAML::Syck: dump: '''False''' type: str YAML::XS: dump: 'False' type: str '!!str N': YAML: dump: N type: str YAML::Syck: dump: '''N''' type: str YAML::XS: dump: N type: str '!!str NO': YAML: dump: NO type: str YAML::Syck: dump: '''NO''' type: str YAML::XS: dump: NO type: str '!!str NULL': YAML: dump: 'NULL' type: str YAML::Syck: dump: '''NULL''' type: str YAML::XS: dump: 'NULL' type: str '!!str Null': YAML: dump: 'Null' type: str YAML::Syck: dump: '''Null''' type: str YAML::XS: dump: 'Null' type: str '!!str OFF': YAML: dump: OFF type: str YAML::Syck: dump: '''OFF''' type: str YAML::XS: dump: OFF type: str '!!str ON': YAML: dump: ON type: str YAML::Syck: dump: '''ON''' type: str YAML::XS: dump: ON type: str '!!str Off': YAML: dump: Off type: str YAML::Syck: dump: '''Off''' type: str YAML::XS: dump: Off type: str '!!str On': YAML: dump: On type: str YAML::Syck: dump: '''On''' type: str YAML::XS: dump: On type: str '!!str TRUE': YAML: dump: 'TRUE' type: str YAML::Syck: dump: '''TRUE''' type: str YAML::XS: dump: 'TRUE' type: str '!!str True': YAML: dump: 'True' type: str YAML::Syck: dump: '''True''' type: str YAML::XS: dump: 'True' type: str '!!str Y': YAML: dump: Y type: str YAML::Syck: dump: '''Y''' type: str YAML::XS: dump: Y type: str '!!str YES': YAML: dump: YES type: str YAML::Syck: dump: '''YES''' type: str YAML::XS: dump: YES type: str '!!str Yes': YAML: dump: Yes type: str YAML::Syck: dump: '''Yes''' type: str YAML::XS: dump: Yes type: str '!!str false': YAML: dump: 'false' type: str YAML::Syck: dump: '''false''' type: str YAML::XS: dump: '''false''' type: str '!!str n': YAML: dump: n type: str YAML::Syck: dump: '''n''' type: str YAML::XS: dump: n type: str '!!str no': YAML: dump: no type: str YAML::Syck: dump: '''no''' type: str YAML::XS: dump: no type: str '!!str null': YAML: dump: 'null' type: str YAML::Syck: dump: '''null''' type: str YAML::XS: dump: '''null''' type: str '!!str off': YAML: dump: off type: str YAML::Syck: dump: '''off''' type: str YAML::XS: dump: off type: str '!!str on': YAML: dump: on type: str YAML::Syck: dump: '''on''' type: str YAML::XS: dump: on type: str '!!str true': YAML: dump: 'true' type: str YAML::Syck: dump: '''true''' type: str YAML::XS: dump: '''true''' type: str '!!str y': YAML: dump: y type: str YAML::Syck: dump: '''y''' type: str YAML::XS: dump: y type: str '!!str yes': YAML: dump: yes type: str YAML::Syck: dump: '''yes''' type: str YAML::XS: dump: yes type: str '!!str ~': YAML: dump: '''~''' type: str YAML::Syck: dump: '''~''' type: str YAML::XS: dump: '''~''' type: str '" "': YAML: dump: ''' ''' type: str YAML::Syck: dump: '" "' type: str YAML::XS: dump: ''' ''' type: str '"!string"': YAML: dump: '''!string''' type: str YAML::Syck: dump: '"!string"' type: str YAML::XS: dump: '''!string''' type: str '"# "': YAML: dump: '''# ''' type: str YAML::Syck: dump: '"# "' type: str YAML::XS: dump: '''# ''' type: str '"#"': YAML: dump: '''#''' type: str YAML::Syck: dump: '"#"' type: str YAML::XS: dump: '''#''' type: str '"%percent"': YAML: dump: '''%percent''' type: str YAML::Syck: dump: '"%percent"' type: str YAML::XS: dump: '''%percent''' type: str '"''"': YAML: dump: '"''"' type: str YAML::Syck: dump: '"''"' type: str YAML::XS: dump: '''''''''' type: str '"*string"': YAML: dump: '''*string''' type: str YAML::Syck: dump: '"*string"' type: str YAML::XS: dump: '''*string''' type: str '","': YAML: dump: ''',''' type: str YAML::Syck: dump: '","' type: str YAML::XS: dump: ''',''' type: str '"- "': YAML: dump: '''- ''' type: str YAML::Syck: dump: '"- "' type: str YAML::XS: dump: '''- ''' type: str '"- a"': YAML: dump: '''- a''' type: str YAML::Syck: dump: '"- a"' type: str YAML::XS: dump: '''- a''' type: str '"-"': YAML: dump: '''-''' type: str YAML::Syck: dump: '"-"' type: str YAML::XS: dump: '''-''' type: str '"-\n"': YAML: dump: '"-\n"' type: str YAML::Syck: dump: '"-\n"' type: str YAML::XS: dump: |- '- ' type: str '"-\t"': YAML: dump: "'-\t'" type: str YAML::Syck: dump: '"-\t"' type: str YAML::XS: dump: '"-\t"' type: str '":"': YAML: dump: ''':''' type: str YAML::Syck: dump: '":"' type: str YAML::XS: dump: ''':''' type: str '">"': YAML: dump: '''>''' type: str YAML::Syck: dump: '">"' type: str YAML::XS: dump: '''>''' type: str '"? "': YAML: dump: '''? ''' type: str YAML::Syck: dump: '"? "' type: str YAML::XS: dump: '''? ''' type: str '"? a"': YAML: dump: '''? a''' type: str YAML::Syck: dump: '"? a"' type: str YAML::XS: dump: '''? a''' type: str '"?"': YAML: dump: '''?''' type: str YAML::Syck: dump: '"?"' type: str YAML::XS: dump: '''?''' type: str '"@array"': YAML: dump: '''@array''' type: str YAML::Syck: dump: '"@array"' type: str YAML::XS: dump: '''@array''' type: str '"["': YAML: dump: '''[''' type: str YAML::Syck: dump: '"["' type: str YAML::XS: dump: '''[''' type: str '"\""': YAML: dump: '''"''' type: str YAML::Syck: dump: '"\""' type: str YAML::XS: dump: '''"''' type: str '"]"': YAML: dump: ''']''' type: str YAML::Syck: dump: '"]"' type: str YAML::XS: dump: ''']''' type: str '"`cmd`"': YAML: dump: '''`cmd`''' type: str YAML::Syck: dump: '"`cmd`"' type: str YAML::XS: dump: '''`cmd`''' type: str '"foo\nbar"': YAML: dump: '"foo\nbar"' type: str YAML::Syck: dump: '"foo\nbar"' type: str YAML::XS: dump: '"foo\nbar"' type: str '"key: val"': YAML: dump: '''key: val''' type: str YAML::Syck: dump: '"key: val"' type: str YAML::XS: dump: '''key: val''' type: str '"no #comment"': YAML: dump: '''no #comment''' type: str YAML::Syck: dump: '"no #comment"' type: str YAML::XS: dump: '''no #comment''' type: str '"no comment #"': YAML: dump: '''no comment #''' type: str YAML::Syck: dump: '"no comment #"' type: str YAML::XS: dump: '''no comment #''' type: str '"no comment#"': YAML: dump: no comment# type: str YAML::Syck: dump: no comment# type: str YAML::XS: dump: no comment# type: str '"string "': YAML: dump: '''string ''' type: str YAML::Syck: dump: '"string "' type: str YAML::XS: dump: '''string ''' type: str '"string:"': YAML: dump: '''string:''' type: str YAML::Syck: dump: '"string:"' type: str YAML::XS: dump: '''string:''' type: str '"string\r"': YAML: dump: '"string\r"' type: str YAML::Syck: dump: "string\r" type: str YAML::XS: dump: '"string\r"' type: str '"string\t"': YAML: dump: "'string\t'" type: str YAML::Syck: dump: '"string\t"' type: str YAML::XS: dump: '"string\t"' type: str '"x\n\"y\\z"': YAML: dump: '"x\n\"y\\z"' type: str YAML::Syck: dump: '"x\n\"y\\z"' type: str YAML::XS: dump: '"x\n\"y\\z"' type: str '"{"': YAML: dump: '''{''' type: str YAML::Syck: dump: '"{"' type: str YAML::XS: dump: '''{''' type: str '"|"': YAML: dump: '''|''' type: str YAML::Syck: dump: '"|"' type: str YAML::XS: dump: '''|''' type: str '"}"': YAML: dump: '''}''' type: str YAML::Syck: dump: '"}"' type: str YAML::XS: dump: '''}''' type: str '#empty': YAML: dump: '''''' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' '+.INF': YAML: dump: '+.INF' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '+.INF' type: str '+.Inf': YAML: dump: '+.Inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '+.Inf' type: str '+.inf': YAML: dump: '+.inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '+.inf' type: str '+0': YAML: dump: '+0' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '+0' type: int '+0.3e+3': YAML: dump: '+0.3e+3' type: str YAML::Syck: dump: '''300''' type: float YAML::XS: dump: '+0.3e+3' type: float '+0.3e3': YAML: dump: '+0.3e3' type: str YAML::Syck: dump: '''+0.3e3''' type: str YAML::XS: dump: '+0.3e3' type: float +0100_200: YAML: dump: +0100_200 type: str YAML::Syck: dump: +0100_200 type: str YAML::XS: dump: +0100_200 type: str +0b100: YAML: dump: +0b100 type: str YAML::Syck: dump: +0b100 type: str YAML::XS: dump: +0b100 type: str +190:20:30: YAML: dump: +190:20:30 type: str YAML::Syck: dump: '685230' type: int YAML::XS: dump: +190:20:30 type: str '+23': YAML: dump: '+23' type: str YAML::Syck: dump: '23' type: int YAML::XS: dump: '+23' type: int '+3.14': YAML: dump: '+3.14' type: str YAML::Syck: dump: '''3.14''' type: float YAML::XS: dump: '+3.14' type: float '-.INF': YAML: dump: '-.INF' type: str YAML::Syck: dump: '''-Inf''' type: inf YAML::XS: dump: '-.INF' type: str '-.Inf': YAML: dump: '-.Inf' type: str YAML::Syck: dump: '''-Inf''' type: inf YAML::XS: dump: '-.Inf' type: str '-.inf': YAML: dump: '-.inf' type: str YAML::Syck: dump: '''-Inf''' type: inf YAML::XS: dump: '-.inf' type: str '-0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: int YAML::XS: dump: '-0' type: int -0100_200: YAML: dump: -0100_200 type: str YAML::Syck: dump: -0100_200 type: str YAML::XS: dump: -0100_200 type: str -0b101: YAML: dump: -0b101 type: str YAML::Syck: dump: -0b101 type: str YAML::XS: dump: -0b101 type: str -0x30: YAML: dump: -0x30 type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: -0x30 type: str -190:20:30: YAML: dump: -190:20:30 type: str YAML::Syck: dump: '''18446744073708868846''' type: int YAML::XS: dump: -190:20:30 type: str '-23': YAML: dump: '-23' type: int YAML::Syck: dump: '-23' type: int YAML::XS: dump: '-23' type: int '-3.14': YAML: dump: '-3.14' type: float YAML::Syck: dump: '''-3.14''' type: float YAML::XS: dump: '-3.14' type: float '.0': YAML: dump: '0' type: float YAML::Syck: dump: '.0' type: str YAML::XS: dump: '.0' type: float '.14': YAML: dump: '0.14' type: float YAML::Syck: dump: '.14' type: str YAML::XS: dump: '.14' type: float '.3E-1': YAML: dump: '0.03' type: float YAML::Syck: dump: '''.3E-1''' type: str YAML::XS: dump: '.3E-1' type: float '.3e+3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e+3''' type: str YAML::XS: dump: '.3e+3' type: float '.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''.3e3''' type: str YAML::XS: dump: '.3e3' type: float '.INF': YAML: dump: '.INF' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '.INF' type: str '.Inf': YAML: dump: '.Inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '.Inf' type: str '.NAN': YAML: dump: '.NAN' type: str YAML::Syck: dump: '''NaN''' type: nan YAML::XS: dump: '.NAN' type: str '.NaN': YAML: dump: '.NaN' type: str YAML::Syck: dump: '''NaN''' type: nan YAML::XS: dump: '.NaN' type: str '.inf': YAML: dump: '.inf' type: str YAML::Syck: dump: '''Inf''' type: inf YAML::XS: dump: '.inf' type: str '.nan': YAML: dump: '.nan' type: str YAML::Syck: dump: '''NaN''' type: nan YAML::XS: dump: '.nan' type: str '0': YAML: dump: '0' type: int YAML::Syck: dump: '0' type: int YAML::XS: dump: '0' type: int '0.0': YAML: dump: '0' type: float YAML::Syck: dump: '''0''' type: float YAML::XS: dump: '0.0' type: float '0.3e3': YAML: dump: '300' type: int YAML::Syck: dump: '''0.3e3''' type: str YAML::XS: dump: '0.3e3' type: float '00': YAML: dump: '00' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '00' type: int '001.23': YAML: dump: '001.23' type: str YAML::Syck: dump: '''1.23''' type: float YAML::XS: dump: '001.23' type: float '0011': YAML: dump: '0011' type: str YAML::Syck: dump: '9' type: int YAML::XS: dump: '0011' type: int '010': YAML: dump: '010' type: str YAML::Syck: dump: '8' type: int YAML::XS: dump: '010' type: int 02_0: YAML: dump: 02_0 type: str YAML::Syck: dump: 02_0 type: str YAML::XS: dump: 02_0 type: str '07': YAML: dump: '07' type: str YAML::Syck: dump: '7' type: int YAML::XS: dump: '07' type: int '08': YAML: dump: '08' type: str YAML::Syck: dump: '''08''' type: str YAML::XS: dump: '08' type: int 0b0: YAML: dump: 0b0 type: str YAML::Syck: dump: 0b0 type: str YAML::XS: dump: 0b0 type: str 0b100_101: YAML: dump: 0b100_101 type: str YAML::Syck: dump: 0b100_101 type: str YAML::XS: dump: 0b100_101 type: str '0o0': YAML: dump: '0o0' type: str YAML::Syck: dump: '0o0' type: str YAML::XS: dump: '0o0' type: str '0o10': YAML: dump: '0o10' type: str YAML::Syck: dump: '0o10' type: str YAML::XS: dump: '0o10' type: str '0o7': YAML: dump: '0o7' type: str YAML::Syck: dump: '0o7' type: str YAML::XS: dump: '0o7' type: str '0x0': YAML: dump: '0x0' type: str YAML::Syck: dump: '0' type: int YAML::XS: dump: '0x0' type: str '0x10': YAML: dump: '0x10' type: str YAML::Syck: dump: '16' type: int YAML::XS: dump: '0x10' type: str 0x2_0: YAML: dump: 0x2_0 type: str YAML::Syck: dump: 0x2_0 type: str YAML::XS: dump: 0x2_0 type: str '0x42': YAML: dump: '0x42' type: str YAML::Syck: dump: '66' type: int YAML::XS: dump: '0x42' type: str '0xa': YAML: dump: '0xa' type: str YAML::Syck: dump: '10' type: int YAML::XS: dump: '0xa' type: str 100_000: YAML: dump: 100_000 type: str YAML::Syck: dump: 100_000 type: str YAML::XS: dump: 100_000 type: str 190:20:30: YAML: dump: 190:20:30 type: str YAML::Syck: dump: '685230' type: int YAML::XS: dump: 190:20:30 type: str 190:20:30.15: YAML: dump: 190:20:30.15 type: str YAML::Syck: dump: '''685230.15''' type: float YAML::XS: dump: 190:20:30.15 type: str '23': YAML: dump: '23' type: int YAML::Syck: dump: '23' type: int YAML::XS: dump: '23' type: int '3.14': YAML: dump: '3.14' type: float YAML::Syck: dump: '''3.14''' type: float YAML::XS: dump: '3.14' type: float '3.3e+3': YAML: dump: '3300' type: int YAML::Syck: dump: '''3300''' type: float YAML::XS: dump: '3.3e+3' type: float '3e3': YAML: dump: '3000' type: int YAML::Syck: dump: '''3e3''' type: str YAML::XS: dump: '3e3' type: float 85.230_15e+03: YAML: dump: 85.230_15e+03 type: str YAML::Syck: dump: 85.230_15e+03 type: str YAML::XS: dump: 85.230_15e+03 type: str 85_230.15: YAML: dump: 85_230.15 type: str YAML::Syck: dump: 85_230.15 type: str YAML::XS: dump: 85_230.15 type: str 'FALSE': YAML: dump: 'FALSE' type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: 'FALSE' type: str 'False': YAML: dump: 'False' type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: 'False' type: str N: YAML: dump: N type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: N type: str NO: YAML: dump: NO type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: NO type: str 'NULL': YAML: dump: 'NULL' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: 'NULL' type: str 'Null': YAML: dump: 'Null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: 'Null' type: str OFF: YAML: dump: OFF type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: OFF type: str ON: YAML: dump: ON type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: ON type: str Off: YAML: dump: Off type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: Off type: str On: YAML: dump: On type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: On type: str 'TRUE': YAML: dump: 'TRUE' type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: 'TRUE' type: str 'True': YAML: dump: 'True' type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: 'True' type: str Y: YAML: dump: Y type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: Y type: str YES: YAML: dump: YES type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: YES type: str Yes: YAML: dump: Yes type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: Yes type: str ^string: YAML: dump: '''^string''' type: str YAML::Syck: dump: '"^string"' type: str YAML::XS: dump: ^string type: str 'false': YAML: dump: 'false' type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: 'false' type: bool foo\bar: YAML: dump: foo\bar type: str YAML::Syck: dump: foo\bar type: str YAML::XS: dump: foo\bar type: str n: YAML: dump: n type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: n type: str no: YAML: dump: no type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: no type: str 'null': YAML: dump: 'null' type: str YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' off: YAML: dump: off type: str YAML::Syck: dump: '''''' type: float YAML::XS: dump: off type: str on: YAML: dump: on type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: on type: str str"ing: YAML: dump: str"ing type: str YAML::Syck: dump: str"ing type: str YAML::XS: dump: str"ing type: str 'true': YAML: dump: 'true' type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: 'true' type: bool y: YAML: dump: y type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: y type: str yes: YAML: dump: yes type: str YAML::Syck: dump: '1' type: float YAML::XS: dump: yes type: str '~': YAML: dump: '~' type: 'null' YAML::Syck: dump: '~' type: 'null' YAML::XS: dump: '~' type: 'null' yaml-schema.yaml100644001750001750 5440714161720075 21024 0ustar00tinatina000000000000YAML-PP-0.031/ext/yaml-test-schema--- # Documentation: # # 'input YAML': # schema1, schema2: ['type', 'loaded value', 'dumped YAML'] # # If you use this, you need to split the keys by ', ' to be able # to iterate over the schemas. # # In case the 'loaded value' is a function (e.g. 'true()'), it stands for the # native type # true(): boolean true # false(): boolean false # null(): undefined, Null, None, ... # inf(): infinity # inf-neg(): negative infinity # nan(): Not A Number # # The 'dumped YAML' is how the value should be dumped, without the starting --- ############################################### # True ############################################### 'true': json, core, yaml11: ['bool', 'true()', 'true'] failsafe: ['str', 'true', 'true'] 'True': core, yaml11: ['bool', 'true()', 'true'] failsafe, json: ['str', 'True', 'True'] 'TRUE': core, yaml11: ['bool', 'true()', 'true'] failsafe, json: ['str', 'TRUE', 'TRUE'] 'y': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'y', "y"] 'Y': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'Y', "Y"] 'yes': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'yes', "yes"] 'Yes': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'Yes', "Yes"] 'YES': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'YES', "YES"] 'on': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'on', "on"] 'On': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'On', "On"] 'ON': yaml11: ['bool', 'true()', "true"] failsafe, json, core: ['str', 'ON', "ON"] '!!bool true': json, core, yaml11: ['bool', 'true()', 'true'] '!!bool True': core, yaml11: ['bool', 'true()', 'true'] '!!bool TRUE': core, yaml11: ['bool', 'true()', 'true'] '!!bool y': yaml11: ['bool', 'true()', "true"] '!!bool Y': yaml11: ['bool', 'true()', "true"] '!!bool yes': yaml11: ['bool', 'true()', "true"] '!!bool Yes': yaml11: ['bool', 'true()', "true"] '!!bool YES': yaml11: ['bool', 'true()', "true"] '!!bool on': yaml11: ['bool', 'true()', "true"] '!!bool On': yaml11: ['bool', 'true()', "true"] '!!bool ON': yaml11: ['bool', 'true()', "true"] '!!str true': failsafe: ['str', 'true', 'true'] json, core, yaml11: ['str', 'true', "'true'"] '!!str True': failsafe, json: ['str', 'True', 'True'] core, yaml11: ['str', 'True', "'True'"] '!!str TRUE': failsafe, json: ['str', 'TRUE', 'TRUE'] core, yaml11: ['str', 'TRUE', "'TRUE'"] '!!str yes': failsafe, json, core: ['str', 'yes', "yes" ] yaml11: ['str', 'yes', "'yes'" ] '!!str Yes': failsafe, json, core: ['str', 'Yes', "Yes" ] yaml11: ['str', 'Yes', "'Yes'" ] '!!str YES': failsafe, json, core: ['str', 'YES', "YES" ] yaml11: ['str', 'YES', "'YES'" ] '!!str y': failsafe, json, core: ['str', 'y', "y" ] yaml11: ['str', 'y', "'y'" ] '!!str Y': failsafe, json, core: ['str', 'Y', "Y" ] yaml11: ['str', 'Y', "'Y'" ] '!!str on': failsafe, json, core: ['str', 'on', "on" ] yaml11: ['str', 'on', "'on'" ] '!!str On': failsafe, json, core: ['str', 'On', "On" ] yaml11: ['str', 'On', "'On'" ] '!!str ON': failsafe, json, core: ['str', 'ON', "ON" ] yaml11: ['str', 'ON', "'ON'" ] ############################################### # False ############################################### 'false': failsafe: ['str', 'false', 'false'] json, core, yaml11: ['bool', 'false()', 'false'] 'False': failsafe, json: ['str', 'False', 'False'] core, yaml11: ['bool', 'false()', 'false'] 'FALSE': failsafe, json: ['str', 'FALSE', 'FALSE'] core, yaml11: ['bool', 'false()', 'false'] 'n': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'n', "n"] 'N': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'N', "N"] 'no': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'no', "no"] 'NO': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'NO', "NO"] 'off': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'off', "off"] 'Off': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'Off', "Off"] 'OFF': yaml11: ['bool', 'false()', "false"] failsafe, json, core: ['str', 'OFF', "OFF"] '!!bool false': json, core, yaml11: ['bool', 'false()', 'false'] '!!bool False': core, yaml11: ['bool', 'false()', 'false'] '!!bool FALSE': core, yaml11: ['bool', 'false()', 'false'] '!!bool n': yaml11: ['bool', 'false()', "false"] '!!bool N': yaml11: ['bool', 'false()', "false"] '!!bool no': yaml11: ['bool', 'false()', "false"] '!!bool No': yaml11: ['bool', 'false()', "false"] '!!bool NO': yaml11: ['bool', 'false()', "false"] '!!bool off': yaml11: ['bool', 'false()', "false"] '!!bool Off': yaml11: ['bool', 'false()', "false"] '!!bool OFF': yaml11: ['bool', 'false()', "false"] '!!str false': json, core, yaml11: ['str', 'false', "'false'"] failsafe: ['str', 'false', 'false'] '!!str False': failsafe, json: ['str', 'False', "False"] core, yaml11: ['str', 'False', "'False'"] '!!str FALSE': failsafe, json: ['str', 'FALSE', "FALSE"] core, yaml11: ['str', 'FALSE', "'FALSE'"] '!!str n': failsafe, json, core: ['str', 'n', "n" ] yaml11: ['str', 'n', "'n'" ] '!!str N': failsafe, json, core: ['str', 'N', "N" ] yaml11: ['str', 'N', "'N'" ] '!!str no': failsafe, json, core: ['str', 'no', "no" ] yaml11: ['str', 'no', "'no'" ] '!!str NO': failsafe, json, core: ['str', 'NO', "NO" ] yaml11: ['str', 'NO', "'NO'" ] '!!str off': failsafe, json, core: ['str', 'off', "off" ] yaml11: ['str', 'off', "'off'" ] '!!str Off': failsafe, json, core: ['str', 'Off', "Off" ] yaml11: ['str', 'Off', "'Off'" ] '!!str OFF': failsafe, json, core: ['str', 'OFF', "OFF" ] yaml11: ['str', 'OFF', "'OFF'" ] ############################################### # Null ############################################### 'null': failsafe: ['str', 'null', 'null'] json, core, yaml11: ['null', 'null()', "null"] 'Null': failsafe, json: ['str', 'Null', 'Null'] core, yaml11: ['null', 'null()', "null"] 'NULL': failsafe, json: ['str', 'NULL', 'NULL'] core, yaml11: ['null', 'null()', "null"] '~': failsafe, json: ['str', '~', '~'] core, yaml11: ['null', 'null()', "null"] '!!null null': json, core, yaml11: ['null', 'null()', 'null'] '!!null Null': core, yaml11: ['null', 'null()', "null"] '!!null NULL': core, yaml11: ['null', 'null()', "null"] '!!null ~': core, yaml11: ['null', 'null()', 'null'] '!!str null': failsafe: ['str', 'null', 'null'] json, core, yaml11: ['str', 'null', "'null'"] '!!str Null': failsafe, json: ['str', 'Null', "Null"] core, yaml11: ['str', 'Null', "'Null'"] '!!str NULL': failsafe, json: ['str', 'NULL', "NULL"] core, yaml11: ['str', 'NULL', "'NULL'"] '!!str ~': core, yaml11: ['str', '~', "'~'"] failsafe, json: ['str', '~', '~'] '#empty': core, yaml11: ['null', 'null()', "null"] failsafe, json: ['str', '', "''"] '!!null #empty': core, yaml11: ['null', 'null()', "null"] '!!str #empty': failsafe, json, core, yaml11: ['str', '', "''"] ############################################### # Inf ############################################### '.inf': failsafe, json: ['str', '.inf', '.inf'] core, yaml11: ['inf', 'inf()', '.inf'] '.Inf': failsafe, json: ['str', '.Inf', '.Inf'] core, yaml11: ['inf', 'inf()', '.inf'] '.INF': failsafe, json: ['str', '.INF', '.INF'] core, yaml11: ['inf', 'inf()', '.inf'] '!!float .inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float .Inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float .INF': core, yaml11: ['inf', 'inf()', '.inf'] '!!str .inf': failsafe, json: ['str', '.inf', ".inf"] core, yaml11: ['str', '.inf', "'.inf'"] '!!str .Inf': failsafe, json: ['str', '.Inf', ".Inf"] core, yaml11: ['str', '.Inf', "'.Inf'"] '!!str .INF': failsafe, json: ['str', '.INF', ".INF"] core, yaml11: ['str', '.INF', "'.INF'"] '+.inf': core, yaml11: ['inf', 'inf()', '.inf'] failsafe, json: ['str', '+.inf', '+.inf'] '+.Inf': core, yaml11: ['inf', 'inf()', '.inf'] failsafe, json: ['str', '+.Inf', '+.Inf'] '+.INF': core, yaml11: ['inf', 'inf()', '.inf'] failsafe, json: ['str', '+.INF', '+.INF'] '!!float +.inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float +.Inf': core, yaml11: ['inf', 'inf()', '.inf'] '!!float +.INF': core, yaml11: ['inf', 'inf()', '.inf'] '!!str +.inf': failsafe, json: ['str', '+.inf', "+.inf"] core, yaml11: ['str', '+.inf', "'+.inf'"] '!!str +.Inf': failsafe, json: ['str', '+.Inf', "+.Inf"] core, yaml11: ['str', '+.Inf', "'+.Inf'"] '!!str +.INF': failsafe, json: ['str', '+.INF', "+.INF"] core, yaml11: ['str', '+.INF', "'+.INF'"] '-.inf': failsafe, json: ['str', '-.inf', '-.inf'] core, yaml11: ['inf', 'inf-neg()', '-.inf'] '-.Inf': failsafe, json: ['str', '-.Inf', '-.Inf'] core, yaml11: ['inf', 'inf-neg()', '-.inf'] '-.INF': failsafe, json: ['str', '-.INF', '-.INF'] core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!float -.inf': core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!float -.Inf': core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!float -.INF': core, yaml11: ['inf', 'inf-neg()', '-.inf'] '!!str -.inf': failsafe, json: ['str', '-.inf', "-.inf"] core, yaml11: ['str', '-.inf', "'-.inf'"] '!!str -.Inf': failsafe, json: ['str', '-.Inf', "-.Inf"] core, yaml11: ['str', '-.Inf', "'-.Inf'"] '!!str -.INF': failsafe, json: ['str', '-.INF', "-.INF"] core, yaml11: ['str', '-.INF', "'-.INF'"] ############################################### # NaN ############################################### '.nan': failsafe, json: ['str', '.nan', '.nan'] core, yaml11: ['nan', 'nan()', '.nan'] '.NaN': core, yaml11: ['nan', 'nan()', '.nan'] failsafe, json: ['str', '.NaN', '.NaN'] '.NAN': failsafe, json: ['str', '.NAN', '.NAN'] core, yaml11: ['nan', 'nan()', '.nan'] '!!float .nan': core, yaml11: ['nan', 'nan()', '.nan'] '!!float .NaN': core, yaml11: ['nan', 'nan()', '.nan'] '!!float .NAN': core, yaml11: ['nan', 'nan()', '.nan'] '!!str .nan': failsafe, json: ['str', '.nan', ".nan"] core, yaml11: ['str', '.nan', "'.nan'"] '!!str .NaN': failsafe, json: ['str', '.NaN', ".NaN"] core, yaml11: ['str', '.NaN', "'.NaN'"] '!!str .NAN': failsafe, json: ['str', '.NAN', ".NAN"] core, yaml11: ['str', '.NAN', "'.NAN'"] ############################################### # Int ############################################### '0': failsafe: ['str', '0', '0'] json, core, yaml11: ['int', '0', '0'] '00': failsafe, json: ['str', '00', '00'] core: ['int', '0', '0'] yaml11: ['int', '0', '0'] '0011': core: ['int', '11', '11'] failsafe, json: ['str', '0011', '0011'] yaml11: ['int', '9', '9'] '010': failsafe, json: ['str', '010', '010'] core: ['int', '10', '10'] yaml11: ['int', '8', '8'] '07': failsafe, json: ['str', '07', '07'] yaml11: ['int', '7', '7'] core: ['int', '7', '7'] '08': failsafe, json: ['str', '08', '08'] yaml11: ['str', '08', '08'] core: ['int', '8', '8'] '02_0': failsafe, json, core: ['str', '02_0', '02_0'] yaml11: ['int', '16', '16'] '23': failsafe: ['str', '23', '23'] json, core, yaml11: ['int', '23', '23'] '100_000': yaml11: ['int', '100000', '100000'] failsafe, json, core: ['str', '100_000', '100_000'] '!!int 0': json, core, yaml11: ['int', '0', '0'] '!!int 00': yaml11: ['int', '0', '0'] '!!int 0011': yaml11: ['int', '9', '9'] core: ['int', '11', '11'] '!!int 010': yaml11: ['int', '8', '8'] '!!int 07': core: ['int', '7', '7'] yaml11: ['int', '7', '7'] '!!int 02_0': yaml11: ['int', '16', '16'] '!!int 23': json, core, yaml11: ['int', '23', '23'] '!!int 100_000': yaml11: ['int', '100000', '100000'] '-0': json, core, yaml11: ['int', '0', '0'] failsafe: ['str', '-0', '-0'] '-23': json, core, yaml11: ['int', '-23', '-23'] failsafe: ['str', '-23', '-23'] '-0100_200': failsafe, json, core: ['str', '-0100_200', '-0100_200'] yaml11: ['int', '-32896', '-32896'] '!!int -0': json, core, yaml11: ['int', '0', '0'] '!!int -23': json, core, yaml11: ['int', '-23', '-23'] '!!int -0100_200': yaml11: ['int', '-32896', '-32896'] '+0': core, yaml11: ['int', '0', '0'] failsafe, json: ['str', '+0', '+0'] '+23': core, yaml11: ['int', '23', '23'] failsafe, json: ['str', '+23', '+23'] '+0100_200': yaml11: ['int', '32896', '32896'] failsafe, json, core: ['str', '+0100_200', '+0100_200'] '!!int +0': core, yaml11: ['int', '0', '0'] '!!int +23': core, yaml11: ['int', '23', '23'] '!!int +0100_200': yaml11: ['int', '32896', '32896'] '!!str 0': failsafe: ['str', '0', "0"] json, core, yaml11: ['str', '0', "'0'"] '!!str 00': failsafe, json: ['str', '00', "00"] core, yaml11: ['str', '00', "'00'"] '!!str 010': failsafe, json: ['str', '010', "010"] core, yaml11: ['str', '010', "'010'"] '!!str 0011': failsafe, json: ['str', '0011', "0011"] core, yaml11: ['str', '0011', "'0011'"] '!!str 07': failsafe, json: ['str', '07', "07"] core, yaml11: ['str', '07', "'07'"] '!!str 23': failsafe: ['str', '23', '23'] json, core, yaml11: ['str', '23', "'23'"] '!!str 100_000': failsafe, json, core: ['str', '100_000', "100_000"] yaml11: ['str', '100_000', "'100_000'"] '!!str 02_0': failsafe, json, core: ['str', '02_0', "02_0"] yaml11: ['str', '02_0', "'02_0'"] '!!str -0': failsafe: ['str', '-0', "-0"] json, core, yaml11: ['str', '-0', "'-0'"] '!!str -23': failsafe: ['str', '-23', "-23"] json, core, yaml11: ['str', '-23', "'-23'"] '!!str +0': failsafe, json: ['str', '+0', "+0"] core, yaml11: ['str', '+0', "'+0'"] '!!str +23': failsafe, json: ['str', '+23', "+23"] core, yaml11: ['str', '+23', "'+23'"] '!!str +0100_200': failsafe, json, core: ['str', '+0100_200', "+0100_200"] yaml11: ['str', '+0100_200', "'+0100_200'"] '!!str -0100_200': failsafe, json, core: ['str', '-0100_200', "-0100_200"] yaml11: ['str', '-0100_200', "'-0100_200'"] ############################################### # Oct ############################################### '0o0': core: ['int', '0', '0'] failsafe, json, yaml11: ['str', '0o0', '0o0'] '0o7': core: ['int', '7', '7'] failsafe, json, yaml11: ['str', '0o7', '0o7'] '0o10': core: ['int', '8', '8'] failsafe, json, yaml11: ['str', '0o10', '0o10'] '!!int 0o0': core: ['int', '0', '0'] '!!int 0o7': core: ['int', '7', '7'] '!!int 0o10': core: ['int', '8', '8'] '!!str 0o0': failsafe, json, yaml11: ['str', '0o0', "0o0"] core: ['str', '0o0', "'0o0'"] '!!str 0o7': failsafe, json, yaml11: ['str', '0o7', "0o7"] core: ['str', '0o7', "'0o7'"] '!!str 0o10': failsafe, json, yaml11: ['str', '0o10', "0o10"] core: ['str', '0o10', "'0o10'"] ############################################### # Hex ############################################### '0x0': failsafe, json: ['str', '0x0', '0x0'] core, yaml11: ['int', '0', '0'] '0x10': failsafe, json: ['str', '0x10', '0x10'] core, yaml11: ['int', '16', '16'] '0x42': failsafe, json: ['str', '0x42', '0x42'] core, yaml11: ['int', '66', '66'] '0xa': failsafe, json: ['str', '0xa', '0xa'] core, yaml11: ['int', '10', '10'] '-0x30': failsafe, json, core: ['str', '-0x30', '-0x30'] yaml11: ['int', '-48', '-48'] '0x2_0': failsafe, json, core: ['str', '0x2_0', '0x2_0'] yaml11: ['int', '32', '32'] '!!int 0x10': core, yaml11: ['int', '16', '16'] '!!int 0x0': core, yaml11: ['int', '0', '0'] '!!int 0x42': core, yaml11: ['int', '66', '66'] '!!int 0xa': core, yaml11: ['int', '10', '10'] '!!int 0x2_0': yaml11: ['int', '32', '32'] '!!int -0x30': yaml11: ['int', '-48', '-48'] '!!str 0x0': failsafe, json: ['str', '0x0', "0x0"] core, yaml11: ['str', '0x0', "'0x0'"] '!!str 0x2_0': failsafe, json, core: ['str', '0x2_0', "0x2_0"] yaml11: ['str', '0x2_0', "'0x2_0'"] '!!str -0x30': failsafe, json, core: ['str', '-0x30', "-0x30"] yaml11: ['str', '-0x30', "'-0x30'"] '!!str 0xa': failsafe, json: ['str', '0xa', "0xa"] core, yaml11: ['str', '0xa', "'0xa'"] ############################################### # Binary ############################################### '0b0': failsafe, json, core: ['str', '0b0', '0b0'] yaml11: ['int', '0', '0'] '+0b100': failsafe, json, core: ['str', '+0b100', '+0b100'] yaml11: ['int', '4', '4'] '-0b101': failsafe, json, core: ['str', '-0b101', '-0b101'] yaml11: ['int', '-5', '-5'] '0b100_101': failsafe, json, core: ['str', '0b100_101', '0b100_101'] yaml11: ['int', '37', '37'] '!!int 0b0': yaml11: ['int', '0', '0'] '!!int 0b100_101': yaml11: ['int', '37', '37'] '!!int +0b100': yaml11: ['int', '4', '4'] '!!int -0b101': yaml11: ['int', '-5', '-5'] '!!str 0b0': failsafe, json, core: ['str', '0b0', "0b0"] yaml11: ['str', '0b0', "'0b0'"] '!!str -0b101': failsafe, json, core: ['str', '-0b101', "-0b101"] yaml11: ['str', '-0b101', "'-0b101'"] '!!str 0b100_101': failsafe, json, core: ['str', '0b100_101', "0b100_101"] yaml11: ['str', '0b100_101', "'0b100_101'"] '!!str +0b100': failsafe, json, core: ['str', '+0b100', "+0b100"] yaml11: ['str', '+0b100', "'+0b100'"] ############################################### # Sexagesimal ############################################### '190:20:30': failsafe, json, core: ['str', '190:20:30', '190:20:30'] yaml11: ['int', '685230', '685230'] '-190:20:30': failsafe, json, core: ['str', '-190:20:30', '-190:20:30'] yaml11: ['int', '-685230', '-685230'] '+190:20:30': failsafe, json, core: ['str', '+190:20:30', '+190:20:30'] yaml11: ['int', '685230', '685230'] '!!int 190:20:30': yaml11: ['int', '685230', '685230'] '!!int -190:20:30': yaml11: ['int', '-685230', '-685230'] '!!int +190:20:30': yaml11: ['int', '685230', '685230'] '!!str 190:20:30': failsafe, json, core: ['str', '190:20:30', "190:20:30"] yaml11: ['str', '190:20:30', "'190:20:30'"] '!!str -190:20:30': failsafe, json, core: ['str', '-190:20:30', "-190:20:30"] yaml11: ['str', '-190:20:30', "'-190:20:30'"] '!!str +190:20:30': failsafe, json, core: ['str', '+190:20:30', "+190:20:30"] yaml11: ['str', '+190:20:30', "'+190:20:30'"] ############################################### # Float ############################################### '.0': failsafe, json: ['str', '.0', '.0'] core, yaml11: ['float', '0.0', '0.0'] '.14': failsafe, json: ['str', '.14', '.14'] core, yaml11: ['float', '0.14', '0.14'] '0.0': failsafe: ['str', '0.0', '0.0'] json, core, yaml11: ['float', '0.0', '0.0'] '3.14': failsafe: ['str', '3.14', '3.14'] json, core, yaml11: ['float', '3.14', '3.14'] '001.23': failsafe, json: ['str', '001.23', '001.23'] core, yaml11: ['float', '1.23', '1.23'] '85_230.15': failsafe, json, core: ['str', '85_230.15', '85_230.15'] yaml11: ['float', '85230.15', '85230.15'] '-3.14': failsafe: ['str', '-3.14', '-3.14'] json, core, yaml11: ['float', '-3.14', '-3.14'] '+3.14': failsafe, json: ['str', '+3.14', '+3.14'] core, yaml11: ['float', '3.14', '3.14'] '!!float .0': core, yaml11: ['float', '0.0', '0.0'] '!!float 0.0': json, core, yaml11: ['float', '0.0', '0.0'] '!!float 3.14': json, core, yaml11: ['float', '3.14', '3.14'] '!!float -3.14': json, core, yaml11: ['float', '-3.14', '-3.14'] '!!float 001.23': core, yaml11: ['float', '1.23', '1.23'] '!!float 85_230.15': yaml11: ['float', '85230.15', '85230.15'] '!!str .0': failsafe, json: ['str', '.0', ".0"] core, yaml11: ['str', '.0', "'.0'"] '!!str 0.0': failsafe: ['str', '0.0', "0.0"] json, core, yaml11: ['str', '0.0', "'0.0'"] '!!str 3.14': failsafe: ['str', '3.14', "3.14"] json, core, yaml11: ['str', '3.14', "'3.14'"] '!!str -3.14': failsafe: ['str', '-3.14', "-3.14"] json, core, yaml11: ['str', '-3.14', "'-3.14'"] '!!str 001.23': failsafe, json: ['str', '001.23', "001.23"] core, yaml11: ['str', '001.23', "'001.23'"] '!!str 85_230.15': failsafe, json, core: ['str', '85_230.15', "85_230.15"] yaml11: ['str', '85_230.15', "'85_230.15'"] ############################################### # Exp ############################################### '.3e3': failsafe, json, yaml11: ['str', '.3e3', '.3e3'] core: ['float', '300.0', '300.0'] '.3e+3': failsafe, json: ['str', '.3e+3', '.3e+3'] core, yaml11: ['float', '300.0', '300.0'] '.3E-1': failsafe, json: ['str', '.3E-1', '.3E-1'] core, yaml11: ['float', '0.03', '0.03'] '0.3e3': json, core: ['float', '300.0', '300.0'] failsafe, yaml11: ['str', '0.3e3', '0.3e3'] '3.3e+3': failsafe: ['str', '3.3e+3', '3.3e+3'] json, core, yaml11: ['float', '3300', '3300.0'] '3e3': json, core: ['float', '3000', '3000.0'] failsafe, yaml11: ['str', '3e3', '3e3'] '85.230_15e+03': failsafe, json, core: ['str', '85.230_15e+03', '85.230_15e+03'] yaml11: ['float', '85230.15', '85230.15'] '+0.3e+3': failsafe, json: ['str', '+0.3e+3', '+0.3e+3'] core, yaml11: ['float', '300.0', '300.0'] '+0.3e3': failsafe, json: ['str', '+0.3e3', '+0.3e3'] core: ['float', '300.0', '300.0'] yaml11: ['str', '+0.3e3', '+0.3e3'] '!!float .3e3': core: ['float', '300.0', '300.0'] '!!float 0.3e3': json, core: ['float', '300.0', '300.0'] '!!float +0.3e3': core: ['float', '300.0', '300.0'] '!!float .3E-1': core, yaml11: ['float', '0.03', '0.03'] '!!float 3.3e+3': core, yaml11: ['float', '3300.0', '3300.0'] '!!float +0.3e+3': core, yaml11: ['float', '300.0', '300.0'] '!!float .3e+3': core, yaml11: ['float', '300.0', '300.0'] '!!float 85.230_15e+03': yaml11: ['float', '85230.15', '85230.15'] '!!str .3e+3': failsafe, json: ['str', '.3e+3', ".3e+3"] core, yaml11: ['str', '.3e+3', "'.3e+3'"] '!!str .3E-1': failsafe, json: ['str', '.3E-1', ".3E-1"] core, yaml11: ['str', '.3E-1', "'.3E-1'"] '!!str .3e3': failsafe, json, yaml11: ['str', '.3e3', ".3e3"] core: ['str', '.3e3', "'.3e3'"] '!!str 0.3e3': failsafe, yaml11: ['str', '0.3e3', "0.3e3"] json, core: ['str', '0.3e3', "'0.3e3'"] '!!str +0.3e3': failsafe, json, yaml11: ['str', '+0.3e3', "+0.3e3"] core: ['str', '+0.3e3', "'+0.3e3'"] '!!str 3.3e+3': failsafe: ['str', '3.3e+3', "3.3e+3"] json, core, yaml11: ['str', '3.3e+3', "'3.3e+3'"] '!!str +0.3e+3': failsafe, json: ['str', '+0.3e+3', "+0.3e+3"] core, yaml11: ['str', '+0.3e+3', "'+0.3e+3'"] '!!str 85.230_15e+03': failsafe, json, core: ['str', '85.230_15e+03', "85.230_15e+03"] yaml11: ['str', '85.230_15e+03', "'85.230_15e+03'"] ############################################### # Sexagesimal ############################################### '190:20:30.15': failsafe, json, core: ['str', '190:20:30.15', '190:20:30.15'] yaml11: ['float', '685230.15', '685230.15'] '!!float 190:20:30.15': yaml11: ['float', '685230.15', '685230.15'] '!!str 190:20:30.15': failsafe, json, core: ['str', '190:20:30.15', "190:20:30.15"] yaml11: ['str', '190:20:30.15', "'190:20:30.15'"] external-vars-templates000755001750001750 014161720075 20176 5ustar00tinatina000000000000YAML-PP-0.031/examplesext.pl100644001750001750 311014161720075 21466 0ustar00tinatina000000000000YAML-PP-0.031/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; } RTP8000755001750001750 014161720075 20411 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4314161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RTP8Spec Example 9.2. Document Markers ZF4X000755001750001750 014161720075 20407 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 21000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZF4XSpec Example 2.6. Mapping of Mappings 2EBW000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2EBWAllowed characters in keys 6CK3000755001750001750 014161720075 20322 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6CK3Spec Example 6.26. Tag Shorthands MJS9000755001750001750 014161720075 20376 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MJS9Spec Example 6.7. Block Folding 9JBA000755001750001750 014161720075 20341 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9JBAInvalid comment after end of flow sequence 9BXH000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6614161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9BXHMultiline doublequoted flow mapping key without value K54U000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K54UTab after document header 8QBE000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8QBEBlock Sequence in Block Mapping SBG9000755001750001750 014161720075 20360 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SBG9Flow Sequence in Flow Mapping XLQ9000755001750001750 014161720075 20411 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6214161720075 21000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XLQ9Multiline scalar that looks like a YAML directive G992000755001750001750 014161720075 20306 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20671 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G992Spec Example 8.9. Folded Scalar FUP4000755001750001750 014161720075 20372 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FUP4Flow Sequence in Flow Sequence YD5X000755001750001750 014161720075 20405 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/YD5XSpec Example 2.5. Sequence of Sequences ZWK4000755001750001750 014161720075 20413 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6514161720075 21005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZWK4Key with anchor after missing explicit mapping value 6ZKB000755001750001750 014161720075 20370 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6ZKBSpec Example 9.6. Stream 54T7000755001750001750 014161720075 20317 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 1514161720075 20704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/54T7Flow Mapping 9SHH000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SHHSpec Example 5.8. Quoted Scalar Indicators Y2GN000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Y2GNAnchor with colon in the middle KS4U000755001750001750 014161720075 20402 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KS4UInvalid item after end of flow sequence K527000755001750001750 014161720075 20304 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20675 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K527Spec Example 6.6. Line Folding 4HVU000755001750001750 014161720075 20402 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4HVUWrong indendation in Sequence 8CWC000755001750001750 014161720075 20360 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8CWCPlain mapping key ending with colon EX5H000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EX5HMultiline Scalar at Top Level [1.3] GDY7000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GDY7Comment that looks like a mapping key 8XDJ000755001750001750 014161720075 20371 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XDJComment in plain multiline value FH7J000755001750001750 014161720075 20352 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FH7JTags on Empty Scalars ZCZ6000755001750001750 014161720075 20410 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZCZ6Invalid mapping in plain single line value XW4D000755001750001750 014161720075 20402 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XW4DVarious Trailing Comments HRE5000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5714161720075 20752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HRE5Double quoted scalar with escaped single quote 8MK2000755001750001750 014161720075 20335 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20721 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8MK2Explicit Non-Specific Tag 65WH000755001750001750 014161720075 20345 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/65WHSingle Entry Block Sequence JS2J000755001750001750 014161720075 20364 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JS2JSpec Example 6.29. Node Anchors 3HFZ000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3HFZInvalid content after document end marker BF9H000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BF9HTrailing comment in multiline plain scalar JY7Z000755001750001750 014161720075 20417 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 21006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JY7ZTrailing content that looks like a mapping TE2A000755001750001750 014161720075 20347 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TE2ASpec Example 8.16. Block Mappings RXY3000755001750001750 014161720075 20421 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 21012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RXY3Invalid document-end marker in single quoted string HU3P000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HU3PInvalid Mapping in plain scalar 4QFQ000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 20760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4QFQSpec Example 8.2. Block Indentation Indicator [1.3] 6JWB000755001750001750 014161720075 20364 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2714161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JWBTags for Block Objects 6H3V000755001750001750 014161720075 20342 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6H3VBackslashes in singlequotes 9KAX000755001750001750 014161720075 20370 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9KAXVarious combinations of tags and anchors D83L000755001750001750 014161720075 20326 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D83LBlock scalar indicator order 2JQS000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2JQSBlock Mapping with Missing Keys 6VJK000755001750001750 014161720075 20374 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 12514161720075 21003 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6VJKSpec Example 2.15. Folded newlines are preserved for "more indented" and blank lines CFD4000755001750001750 014161720075 20334 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6114161720075 20722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CFD4Empty implicit key in single pair flow sequences 5U3A000755001750001750 014161720075 20331 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20721 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5U3ASequence on same Line as Mapping Key BD7L000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BD7LInvalid mapping after sequence 57H4000755001750001750 014161720075 20303 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20671 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/57H4Spec Example 8.22. Block Collection Nodes GH63000755001750001750 014161720075 20323 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20712 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GH63Mixed Block Mapping (explicit to implicit) B63P000755001750001750 014161720075 20326 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20713 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B63PDirective without document 8UDB000755001750001750 014161720075 20356 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8UDBSpec Example 7.14. Flow Sequence Entries 4JVG000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4JVGScalar value with two anchors M5C3000755001750001750 014161720075 20323 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20714 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M5C3Spec Example 8.21. Block Scalar Nodes HMQ5000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4314161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HMQ5Spec Example 6.23. Node Properties HWV9000755001750001750 014161720075 20411 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2414161720075 20776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HWV9Document-end marker FQ7F000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FQ7FSpec Example 2.1. Sequence of Scalars PW8X000755001750001750 014161720075 20422 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 21005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PW8XAnchors on Empty Scalars CT4Q000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5614161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CT4QSpec Example 7.20. Single Pair Explicit Entry X4QW000755001750001750 014161720075 20417 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7014161720075 21005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X4QWComment without whitespace after block scalar indicator U9NS000755001750001750 014161720075 20412 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6014161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U9NSSpec Example 2.8. Play by Play Feed from a Game C2SP000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2SPFlow Mapping Key on two lines T5N4000755001750001750 014161720075 20346 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T5N4Spec Example 8.7. Literal Scalar [1.3] LHL4000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 1414161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LHL4Invalid tag 6BFJ000755001750001750 014161720075 20343 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BFJMapping, key and flow sequence item anchors 5GBF000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20727 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5GBFSpec Example 6.5. Empty Lines 8G76000755001750001750 014161720075 20307 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20673 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8G76Spec Example 6.10. Comment Lines QB6E000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QB6EWrong indented multiline quoted scalar X8DW000755001750001750 014161720075 20406 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X8DWExplicit key and value seperated by comment 7ZZ5000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2714161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7ZZ5Empty flow collections HS5T000755001750001750 014161720075 20377 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HS5TSpec Example 7.12. Plain Lines TS54000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2414161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TS54Folded Block Scalar V9D5000755001750001750 014161720075 20343 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/V9D5Spec Example 8.19. Compact Block Mappings 4UYU000755001750001750 014161720075 20422 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 21012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4UYUColon in Double Quoted String RZP5000755001750001750 014161720075 20414 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RZP5Various Trailing Comments [1.3] AZW3000755001750001750 014161720075 20400 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2514161720075 20766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZW3Lookahead test cases 8XYN000755001750001750 014161720075 20422 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 21012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XYNAnchor with unicode character JHB9000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JHB9Spec Example 2.7. Two Documents in a Stream EHF6000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EHF6Tags for Flow Objects JR7V000755001750001750 014161720075 20404 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JR7VQuestion marks in scalars G7JE000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3014161720075 20732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G7JEMultiline implicit keys FRK4000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5614161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FRK4Spec Example 7.3. Completely Empty Flow Nodes W9L4000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W9L4Literal block scalar with more spaces in first line JTV5000755001750001750 014161720075 20404 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JTV5Block Mapping with Multiline Scalars P2EQ000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6314161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2EQInvalid sequene item on same line as previous item K4SU000755001750001750 014161720075 20402 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K4SUMultiple Entry Block Sequence PUW8000755001750001750 014161720075 20417 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 21005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PUW8Document start on last line FP8R000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FP8RZero indented block scalar SU74000755001750001750 014161720075 20356 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU74Anchor and alias as mapping key T4YY000755001750001750 014161720075 20425 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 21015 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T4YYSpec Example 7.9. Single Quoted Lines [1.3] U3XV000755001750001750 014161720075 20421 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 21010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U3XVNode and Mapping Key Anchors 753E000755001750001750 014161720075 20277 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20662 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/753EBlock Scalar Strip [1.3] MYW6000755001750001750 014161720075 20416 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2314161720075 21002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MYW6Block Scalar Strip DHP8000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 1614161720075 20745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DHP8Flow Sequence C2DT000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6014161720075 20735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2DTSpec Example 7.18. Flow Mapping Adjacent Values 6SLA000755001750001750 014161720075 20361 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6SLAAllowed characters in quoted mapping key 2CMS000755001750001750 014161720075 20360 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4314161720075 20746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2CMSInvalid mapping in plain multiline 74H7000755001750001750 014161720075 20305 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20670 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/74H7Tags in Implicit Mapping RR7F000755001750001750 014161720075 20374 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RR7FMixed Block Mapping (implicit to explicit) S4GJ000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4GJInvalid text after block scalar indicator LX3P000755001750001750 014161720075 20402 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LX3PImplicit Flow Mapping Key on one line A2M4000755001750001750 014161720075 20317 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A2M4Spec Example 6.2. Indentation Indicators S4T7000755001750001750 014161720075 20355 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2514161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4T7Document with footer DWX9000755001750001750 014161720075 20407 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DWX9Spec Example 8.8. Literal Content J9HZ000755001750001750 014161720075 20400 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 20771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J9HZSpec Example 2.9. Single Document with Two Comments JQ4R000755001750001750 014161720075 20374 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JQ4RSpec Example 8.14. Block Sequence NJ66000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NJ66Multiline plain flow mapping key CXX2000755001750001750 014161720075 20400 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CXX2Mapping with anchor on document start line 9MAG000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6214161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MAGFlow sequence with invalid comma at the beginning 82AN000755001750001750 014161720075 20324 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/82ANThree dashes and content without space 236B000755001750001750 014161720075 20270 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20656 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/236BInvalid value after mapping 6JQW000755001750001750 014161720075 20403 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6714161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JQWSpec Example 2.13. In literals, newlines are preserved 9WXW000755001750001750 014161720075 20432 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 21023 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9WXWSpec Example 6.18. Primary Tag Handle CML9000755001750001750 014161720075 20360 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CML9Missing comma in flow 7Z25000755001750001750 014161720075 20323 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7Z25Bare document after document end marker NHX8000755001750001750 014161720075 20401 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NHX8Empty Lines at End of Document M29M000755001750001750 014161720075 20340 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2514161720075 20726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M29MLiteral Block Scalar 93JH000755001750001750 014161720075 20331 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93JHBlock Mappings in Block Sequence RLU9000755001750001750 014161720075 20407 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2014161720075 20770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RLU9Sequence Indent XV9V000755001750001750 014161720075 20430 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 21017 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XV9VSpec Example 6.5. Empty Lines [1.3] U44R000755001750001750 014161720075 20352 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U44RBad indentation in mapping (2) W4TN000755001750001750 014161720075 20410 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 21002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W4TNSpec Example 9.5. Directives Documents 7BMT000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4314161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7BMTNode and Mapping Key Anchors [1.3] 62EZ000755001750001750 014161720075 20342 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6714161720075 20736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/62EZInvalid block mapping key on same line as previous key HMK4000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6014161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HMK4Spec Example 2.16. Indentation determines scope ZL4Z000755001750001750 014161720075 20417 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2714161720075 21007 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZL4ZInvalid nested mapping D9TU000755001750001750 014161720075 20401 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D9TUSingle Pair Block Mapping 3MYT000755001750001750 014161720075 20410 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6714161720075 21004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3MYTPlain Scalar looking like key, comment, anchor and tag SF5V000755001750001750 014161720075 20377 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SF5VDuplicate YAML directive 9U5K000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9U5KSpec Example 2.12. Compact Nested Mapping 9TFX000755001750001750 014161720075 20406 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9TFXSpec Example 7.6. Double Quoted Lines [1.3] QLJ7000755001750001750 014161720075 20371 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7614161720075 20765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QLJ7Tag shorthand used in documents but only defined in the first F2C7000755001750001750 014161720075 20315 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2114161720075 20677 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F2C7Anchors and Tags AVM7000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 1514161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AVM7Empty Stream 7MNF000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 1614161720075 20751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7MNFMissing colon NKF9000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NKF9Empty keys in block and flow mapping 229Q000755001750001750 014161720075 20311 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20703 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/229QSpec Example 2.4. Sequence of Mappings J7VC000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7VCEmpty Lines Between Mapping Elements 2AUY000755001750001750 014161720075 20374 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2714161720075 20764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2AUYTags in Block Sequence 5BVJ000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5BVJSpec Example 5.7. Block Scalar Indicators S9E8000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S9E8Spec Example 5.3. Block Structure Indicators M7NX000755001750001750 014161720075 20405 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3014161720075 20767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7NXNested flow collections ZVH3000755001750001750 014161720075 20406 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZVH3Wrong indented sequence item 4FJ6000755001750001750 014161720075 20325 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20714 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4FJ6Nested implicit complex keys 87E4000755001750001750 014161720075 20303 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5614161720075 20675 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/87E4Spec Example 7.8. Single Quoted Implicit Keys DFF7000755001750001750 014161720075 20342 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DFF7Spec Example 7.16. Flow Mapping Entries MZX3000755001750001750 014161720075 20415 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 21004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MZX3Non-Specific Tags on Scalars TD5N000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TD5NInvalid scalar after sequence 9MMA000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMADirective by itself with no document 5TYM000755001750001750 014161720075 20412 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 21001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TYMSpec Example 6.21. Local Tag Prefix DBG4000755001750001750 014161720075 20334 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DBG4Spec Example 7.10. Plain Characters BEC7000755001750001750 014161720075 20334 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BEC7Spec Example 6.14. “YAML” directive SYW4000755001750001750 014161720075 20422 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 21013 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SYW4Spec Example 2.2. Mapping Scalars to Scalars 7W2P000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7W2PBlock Mapping with Missing Values 3UYS000755001750001750 014161720075 20417 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 21010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3UYSEscaped slash in double quotes UDR7000755001750001750 014161720075 20375 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDR7Spec Example 5.4. Flow Collection Indicators 6M2F000755001750001750 014161720075 20326 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20713 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6M2FAliases in Explicit Block Mapping DC7X000755001750001750 014161720075 20361 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DC7XVarious trailing tabs 7T8X000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7214161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7T8XSpec Example 8.10. Folded Lines - 8.13. Final Empty Lines 5C5M000755001750001750 014161720075 20325 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5C5MSpec Example 7.15. Flow Mappings MXS3000755001750001750 014161720075 20406 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MXS3Flow Mapping in Block Sequence L9U5000755001750001750 014161720075 20352 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L9U5Spec Example 7.11. Plain Implicit Keys 9MMW000755001750001750 014161720075 20405 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMWSingle Pair Implicit Entries SY6V000755001750001750 014161720075 20423 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 21011 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SY6VAnchor before sequence entry on same line F8F9000755001750001750 014161720075 20330 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F8F9Spec Example 8.5. Chomping Trailing Lines CPZ3000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CPZ3Doublequoted scalar starting with a tab M5DY000755001750001750 014161720075 20372 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M5DYSpec Example 2.11. Mapping between Sequences 7FWL000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7FWLSpec Example 6.24. Verbatim Tags 9FMG000755001750001750 014161720075 20356 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9FMGMulti-level Mapping Indent KK5P000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6014161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KK5PVarious combinations of explicit block mappings 735Y000755001750001750 014161720075 20323 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20712 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/735YSpec Example 8.20. Block Node Types J5UC000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J5UCMultiple Pair Block Mapping 9SA2000755001750001750 014161720075 20332 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20717 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SA2Multiline double quoted flow mapping key Q4CL000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q4CLTrailing content after quoted value Q5MG000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 20756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q5MGTab at beginning of line followed by a flow mapping J7PZ000755001750001750 014161720075 20406 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7PZSpec Example 2.26. Ordered Mappings G4RS000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G4RSSpec Example 2.17. Quoted Scalars 7BUB000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 11414161720075 20760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7BUBSpec Example 2.10. Node for “Sammy Sosa” appears twice in this document W5VH000755001750001750 014161720075 20405 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W5VHAllowed characters in alias RHX7000755001750001750 014161720075 20404 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RHX7YAML directive without document end marker BU8L000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BU8LNode Anchor and Tag on Seperate Lines LP6E000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LP6EWhitespace After Scalars in Flow 55WF000755001750001750 014161720075 20342 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/55WFInvalid escape in double quoted string 5TRB000755001750001750 014161720075 20370 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TRBInvalid document-start marker in doublequoted tring 33X3000755001750001750 014161720075 20314 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/33X3Three explicit integers in a block sequence SR86000755001750001750 014161720075 20356 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2214161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SR86Anchor plus Alias H3Z8000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2014161720075 20731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H3Z8Literal unicode CQ3W000755001750001750 014161720075 20371 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CQ3WDouble quoted string without closing quote 7TMG000755001750001750 014161720075 20372 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7TMGComment in flow sequence before comma 3R3P000755001750001750 014161720075 20343 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3R3PSingle block sequence with anchor 36F6000755001750001750 014161720075 20300 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20672 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/36F6Multiline plain scalar with empty line N4JP000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N4JPBad indentation in mapping 3ALJ000755001750001750 014161720075 20345 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3ALJBlock Sequence in Block Sequence C4HZ000755001750001750 014161720075 20364 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C4HZSpec Example 2.24. Global Tags A6F9000755001750001750 014161720075 20321 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A6F9Spec Example 8.4. Chomping Final Line Break D88J000755001750001750 014161720075 20331 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D88JFlow Sequence in Block Mapping D49Q000755001750001750 014161720075 20335 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D49QMultiline single quoted implicit keys ZXT5000755001750001750 014161720075 20426 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 21017 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZXT5Implicit key followed by newline and adjacent value 93WF000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93WFSpec Example 6.6. Line Folding [1.3] ZH7C000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2314161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZH7CAnchors in Mapping 7LBH000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7LBHMultiline double quoted implicit keys K3WX000755001750001750 014161720075 20410 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6414161720075 21001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K3WXColon and adjacent value after comment on next line H2RW000755001750001750 014161720075 20376 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 1414161720075 20762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H2RWBlank lines FBC9000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FBC9Allowed characters in plain scalars 5T43000755001750001750 014161720075 20313 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5714161720075 20706 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5T43Colon at the beginning of adjacent flow scalar CC74000755001750001750 014161720075 20314 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20705 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CC74Spec Example 6.20. Tag Handles PBJ2000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5714161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PBJ2Spec Example 2.3. Mapping Scalars to Sequences J3BT000755001750001750 014161720075 20356 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4314161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J3BTSpec Example 5.12. Tabs and Spaces 4GC6000755001750001750 014161720075 20317 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20706 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4GC6Spec Example 7.7. Single Quoted Characters 4EJS000755001750001750 014161720075 20361 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4EJSInvalid tabs as indendation in a mapping Z67P000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z67PSpec Example 8.21. Block Scalar Nodes [1.3] B3HG000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B3HGSpec Example 8.9. Folded Scalar [1.3] X38W000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3014161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X38WAliases in Flow Objects EW3V000755001750001750 014161720075 20400 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EW3VWrong indendation in mapping AZ63000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6114161720075 20725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZ63Sequence With Same Indentation as Parent Mapping ZK9H000755001750001750 014161720075 20401 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZK9HNested top level flow mapping DK3J000755001750001750 014161720075 20347 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7714161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK3JZero indented block scalar with line that looks like a comment 6JTT000755001750001750 014161720075 20403 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JTTFlow sequence without closing bracket 27NA000755001750001750 014161720075 20323 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20714 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/27NASpec Example 5.9. Directive Indicator L94M000755001750001750 014161720075 20341 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L94MTags in Explicit Mapping S4JQ000755001750001750 014161720075 20375 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4JQSpec Example 6.28. Non-Specific Tags WZ62000755001750001750 014161720075 20364 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/WZ62Spec Example 7.2. Empty Content CUP7000755001750001750 014161720075 20372 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CUP7Spec Example 5.6. Node Property Indicators EB22000755001750001750 014161720075 20306 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20677 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EB22Missing document-end marker before directive NP9H000755001750001750 014161720075 20372 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 20762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NP9HSpec Example 7.5. Double Quoted Line Breaks 6PBE000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6114161720075 20736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6PBEZero-indented sequences in explicit mapping keys SKE5000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SKE5Anchor before zero indented sequence CTN5000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CTN5Flow sequence with invalid extra comma 9YRD000755001750001750 014161720075 20403 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9YRDMultiline Scalar at Top Level 4V8U000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4V8UPlain scalar with backslashes 98YD000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/98YDSpec Example 5.5. Comment Indicator 565N000755001750001750 014161720075 20311 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2114161720075 20673 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/565NConstruct Binary NB6Z000755001750001750 014161720075 20373 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5714161720075 20766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NB6ZMultiline plain value with tabs on empty lines RZT7000755001750001750 014161720075 20422 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 21010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RZT7Spec Example 2.28. Log File 4ZYM000755001750001750 014161720075 20417 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 21002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ZYMSpec Example 6.4. Line Prefixes A984000755001750001750 014161720075 20301 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20667 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A984Multiline Scalar in Mapping DMG6000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DMG6Wrong indendation in Map 5MUD000755001750001750 014161720075 20366 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5MUDColon and adjacent value on next line 9CWY000755001750001750 014161720075 20407 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9CWYInvalid scalar at the end of mapping Q8AD000755001750001750 014161720075 20351 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6214161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q8ADSpec Example 7.5. Double Quoted Line Breaks [1.3] R4YG000755001750001750 014161720075 20401 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5614161720075 20773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R4YGSpec Example 8.2. Block Indentation Indicator SU5Z000755001750001750 014161720075 20422 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6514161720075 21014 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU5ZComment without whitespace after doublequoted scalar N782000755001750001750 014161720075 20312 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N782Invalid document markers in flow style U3C3000755001750001750 014161720075 20331 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U3C3Spec Example 6.16. “TAG” directive 2LFX000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2LFXSpec Example 6.13. Reserved Directives [1.3] 9KBC000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9KBCMapping starting at --- line R52L000755001750001750 014161720075 20340 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5214161720075 20726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R52LNested flow mapping sequence and mappings V55R000755001750001750 014161720075 20355 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/V55RAliases in Block Sequence M7A3000755001750001750 014161720075 20323 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7A3Spec Example 9.3. Bare Documents U99R000755001750001750 014161720075 20364 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2514161720075 20752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U99RInvalid comma in tag 6XDY000755001750001750 014161720075 20406 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6XDYTwo document start markers W42U000755001750001750 014161720075 20355 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5614161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W42USpec Example 8.15. Block Sequence Entry Types UGM3000755001750001750 014161720075 20367 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UGM3Spec Example 2.27. Invoice Z9M4000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z9M4Spec Example 6.22. Global Tag Prefix 6KGN000755001750001750 014161720075 20361 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6KGNAnchor for empty node 4CQQ000755001750001750 014161720075 20364 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5314161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4CQQSpec Example 2.18. Multi-line Flow Scalars FTA2000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7614161720075 20744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FTA2Single block sequence with anchor and explicit document start 6WPF000755001750001750 014161720075 20376 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WPFSpec Example 6.8. Flow Folding [1.3] AB8U000755001750001750 014161720075 20353 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7214161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AB8USequence entry that looks like two with wrong indentation 35KP000755001750001750 014161720075 20336 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/35KPTags for Root Objects 5NYZ000755001750001750 014161720075 20421 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 21010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5NYZSpec Example 6.9. Separated Comment NAT4000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NAT4Various empty or newline only quoted strings GT5M000755001750001750 014161720075 20370 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3014161720075 20752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GT5MNode anchor in sequence 2XXW000755001750001750 014161720075 20424 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 21011 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2XXWSpec Example 2.25. Unordered Sets 8KB6000755001750001750 014161720075 20326 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5714161720075 20721 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8KB6Multiline plain flow mapping key without value 6S55000755001750001750 014161720075 20316 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6S55Invalid scalar at the end of sequence P2AD000755001750001750 014161720075 20342 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2ADSpec Example 8.1. Block Scalar Header 7A4E000755001750001750 014161720075 20314 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20705 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7A4ESpec Example 7.6. Double Quoted Lines 6LVF000755001750001750 014161720075 20371 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6LVFSpec Example 6.13. Reserved Directives UDM2000755001750001750 014161720075 20363 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDM2Plain URL in flow mapping 5LLU000755001750001750 014161720075 20375 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7014161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5LLUBlock scalar with wrong indented line after spaces only Q88A000755001750001750 014161720075 20335 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q88ASpec Example 7.23. Flow Content P76L000755001750001750 014161720075 20344 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P76LSpec Example 6.19. Secondary Tag Handle F6MC000755001750001750 014161720075 20347 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 7514161720075 20742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F6MCMore indented lines at the beginning of folded block scalars 6FWR000755001750001750 014161720075 20400 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2214161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6FWRBlock Scalar Keep P94K000755001750001750 014161720075 20343 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P94KSpec Example 6.11. Multi-Line Comments BS4K000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4314161720075 20745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BS4KComment between plain scalar lines T26H000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T26HSpec Example 8.8. Literal Content [1.3] S7BG000755001750001750 014161720075 20356 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3014161720075 20740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S7BGColon followed by comma KSS4000755001750001750 014161720075 20400 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2414161720075 20765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KSS4Scalars on --- line EXG3000755001750001750 014161720075 20362 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EXG3Three dashes and content without space [1.3] CN3R000755001750001750 014161720075 20361 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CN3RVarious location of anchors in flow sequence UT92000755001750001750 014161720075 20357 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UT92Spec Example 9.4. Explicit Documents 52DL000755001750001750 014161720075 20322 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20705 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/52DLExplicit Non-Specific Tag [1.3] QT73000755001750001750 014161720075 20352 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4014161720075 20735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QT73Comment and document-end marker LQZ7000755001750001750 014161720075 20411 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5614161720075 21003 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LQZ7Spec Example 7.4. Double Quoted Implicit Keys TL85000755001750001750 014161720075 20350 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TL85Spec Example 6.8. Flow Folding PRH3000755001750001750 014161720075 20370 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4614161720075 20761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PRH3Spec Example 7.9. Single Quoted Lines 6BCT000755001750001750 014161720075 20352 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BCTSpec Example 6.3. Separation Spaces 4MUZ000755001750001750 014161720075 20413 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 21003 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4MUZFlow mapping colon on line after key 96L6000755001750001750 014161720075 20314 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 10114161720075 20715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/96L6Spec Example 2.14. In the folded scalars, newlines become spaces 2SXE000755001750001750 014161720075 20375 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3314161720075 20762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2SXEAnchors With Colon in Name F3CP000755001750001750 014161720075 20347 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F3CPNested flow collections on one line S3PD000755001750001750 014161720075 20365 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6214161720075 20754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S3PDSpec Example 8.18. Implicit Block Mapping Entries 5KJE000755001750001750 014161720075 20352 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5KJESpec Example 7.13. Flow Sequence 4ABK000755001750001750 014161720075 20335 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ABKFlow Mapping Separate Values DK4H000755001750001750 014161720075 20346 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK4HImplicit key followed by newline 6WLZ000755001750001750 014161720075 20416 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5414161720075 21006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WLZSpec Example 6.18. Primary Tag Handle [1.3] 9DXL000755001750001750 014161720075 20374 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3714161720075 20765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9DXLSpec Example 9.6. Stream [1.3] 9C9N000755001750001750 014161720075 20336 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3514161720075 20725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9C9NWrong indented flow sequence K858000755001750001750 014161720075 20313 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20677 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K858Spec Example 8.6. Empty Scalar Chomping H7J7000755001750001750 014161720075 20333 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3114161720075 20716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H7J7Node anchor not indented LE5A000755001750001750 014161720075 20342 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LE5ASpec Example 7.24. Flow Nodes QF4Y000755001750001750 014161720075 20377 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5514161720075 20770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QF4YSpec Example 7.19. Single Pair Flow Mappings 6HB6000755001750001750 014161720075 20321 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6HB6Spec Example 6.1. Indentation Spaces 4H7K000755001750001750 014161720075 20331 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6114161720075 20717 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4H7KFlow sequence with invalid extra closing bracket T833000755001750001750 014161720075 20315 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5014161720075 20701 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T833Flow mapping missing a separating comma Q9WF000755001750001750 014161720075 20402 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4514161720075 20772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q9WFSpec Example 6.12. Separation Spaces 4Q9F000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3214161720075 20723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4Q9FFolded Block Scalar [1.3] 9J7A000755001750001750 014161720075 20326 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2614161720075 20715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9J7ASimple Mapping Indent S98Z000755001750001750 014161720075 20371 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6614161720075 20764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S98ZBlock scalar with more spaces than first content line KMK3000755001750001750 014161720075 20361 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 2114161720075 20743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KMK3Block Submapping SSW6000755001750001750 014161720075 20416 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6114161720075 21004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SSW6Spec Example 7.7. Single Quoted Characters [1.3] 5WE3000755001750001750 014161720075 20337 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 6214161720075 20726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5WE3Spec Example 8.17. Explicit Block Mapping Entries E76Z000755001750001750 014161720075 20347 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4214161720075 20734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/E76ZAliases in Implicit Block Mapping 9HCY000755001750001750 014161720075 20370 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4714161720075 20762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9HCYNeed document footer before directives 3GZX000755001750001750 014161720075 20407 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3614161720075 20777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3GZXSpec Example 7.1. Alias Nodes G9HC000755001750001750 014161720075 20346 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 5114161720075 20733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G9HCInvalid anchor in zero indented sequence M9B4000755001750001750 014161720075 20327 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4114161720075 20713 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M9B4Spec Example 8.7. Literal Scalar CVW2000755001750001750 014161720075 20375 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 3414161720075 20763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CVW2Invalid comment after comma 26DV000755001750001750 014161720075 20335 5ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data===100644001750001750 4414161720075 20724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/26DVWhitespace around colon in mappings ext.yaml100644001750001750 20114161720075 21773 0ustar00tinatina000000000000YAML-PP-0.031/examples/external-vars-templates--- filename: !external /argv/0 env.LANG: !external /env/LANG argv: !external /argv path: !template "${/config/prefix}/bin/perl" error100644001750001750 014161720075 21463 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9JBAerror100644001750001750 014161720075 21524 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KS4Uerror100644001750001750 014161720075 21524 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4HVUerror100644001750001750 014161720075 21510 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GDY7error100644001750001750 014161720075 21513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XDJerror100644001750001750 014161720075 21532 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZCZ6error100644001750001750 014161720075 21501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HRE5error100644001750001750 014161720075 21510 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3HFZerror100644001750001750 014161720075 21466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BF9Herror100644001750001750 014161720075 21541 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JY7Zerror100644001750001750 014161720075 21543 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RXY3error100644001750001750 014161720075 21515 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HU3Perror100644001750001750 014161720075 21453 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5U3Aerror100644001750001750 014161720075 21466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BD7Lerror100644001750001750 014161720075 21450 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B63Perror100644001750001750 014161720075 21510 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4JVGerror100644001750001750 014161720075 21541 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X4QWerror100644001750001750 014161720075 21505 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2SPerror100644001750001750 014161720075 21501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LHL4error100644001750001750 014161720075 21473 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QB6Eerror100644001750001750 014161720075 21472 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G7JEerror100644001750001750 014161720075 21475 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W9L4error100644001750001750 014161720075 21505 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2EQerror100644001750001750 014161720075 21500 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU74error100644001750001750 014161720075 21502 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2CMSerror100644001750001750 014161720075 21505 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4GJerror100644001750001750 014161720075 21522 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CXX2error100644001750001750 014161720075 21473 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MAGerror100644001750001750 014161720075 21412 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/236Berror100644001750001750 014161720075 21502 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CML9error100644001750001750 014161720075 21474 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U44Rerror100644001750001750 014161720075 21464 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/62EZerror100644001750001750 014161720075 21541 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZL4Zerror100644001750001750 014161720075 21521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SF5Verror100644001750001750 014161720075 21513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QLJ7error100644001750001750 014161720075 21505 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7MNFerror100644001750001750 014161720075 21530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZVH3error100644001750001750 014161720075 21510 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TD5Nerror100644001750001750 014161720075 21501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMAerror100644001750001750 014161720075 21545 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SY6Verror100644001750001750 014161720075 21501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q4CLerror100644001750001750 014161720075 21526 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RHX7error100644001750001750 014161720075 21464 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/55WFerror100644001750001750 014161720075 21512 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TRBerror100644001750001750 014161720075 21500 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SR86error100644001750001750 014161720075 21513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CQ3Werror100644001750001750 014161720075 21511 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N4JPerror100644001750001750 014161720075 21457 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D49Qerror100644001750001750 014161720075 21550 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZXT5error100644001750001750 014161720075 21472 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7LBHerror100644001750001750 014161720075 21503 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4EJSerror100644001750001750 014161720075 21522 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EW3Verror100644001750001750 014161720075 21525 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JTTerror100644001750001750 014161720075 21430 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EB22error100644001750001750 014161720075 21507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CTN5error100644001750001750 014161720075 21473 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DMG6error100644001750001750 014161720075 21531 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9CWYerror100644001750001750 014161720075 21544 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU5Zerror100644001750001750 014161720075 21434 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N782error100644001750001750 014161720075 21466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9KBCerror100644001750001750 014161720075 21506 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U99Rerror100644001750001750 014161720075 21512 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GT5Merror100644001750001750 014161720075 21440 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6S55error100644001750001750 014161720075 21517 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5LLUerror100644001750001750 014161720075 21501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BS4Kerror100644001750001750 014161720075 21470 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK4Herror100644001750001750 014161720075 21460 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9C9Nerror100644001750001750 014161720075 21455 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H7J7error100644001750001750 014161720075 21453 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4H7Kerror100644001750001750 014161720075 21437 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T833error100644001750001750 014161720075 21513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S98Zerror100644001750001750 014161720075 21512 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9HCYerror100644001750001750 014161720075 21470 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G9HCerror100644001750001750 014161720075 21517 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CVW2in.json100644001750001750 1314161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RTP8"Document" in.yaml100644001750001750 4414161720075 22001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RTP8%YAML 1.2 --- Document ... # Suffix in.json100644001750001750 16114161720075 22026 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZF4X{ "Mark McGwire": { "hr": 65, "avg": 0.278 }, "Sammy Sosa": { "hr": 63, "avg": 0.288 } } in.yaml100644001750001750 12014161720075 22012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZF4XMark McGwire: {hr: 65, avg: 0.278} Sammy Sosa: { hr: 63, avg: 0.288 } in.json100644001750001750 24714161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/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 17714161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/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 3614161720075 21722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6CK3[ "foo", "bar", "baz" ] in.yaml100644001750001750 12014161720075 21725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6CK3%TAG !e! tag:example.com,2000:app/ --- - !local foo - !!str bar - !e!tag%21 baz in.json100644001750001750 3214161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MJS9"foo \n\n\t bar\n\nbaz\n" in.yaml100644001750001750 3214161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MJS9> foo bar baz in.yaml100644001750001750 3114161720075 21725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9JBA--- [ a, b, c, ]#invalid in.json100644001750001750 14014161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9BXH[ { "single line": null, "a": "b" }, { "multi line": null, "a": "b" } ] in.yaml100644001750001750 6714161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9BXH--- - { "single line", a: b} - { "multi line", a: b} in.json100644001750001750 1114161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K54U"scalar" in.yaml100644001750001750 1314161720075 21730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K54U--- scalar in.json100644001750001750 5414161720075 21753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8QBE{ "key": [ "item1", "item2" ] } in.yaml100644001750001750 2714161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8QBEkey: - item1 - item2 in.yaml100644001750001750 2714161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SBG9{a: [b, c], [d, e]: f} in.json100644001750001750 2314161720075 22005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XLQ9"scalar %YAML 1.2" in.yaml100644001750001750 2514161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XLQ9--- scalar %YAML 1.2 in.json100644001750001750 2014161720075 21677 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G992"folded text\n" in.yaml100644001750001750 2214161720075 21672 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G992> folded text in.json100644001750001750 4414161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FUP4[ "a", [ "b", "c" ] ] in.yaml100644001750001750 1414161720075 21757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FUP4[a, [b, c]] in.json100644001750001750 21014161720075 22017 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/YD5X[ [ "name", "hr", "avg" ], [ "Mark McGwire", 65, 0.278 ], [ "Sammy Sosa", 63, 0.288 ] ] in.yaml100644001750001750 12414161720075 22014 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/YD5X- [name , hr, avg ] - [Mark McGwire, 65, 0.278] - [Sammy Sosa , 63, 0.288] in.json100644001750001750 4414161720075 22012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZWK4{ "a": 1, "b": null, "c": 3 } in.yaml100644001750001750 3214161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZWK4--- a: 1 ? b &anchor c: 3 in.json100644001750001750 4614161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6ZKB"Document" null { "matches %": 20 } in.yaml100644001750001750 6514161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6ZKBDocument --- # Empty ... %YAML 1.2 --- matches %: 20 in.json100644001750001750 4314161720075 21715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/54T7{ "foo": "you", "bar": "far" } in.yaml100644001750001750 2514161720075 21706 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/54T7{foo: you, bar: far} in.json100644001750001750 5314161720075 21766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SHH{ "single": "text", "double": "text" } in.yaml100644001750001750 3614161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SHHsingle: 'text' double: "text" in.json100644001750001750 2514161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Y2GN{ "key": "value" } in.yaml100644001750001750 3014161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Y2GN--- key: &an:chor value in.yaml100644001750001750 4314161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KS4U--- [ sequence item ] invalid item in.json100644001750001750 3014161720075 21676 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K527"trimmed\n\n\nas space" in.yaml100644001750001750 4014161720075 21670 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K527>- trimmed as space in.yaml100644001750001750 4414161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4HVUkey: - ok - also ok - wrong in.json100644001750001750 5414161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8CWC{ "key ends with two colons::": "value" } in.yaml100644001750001750 4614161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8CWC--- key ends with two colons::: value in.json100644001750001750 1514161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EX5H"a b c d\ne" in.yaml100644001750001750 2314161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EX5H--- a b c d e in.yaml100644001750001750 3714161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GDY7key: value this is #not a: key in.yaml100644001750001750 3214161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XDJkey: word1 # xxx word2 in.yaml100644001750001750 6314161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FH7J- !!str - !!null : a b: !!str - !!str : !!null in.yaml100644001750001750 1314161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZCZ6a: b: c: d in.yaml100644001750001750 23614161720075 22015 0ustar00tinatina000000000000YAML-PP-0.031/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 3714161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HRE5--- double: "quoted \' scalar" in.json100644001750001750 414161720075 21710 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8MK2"a" in.yaml100644001750001750 414161720075 21701 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8MK2! a in.json100644001750001750 1414161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/65WH[ "foo" ] in.yaml100644001750001750 614161720075 21713 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/65WH- foo in.json100644001750001750 10214161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JS2J{ "First occurrence": "Value", "Second occurrence": "Value" } in.yaml100644001750001750 7314161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JS2JFirst occurrence: &anchor Value Second occurrence: *anchor in.yaml100644001750001750 3314161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3HFZ--- key: value ... invalid in.yaml100644001750001750 5714161720075 21740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BF9H--- plain: a b # end of scalar c in.yaml100644001750001750 10214161720075 22022 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JY7Zkey1: "quoted1" key2: "quoted2" no key: nor value key3: "quoted3" in.json100644001750001750 6014161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TE2A{ "block mapping": { "key": "value" } } in.yaml100644001750001750 3314161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TE2Ablock mapping: key: value in.yaml100644001750001750 1414161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RXY3--- ' ... ' in.yaml100644001750001750 3514161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HU3Pkey: word1 word2 no: key in.json100644001750001750 11214161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4QFQ[ "detected\n", "\n\n# detected\n", " explicit\n", "detected\n" ] in.yaml100644001750001750 10214161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4QFQ- | detected - > # detected - |1 explicit - > detected in.json100644001750001750 7514161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JWB{ "foo": [ "a", { "key": "value" } ] } in.yaml100644001750001750 6614161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JWBfoo: !!seq - !!str a - !!map key: !!str value in.json100644001750001750 3314161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6H3V{ "foo: bar\\": "baz'" } in.yaml100644001750001750 2214161720075 21726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6H3V'foo: bar\': baz' in.json100644001750001750 20714161720075 22010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9KAX"scalar1" "scalar2" "scalar3" { "key5": "value4" } { "a6": 1, "b6": 2 } { "key8": "value7" } { "key10": "value9" } "value11" in.yaml100644001750001750 33314161720075 22001 0ustar00tinatina000000000000YAML-PP-0.031/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 10114161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D83L[ "explicit indent and chomp", "chomp and explicit indent" ] in.yaml100644001750001750 10414161720075 21733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D83L- |2- explicit indent and chomp - |-2 chomp and explicit indent in.yaml100644001750001750 1014161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2JQS: a : b in.json100644001750001750 17214161720075 22015 0ustar00tinatina000000000000YAML-PP-0.031/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 17014161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/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.yaml100644001750001750 5214161720075 21723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CFD4- [ : empty key ] - [: another empty key] in.yaml100644001750001750 2214161720075 21715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5U3Akey: - a - b in.yaml100644001750001750 3314161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BD7L- item1 - item2 invalid: x in.json100644001750001750 14514161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/57H4{ "sequence": [ "entry", [ "nested" ] ], "mapping": { "foo": "bar" } } in.yaml100644001750001750 10314161720075 21707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/57H4sequence: !!seq - entry - !!seq - nested mapping: !!map foo: bar in.json100644001750001750 4114161720075 21717 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GH63{ "a": 1.3, "fifteen": "d" } in.yaml100644001750001750 2514161720075 21712 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GH63? a : 1.3 fifteen: d in.yaml100644001750001750 1614161720075 21715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B63P%YAML 1.2 ... in.json100644001750001750 15514161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8UDB[ "double quoted", "single quoted", "plain text", [ "nested" ], { "single": "pair" } ] in.yaml100644001750001750 13114161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8UDB[ "double quoted", 'single quoted', plain text, [ nested ], single: pair, ] in.yaml100644001750001750 6614161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4JVGtop1: &node1 &k1 key1: val1 top2: &node2 &v2 val2 in.json100644001750001750 6214161720075 21722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M5C3{ "literal": "value\n", "folded": "value\n" } in.yaml100644001750001750 6014161720075 21711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M5C3literal: |2 value folded: !foo >1 value in.json100644001750001750 4314161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HMQ5{ "foo": "bar", "baz": "foo" } in.yaml100644001750001750 5314161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HMQ5!!str &a1 "foo": !!str bar &a2 baz : *a1 in.json100644001750001750 014161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HWV9in.yaml100644001750001750 414161720075 21755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HWV9... in.json100644001750001750 6614161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FQ7F[ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] in.yaml100644001750001750 5214161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FQ7F- Mark McGwire - Sammy Sosa - Ken Griffey in.yaml100644001750001750 10114161720075 22024 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PW8X- &a - a - &a : a b: &b - &c : &a - ? &d - ? &e : &a in.json100644001750001750 4114161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CT4Q[ { "foo bar": "baz" } ] in.yaml100644001750001750 2514161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CT4Q[ ? foo bar : baz ] in.yaml100644001750001750 3314161720075 22005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X4QWblock: ># comment scalar in.json100644001750001750 23514161720075 22033 0ustar00tinatina000000000000YAML-PP-0.031/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 17514161720075 22027 0ustar00tinatina000000000000YAML-PP-0.031/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 1214161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2SP[23 ]: 42 in.json100644001750001750 2414161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T5N4"literal\n\ttext\n" in.yaml100644001750001750 3014161720075 21731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T5N4--- | literal text in.yaml100644001750001750 3114161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LHL4--- !invalid{}tag scalar in.yaml100644001750001750 5314161720075 21733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BFJ--- &mapping &key [ &item a, b, c ]: value in.json100644001750001750 12514161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5GBF{ "Folding": "Empty line\nas a line feed", "Chomping": "Clipped empty lines\n" } in.yaml100644001750001750 12314161720075 21745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5GBFFolding: "Empty line as a line feed" Chomping: | Clipped empty lines in.json100644001750001750 014161720075 21656 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8G76in.yaml100644001750001750 2214161720075 21673 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8G76 # Comment in.yaml100644001750001750 2414161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QB6E--- quoted: "a b c" in.json100644001750001750 2514161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X8DW{ "key": "value" } in.yaml100644001750001750 3414161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X8DW--- ? key # comment : value in.json100644001750001750 21314161720075 22010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7ZZ5{ "nested sequences": [ [ [ [] ] ], [ [ {} ] ] ], "key1": [], "key2": {} } in.yaml100644001750001750 7214161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7ZZ5--- nested sequences: - - - [] - - - {} key1: [] key2: {} in.json100644001750001750 5514161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HS5T"1st non-empty\n2nd non-empty 3rd non-empty" in.yaml100644001750001750 5614161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HS5T1st non-empty 2nd non-empty 3rd non-empty in.json100644001750001750 2414161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TS54"ab cd\nef\n\ngh\n" in.yaml100644001750001750 2614161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TS54> ab cd ef gh in.yaml100644001750001750 5614161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/V9D5- sun: yellow - ? earth: blue : moon: white in.json100644001750001750 2214161720075 22015 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4UYU"foo: bar\": baz" in.yaml100644001750001750 2214161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4UYU"foo: bar\": baz" in.yaml100644001750001750 23514161720075 22026 0ustar00tinatina000000000000YAML-PP-0.031/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.json100644001750001750 10214161720075 22012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZW3[ { "bla\"keks": "foo" }, { "bla]keks": "foo" } ] in.yaml100644001750001750 4014161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZW3- bla"keks: foo - bla]keks: foo in.json100644001750001750 2714161720075 22022 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XYN[ "unicode anchor" ] in.yaml100644001750001750 3314161720075 22010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XYN--- - &😁 unicode anchor in.json100644001750001750 14314161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JHB9[ "Mark McGwire", "Sammy Sosa", "Ken Griffey" ] [ "Chicago Cubs", "St Louis Cardinals" ] in.yaml100644001750001750 20214161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/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 4214161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EHF6{ "k": [ "a", "b" ] } in.yaml100644001750001750 4514161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EHF6!!map { k: !!seq [ a, !!str b] } in.json100644001750001750 32314161720075 22023 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JR7V[ "a?string", "another ? string", { "key": "value?" }, [ "a?string" ], [ "another ? string" ], { "key": "value?" }, { "key": "value?" }, { "key?": "value" } ] in.yaml100644001750001750 20014161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JR7V- a?string - another ? string - key: value? - [a?string] - [another ? string] - {key: value? } - {key: value?} - {key?: value } in.yaml100644001750001750 2014161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G7JEa\nb: 1 c d: 1 in.yaml100644001750001750 3014161720075 21745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FRK4{ ? foo :, : bar, } in.yaml100644001750001750 10714161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W9L4--- block scalar: | more spaces at the beginning are invalid in.json100644001750001750 5114161720075 22001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JTV5{ "a true": "null d", "e 42": null } in.yaml100644001750001750 3714161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JTV5? a true : null d ? e 42 in.yaml100644001750001750 3014161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2EQ--- - { y: z }- invalid in.json100644001750001750 3314161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K4SU[ "foo", "bar", 42 ] in.yaml100644001750001750 2114161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K4SU- foo - bar - 42 in.json100644001750001750 2414161720075 22014 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PUW8{ "a": "b" } null in.yaml100644001750001750 1514161720075 22005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PUW8--- a: b --- in.json100644001750001750 2614161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FP8R"line1 line2 line3\n" in.yaml100644001750001750 3014161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FP8R--- > line1 line2 line3 in.yaml100644001750001750 4714161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU74key1: &alias value1 &b *alias : value2 in.json100644001750001750 5714161720075 22030 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T4YY" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 6614161720075 22021 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T4YY--- ' 1st non-empty 2nd non-empty 3rd non-empty ' in.json100644001750001750 33214161720075 22040 0ustar00tinatina000000000000YAML-PP-0.031/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 27614161720075 22040 0ustar00tinatina000000000000YAML-PP-0.031/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 514161720075 21653 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/753E"ab" in.yaml100644001750001750 2314161720075 21664 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/753E--- |- ab ... in.json100644001750001750 514161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MYW6"ab" in.yaml100644001750001750 1714161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MYW6|- ab ... in.json100644001750001750 3314161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DHP8[ "foo", "bar", 42 ] in.yaml100644001750001750 1714161720075 21747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DHP8[foo, bar, 42] in.json100644001750001750 10214161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2DT{ "adjacent": "value", "readable": "value", "empty": null } in.yaml100644001750001750 6214161720075 21740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2DT{ "adjacent":value, "readable": value, "empty": } in.json100644001750001750 10514161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6SLA{ "foo\nbar:baz\tx \\$%^&*()x": 23, "x\\ny:z\\tx $%^&*()x": 24 } in.yaml100644001750001750 7214161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6SLA"foo\nbar:baz\tx \\$%^&*()x": 23 'x\ny:z\tx $%^&*()x': 24 in.yaml100644001750001750 2614161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2CMSthis is invalid: x in.json100644001750001750 10114161720075 21716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/74H7{ "a": "b", "c": 42, "e": "f", "g": "h", "23": false } in.yaml100644001750001750 7614161720075 21702 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/74H7!!str a: b c: !!int 42 e: !!str f g: h !!str 23: !!bool false in.json100644001750001750 3214161720075 21770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RR7F{ "d": 23, "a": 4.2 } in.yaml100644001750001750 2014161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RR7Fa: 4.2 ? d : 23 in.yaml100644001750001750 4714161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4GJ--- folded: > first line second line in.yaml100644001750001750 1614161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LX3P[flow]: block in.json100644001750001750 7314161720075 21720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A2M4{ "a": [ "b", [ "c", "d" ] ] } in.yaml100644001750001750 3414161720075 21706 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A2M4? a : - b - - c - d in.json100644001750001750 2314161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4T7{ "aaa": "bbb" } in.yaml100644001750001750 1514161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4T7aaa: bbb ... in.json100644001750001750 3314161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DWX9"\n\nliteral\n \n\ntext\n" in.yaml100644001750001750 5314161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DWX9| literal text # Comment in.json100644001750001750 15314161720075 22020 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J9HZ{ "hr": [ "Mark McGwire", "Sammy Sosa" ], "rbi": [ "Sammy Sosa", "Ken Griffey" ] } in.yaml100644001750001750 16314161720075 22012 0ustar00tinatina000000000000YAML-PP-0.031/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 11214161720075 22007 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JQ4R{ "block sequence": [ "one", { "two": "three" } ] } in.yaml100644001750001750 5014161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JQ4Rblock sequence: - one - two : three in.json100644001750001750 11214161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NJ66[ { "single line": "value" }, { "multi line": "value" } ] in.yaml100644001750001750 6514161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NJ66--- - { single line: value} - { multi line: value} in.yaml100644001750001750 2114161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CXX2--- &anchor a: b in.yaml100644001750001750 2214161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MAG--- [ , a, b, c ] in.json100644001750001750 2114161720075 21716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/82AN"---word1 word2" in.yaml100644001750001750 1714161720075 21714 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/82AN---word1 word2 in.yaml100644001750001750 2314161720075 21655 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/236Bfoo: bar invalid in.json100644001750001750 3514161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JQW"\\//||\\/||\n// || ||__\n" in.yaml100644001750001750 5414161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JQW# ASCII Art --- | \//||\/|| // || ||__ in.json100644001750001750 1414161720075 22026 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9WXW"bar" "bar" in.yaml100644001750001750 12214161720075 22037 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9WXW# Private !foo "bar" ... # Global %TAG ! tag:example.com,2000:app/ --- !foo "bar" in.yaml100644001750001750 3614161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CML9key: [ word1 # xxx word2 ] in.json100644001750001750 3714161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7Z25"scalar1" { "key": "value" } in.yaml100644001750001750 3314161720075 21711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7Z25--- scalar1 ... key: value in.yaml100644001750001750 414161720075 21745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NHX8: in.json100644001750001750 3414161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M29M{ "a": "ab\n\ncd\nef\n" } in.yaml100644001750001750 3214161720075 21725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M29Ma: | ab cd ef ... in.json100644001750001750 12314161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93JH[ { "key": "value", "key2": "value2" }, { "key3": "value3" } ] in.yaml100644001750001750 6114161720075 21720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93JH - key: value key2: value2 - key3: value3 in.json100644001750001750 6114161720075 22005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RLU9{ "foo": [ 42 ], "bar": [ 44 ] } in.yaml100644001750001750 2614161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RLU9foo: - 42 bar: - 44 in.json100644001750001750 12514161720075 22047 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XV9V{ "Folding": "Empty line\nas a line feed", "Chomping": "Clipped empty lines\n" } in.yaml100644001750001750 11714161720075 22041 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XV9VFolding: "Empty line as a line feed" Chomping: | Clipped empty lines in.yaml100644001750001750 6214161720075 21742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U44Rmap: key1: "quoted1" key2: "bad indentation" in.json100644001750001750 3014161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W4TN"%!PS-Adobe-2.0\n" null in.yaml100644001750001750 7514161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W4TN%YAML 1.2 --- | %!PS-Adobe-2.0 ... %YAML 1.2 --- # Empty ... in.json100644001750001750 33214161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/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 27214161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/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.yaml100644001750001750 3114161720075 21726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/62EZ--- x: { y: z }in: valid in.json100644001750001750 23314161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/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 21214161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/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.yaml100644001750001750 1614161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZL4Z--- a: 'b': c in.json100644001750001750 2314161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D9TU{ "foo": "bar" } in.yaml100644001750001750 1114161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D9TUfoo: bar in.json100644001750001750 2114161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3MYT"k:#foo &a !t s" in.yaml100644001750001750 2414161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3MYT--- k:#foo &a !t s in.yaml100644001750001750 3014161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SF5V%YAML 1.2 %YAML 1.2 --- in.json100644001750001750 24114161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9U5K[ { "item": "Super Hoop", "quantity": 1 }, { "item": "Basketball", "quantity": 4 }, { "item": "Big Shoes", "quantity": 1 } ] in.yaml100644001750001750 20714161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/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 5714161720075 22011 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9TFX" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 6614161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9TFX--- " 1st non-empty 2nd non-empty 3rd non-empty " in.yaml100644001750001750 13514161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/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.json100644001750001750 3314161720075 21712 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F2C7[ "a", 2, 4, "d" ] in.yaml100644001750001750 5714161720075 21711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F2C7 - &a !!str a - !!int 2 - !!int &c 4 - &d d in.json100644001750001750 014161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AVM7in.yaml100644001750001750 014161720075 21726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AVM7in.yaml100644001750001750 3014161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7MNFtop1: key1: val1 top2 in.yaml100644001750001750 17014161720075 21773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NKF9--- key: value : empty key --- { key: value, : empty key } --- # empty key and value : --- # empty key and value { : } in.json100644001750001750 21114161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/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 13614161720075 21723 0ustar00tinatina000000000000YAML-PP-0.031/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 3514161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7VC{ "one": 2, "three": 4 } in.yaml100644001750001750 2214161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7VCone: 2 three: 4 in.json100644001750001750 3614161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2AUY[ "a", "b", 42, "d" ] in.yaml100644001750001750 4114161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2AUY - !!str a - b - !!int 42 - d in.json100644001750001750 7314161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5BVJ{ "literal": "some\ntext\n", "folded": "some text\n" } in.yaml100644001750001750 6114161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5BVJliteral: | some text folded: > some text in.json100644001750001750 14714161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S9E8{ "sequence": [ "one", "two" ], "mapping": { "sky": "blue", "sea": "green" } } in.yaml100644001750001750 7614161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S9E8sequence: - one - two mapping: ? sky : blue sea : green in.json100644001750001750 13514161720075 22025 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7NX{ "a": [ "b", "c", { "d": [ "e", "f" ] } ] } in.yaml100644001750001750 5414161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7NX--- { a: [ b, c, { d: [e, f] } ] } in.yaml100644001750001750 2614161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZVH3- key: value - item1 in.yaml100644001750001750 4514161720075 21716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4FJ6--- [ [ a, [ [[b,c]]: d, e]]: 23 ] in.json100644001750001750 12114161720075 21716 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/87E4{ "implicit block key": [ { "implicit flow key": "value" } ] } in.yaml100644001750001750 7314161720075 21675 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/87E4'implicit block key' : [ 'implicit flow key' : value, ] in.yaml100644001750001750 5214161720075 21731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DFF7{ ? explicit: entry, implicit: entry, ? } in.json100644001750001750 12214161720075 22031 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MZX3[ "plain", "double quoted", "single quoted", "block\n", "plain again" ] in.yaml100644001750001750 10614161720075 22024 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MZX3- plain - "double quoted" - 'single quoted' - > block - plain again in.yaml100644001750001750 3014161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TD5N- item1 - item2 invalid in.yaml100644001750001750 1214161720075 21742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMA%YAML 1.2 in.json100644001750001750 2614161720075 22011 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TYM"fluorescent" "green" in.yaml100644001750001750 14514161720075 22024 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TYM%TAG !m! !my- --- # Bulb here !m!light fluorescent ... %TAG !m! !my- --- # Color here !m!light green in.json100644001750001750 30614161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/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 33214161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/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 614161720075 21711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BEC7"foo" in.yaml100644001750001750 10114161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BEC7%YAML 1.3 # Attempt parsing # with a warning --- "foo" in.json100644001750001750 5514161720075 22023 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SYW4{ "hr": 65, "avg": 0.278, "rbi": 147 } in.yaml100644001750001750 12014161720075 22025 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SYW4hr: 65 # Home runs avg: 0.278 # Batting average rbi: 147 # Runs Batted In in.json100644001750001750 5214161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7W2P{ "a": null, "b": null, "c": null } in.yaml100644001750001750 1314161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7W2P? a ? b c: in.json100644001750001750 3514161720075 22016 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3UYS{ "escaped slash": "a/b" } in.yaml100644001750001750 2614161720075 22007 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3UYSescaped slash: "a\/b" in.json100644001750001750 14714161720075 22020 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDR7{ "sequence": [ "one", "two" ], "mapping": { "sky": "blue", "sea": "green" } } in.yaml100644001750001750 7314161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDR7sequence: [ one, two, ] mapping: { sky: blue, sea: green } in.yaml100644001750001750 2314161720075 21713 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6M2F? &a a : &b b : *a in.json100644001750001750 6314161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DC7X{ "a": "b", "seq": [ "a" ], "c": "d" } in.yaml100644001750001750 3214161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DC7Xa: b seq: - a c: d #X in.json100644001750001750 11514161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7T8X"\nfolded line\nnext line\n * bullet\n\n * list\n * lines\n\nlast line\n" in.yaml100644001750001750 13014161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7T8X> folded line next line * bullet * list * lines last line # Comment in.json100644001750001750 14314161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5C5M[ { "one": "two", "three": "four" }, { "five": "six", "seven": "eight" } ] in.yaml100644001750001750 7414161720075 21720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5C5M- { one : two , three: four , } - {five: six,seven : eight} in.json100644001750001750 3114161720075 22001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MXS3[ { "a": "b" } ] in.yaml100644001750001750 1114161720075 21770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MXS3- {a: b} in.json100644001750001750 12114161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L9U5{ "implicit block key": [ { "implicit flow key": "value" } ] } in.yaml100644001750001750 6714161720075 21747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L9U5implicit block key : [ implicit flow key : value, ] in.yaml100644001750001750 11514161720075 22014 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMW- [ YAML : separate ] - [ "JSON like":adjacent ] - [ {JSON: like}:adjacent ] in.yaml100644001750001750 3114161720075 22007 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SY6V&anchor - sequence entry in.json100644001750001750 10614161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F8F9{ "strip": "# text", "clip": "# text\n", "keep": "# text\n\n" } in.yaml100644001750001750 23014161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F8F9 # Strip # Comments: strip: |- # text # Clip # comments: clip: | # text # Keep # comments: keep: |+ # text # Trail # comments. in.json100644001750001750 3014161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CPZ3{ "tab": "\tstring" } in.yaml100644001750001750 2414161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CPZ3--- tab: "\tstring" in.yaml100644001750001750 21614161720075 22003 0ustar00tinatina000000000000YAML-PP-0.031/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.json100644001750001750 2314161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7FWL{ "foo": "baz" } in.yaml100644001750001750 5514161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7FWL! foo : ! baz in.json100644001750001750 13614161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9FMG{ "a": { "b": { "c": "d" }, "e": { "f": "g" } }, "h": "i" } in.yaml100644001750001750 4414161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9FMGa: b: c: d e: f: g h: i in.yaml100644001750001750 17414161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KK5Pcomplex1: ? - a complex2: ? - a : b complex3: ? - a : > b complex4: ? > a : complex5: ? - a : - b in.json100644001750001750 10414161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/735Y[ "flow in block", "Block scalar\n", { "foo": "bar" } ] in.yaml100644001750001750 11514161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/735Y- "flow in block" - > Block scalar - !!map # Block collection foo : bar in.json100644001750001750 6614161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J5UC{ "foo": "blue", "bar": "arrr", "baz": "jazz" } in.yaml100644001750001750 3614161720075 21753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J5UCfoo: blue bar: arrr baz: jazz in.json100644001750001750 11214161720075 21745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SA2[ { "single line": "value" }, { "multi line": "value" } ] in.yaml100644001750001750 7114161720075 21722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SA2--- - { "single line": value} - { "multi line": value} in.yaml100644001750001750 10114161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q4CLkey1: "quoted1" key2: "quoted2" trailing content key3: "quoted3" in.json100644001750001750 314161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q5MG{} in.yaml100644001750001750 414161720075 21731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q5MG {} in.json100644001750001750 13714161720075 22030 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7PZ[ { "Mark McGwire": 65 }, { "Sammy Sosa": 63 }, { "Ken Griffy": 58 } ] in.yaml100644001750001750 47614161720075 22027 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7PZ# The !!omap tag is one of the optional types # introduced for YAML 1.1. In 1.2, it is not # part of the standard tags and should not be # enabled by default. # Ordered maps are represented as # A sequence of mappings, with # each mapping having one key --- !!omap - Mark McGwire: 65 - Sammy Sosa: 63 - Ken Griffy: 58 in.json100644001750001750 31314161720075 22011 0ustar00tinatina000000000000YAML-PP-0.031/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 26114161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/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 15314161720075 21773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7BUB{ "hr": [ "Mark McGwire", "Sammy Sosa" ], "rbi": [ "Sammy Sosa", "Ken Griffey" ] } in.yaml100644001750001750 17714161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/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 5114161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W5VH{ "a": "scalar a", "b": "scalar a" } in.yaml100644001750001750 5314161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W5VHa: &:@*!$": scalar a b: *:@*!$": in.yaml100644001750001750 3514161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RHX7--- key: value %YAML 1.2 --- in.json100644001750001750 4014161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BU8L{ "key": { "a": "b" } } in.yaml100644001750001750 3314161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BU8Lkey: &anchor !!map a: b in.json100644001750001750 13614161720075 22003 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LP6E[ [ "a", "b", "c" ], { "a": "b", "c": "d", "e": "f" }, [] ] in.yaml100644001750001750 10614161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LP6E- [a, b , c ] - { "a" : b , c : 'd' , e : "f" } - [ ] in.yaml100644001750001750 1114161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/55WF--- "\." in.yaml100644001750001750 1414161720075 21755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TRB--- " --- " in.json100644001750001750 2414161720075 21711 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/33X3[ 1, -2, 33 ] in.yaml100644001750001750 4414161720075 21704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/33X3--- - !!int 1 - !!int -2 - !!int 33 in.yaml100644001750001750 3314161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SR86key1: &a value key2: &b *a in.json100644001750001750 5114161720075 21745 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H3Z8{ "wanted": "love ♥ and peace ☮" } in.yaml100644001750001750 4314161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H3Z8--- wanted: love ♥ and peace ☮ in.yaml100644001750001750 4014161720075 21755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CQ3W--- key: "missing closing quote in.json100644001750001750 3114161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7TMG[ "word1", "word2" ] in.yaml100644001750001750 3714161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7TMG--- [ word1 # comment , word2] in.json100644001750001750 1214161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3R3P[ "a" ] in.yaml100644001750001750 1614161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3R3P&sequence - a in.json100644001750001750 3014161720075 21672 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/36F6{ "plain": "a b\nc" } in.yaml100644001750001750 2414161720075 21666 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/36F6--- plain: a b c in.yaml100644001750001750 6014161720075 21755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N4JPmap: key1: "quoted1" key2: "bad indentation" in.json100644001750001750 5514161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3ALJ[ [ "s1_i1", "s1_i2" ], "s2" ] in.yaml100644001750001750 3114161720075 21731 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3ALJ- - s1_i1 - s1_i2 - s2 in.json100644001750001750 47314161720075 22011 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C4HZ[ { "center": { "x": 73, "y": 129 }, "radius": 7 }, { "start": { "x": 73, "y": 129 }, "finish": { "x": 89, "y": 102 } }, { "start": { "x": 73, "y": 129 }, "color": 16772795, "text": "Pretty vector drawing." } ] in.yaml100644001750001750 45214161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/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.json100644001750001750 7614161720075 21725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A6F9{ "strip": "text", "clip": "text\n", "keep": "text\n" } in.yaml100644001750001750 6014161720075 21707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A6F9strip: |- text clip: | text keep: |+ text in.json100644001750001750 4214161720075 21726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D88J{ "a": [ "b", "c" ] } in.yaml100644001750001750 1214161720075 21714 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D88Ja: [b, c] in.yaml100644001750001750 2414161720075 21723 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D49Q'a\nb': 1 'c d': 1 in.yaml100644001750001750 2314161720075 22013 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZXT5[ "key" :value ] in.json100644001750001750 3014161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93WF"trimmed\n\n\nas space" in.yaml100644001750001750 4414161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93WF--- >- trimmed as space in.json100644001750001750 3314161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZH7C{ "a": "b", "c": "d" } in.yaml100644001750001750 2014161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZH7C&a a: b c: &d d in.yaml100644001750001750 2414161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7LBH"a\nb": 1 "c d": 1 in.json100644001750001750 2314161720075 22004 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K3WX{ "foo": "bar" } in.yaml100644001750001750 3714161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K3WX--- { "foo" # comment :bar } in.json100644001750001750 7514161720075 22001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H2RW{ "foo": 1, "bar": 2, "text": "a\n \nb\n\nc\n\nd\n" } in.yaml100644001750001750 6414161720075 21770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H2RWfoo: 1 bar: 2 text: | a b c d in.json100644001750001750 26214161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/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 22414161720075 21747 0ustar00tinatina000000000000YAML-PP-0.031/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 7414161720075 21715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5T43[ { "key": "value" }, { "key": ":value" } ] in.yaml100644001750001750 4514161720075 21704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5T43- { "key":value } - { "key"::value } in.json100644001750001750 614161720075 21671 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CC74"bar" in.yaml100644001750001750 6414161720075 21706 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CC74%TAG !e! tag:example.com,2000:app/ --- !e!foo "bar" in.json100644001750001750 25614161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/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 20514161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/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 13614161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J3BT{ "quoted": "Quoted \t", "block": "void main() {\n\tprintf(\"Hello, world!\\n\");\n}\n" } in.yaml100644001750001750 14014161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J3BT# Tabs and spaces quoted: "Quoted " block: | void main() { printf("Hello, world!\n"); } in.json100644001750001750 2714161720075 21717 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4GC6"here's to \"quotes\"" in.yaml100644001750001750 2614161720075 21707 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4GC6'here''s to "quotes"' in.yaml100644001750001750 2614161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4EJS--- a: b: c: value in.json100644001750001750 6214161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z67P{ "literal": "value\n", "folded": "value\n" } in.yaml100644001750001750 5314161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z67Pliteral: |2 value folded: !foo >1 value in.json100644001750001750 2014161720075 21730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B3HG"folded text\n" in.yaml100644001750001750 2614161720075 21727 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B3HG--- > folded text in.yaml100644001750001750 4514161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X38W{ &a [a, &b b]: *b, *a : [c, *b, d]} in.yaml100644001750001750 1714161720075 21770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EW3Vk1: v1 k2: v2 in.json100644001750001750 5514161720075 21740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZ63{ "one": [ 2, 3 ], "four": 5 } in.yaml100644001750001750 2514161720075 21726 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZ63one: - 2 - 3 four: 5 in.json100644001750001750 7714161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZK9H{ "key": [ [ [ "value" ] ] ] } in.yaml100644001750001750 3214161720075 21766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZK9H{ key: [[[ value ]]] } in.json100644001750001750 3514161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK3J"line1 # no comment line3\n" in.yaml100644001750001750 3714161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK3J--- > line1 # no comment line3 in.yaml100644001750001750 2214161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JTT--- [ [ a, b, c ] in.json100644001750001750 714161720075 21701 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/27NA"text" in.yaml100644001750001750 2314161720075 21710 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/27NA%YAML 1.2 --- text in.json100644001750001750 3214161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L94M{ "a": 47, "c": "d" } in.yaml100644001750001750 4314161720075 21730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L94M? !!str a : !!int 47 ? c : !!str d in.json100644001750001750 3114161720075 21770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4JQ[ "12", 12, "12" ] in.yaml100644001750001750 6714161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4JQ# Assuming conventional resolution: - "12" - 12 - ! 12 in.json100644001750001750 3514161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/WZ62{ "foo": "", "": "bar" } in.yaml100644001750001750 4214161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/WZ62{ foo : !!str, !!str : bar, } in.json100644001750001750 5614161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CUP7{ "anchored": "value", "alias": "value" } in.yaml100644001750001750 5614161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CUP7anchored: !local &anchor value alias: *anchor in.yaml100644001750001750 5414161720075 21677 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EB22--- scalar1 # comment %YAML 1.2 --- scalar2 in.json100644001750001750 7214161720075 21772 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NP9H"folded to a space,\nto a line feed, or \t \tnon-content" in.yaml100644001750001750 7714161720075 21770 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NP9H"folded to a space, to a line feed, or \ \ non-content" in.yaml100644001750001750 3014161720075 21733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6PBE--- ? - a - b : - c - d in.json100644001750001750 4414161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SKE5{ "seq": [ "a", "b" ] } in.yaml100644001750001750 3214161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SKE5--- seq: &anchor - a - b in.yaml100644001750001750 2314161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CTN5--- [ a, b, c, , ] in.json100644001750001750 1514161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9YRD"a b c d\ne" in.yaml100644001750001750 1714161720075 21773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9YRDa b c d e in.json100644001750001750 4214161720075 21757 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4V8U"plain\\value\\with\\backslashes" in.yaml100644001750001750 4114161720075 21747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4V8U--- plain\value\with\backslashes in.json100644001750001750 014161720075 21720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/98YDin.yaml100644001750001750 2014161720075 21733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/98YD# Comment only. in.json100644001750001750 116214161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/565N{ "canonical": "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=", "generic": "R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\nOTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\n+f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\nAgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=\n", "description": "The binary value above is a tiny arrow encoded as a gif image." } in.yaml100644001750001750 117414161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/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.json100644001750001750 4014161720075 21766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NB6Z{ "key": "value with\ntabs" } in.yaml100644001750001750 3714161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NB6Zkey: value with tabs in.json100644001750001750 101314161720075 22056 0ustar00tinatina000000000000YAML-PP-0.031/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 63314161720075 22036 0ustar00tinatina000000000000YAML-PP-0.031/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 12514161720075 22036 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ZYM{ "plain": "text lines", "quoted": "text lines", "block": "text\n \tlines\n" } in.yaml100644001750001750 10614161720075 22026 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ZYMplain: text lines quoted: "text lines" block: | text lines in.json100644001750001750 3714161720075 21702 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A984{ "a": "b c", "d": "e f" } in.yaml100644001750001750 2214161720075 21665 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A984a: b c d: e f in.yaml100644001750001750 2714161720075 21742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DMG6key: ok: 1 wrong: 2 in.json100644001750001750 2314161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5MUD{ "foo": "bar" } in.yaml100644001750001750 2514161720075 21755 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5MUD--- { "foo" :bar } in.yaml100644001750001750 3714161720075 22001 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9CWYkey: - item1 - item2 invalid in.json100644001750001750 7214161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q8AD"folded to a space,\nto a line feed, or \t \tnon-content" in.yaml100644001750001750 10214161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q8AD--- "folded to a space, to a line feed, or \ \ non-content" in.json100644001750001750 11614161720075 22020 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R4YG[ "detected\n", "\n\n# detected\n", " explicit\n", "\t\ndetected\n" ] in.yaml100644001750001750 10514161720075 22007 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R4YG- | detected - > # detected - |1 explicit - > detected in.yaml100644001750001750 3614161720075 22013 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU5Zkey: "value"# invalid comment in.yaml100644001750001750 1614161720075 21701 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N782[ --- , ... ] in.json100644001750001750 614161720075 21706 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U3C3"foo" in.yaml100644001750001750 6314161720075 21722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U3C3%TAG !yaml! tag:yaml.org,2002: --- !yaml!str "foo" in.json100644001750001750 614161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2LFX"foo" in.yaml100644001750001750 11414161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2LFX%FOO bar baz # Should be ignored # with a warning. --- "foo" in.yaml100644001750001750 4214161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9KBC--- key1: value1 key2: value2 in.json100644001750001750 14514161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R52L{ "top1": [ "item1", { "key2": "value2" }, "item3" ], "top2": "value2" } in.yaml100644001750001750 7314161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R52L--- { top1: [item1, {key2: value2}, item3], top2: value2 } in.json100644001750001750 3714161720075 21756 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/V55R[ "a", "b", "a", "b" ] in.yaml100644001750001750 3014161720075 21740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/V55R- &a a - &b b - *a - *b in.json100644001750001750 7014161720075 21721 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7A3"Bare document" "%!PS-Adobe-2.0 # Not the first line\n" in.yaml100644001750001750 11214161720075 21727 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7A3Bare document ... # No document ... | %!PS-Adobe-2.0 # Not the first line in.yaml100644001750001750 1514161720075 21752 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U99R- !!str, xxx in.json100644001750001750 1214161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6XDYnull null in.yaml100644001750001750 1014161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6XDY--- --- in.json100644001750001750 12514161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W42U[ null, "block node\n", [ "one", "two" ], { "one": "two" } ] in.yaml100644001750001750 13414161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W42U- # Empty - | block node - - one # Compact - two # sequence - one: two # Compact mapping in.json100644001750001750 147314161720075 22035 0ustar00tinatina000000000000YAML-PP-0.031/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 120414161720075 22016 0ustar00tinatina000000000000YAML-PP-0.031/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 1414161720075 21753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z9M4[ "bar" ] in.yaml100644001750001750 6614161720075 21753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z9M4%TAG !e! tag:example.com,2000:app/ --- - !e!foo "bar" in.json100644001750001750 3514161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6KGN{ "a": null, "b": null } in.yaml100644001750001750 3214161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6KGN--- a: &anchor b: *anchor in.json100644001750001750 14514161720075 22005 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4CQQ{ "plain": "This unquoted scalar spans many lines.", "quoted": "So does this quoted scalar.\n" } in.yaml100644001750001750 13514161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4CQQplain: This unquoted scalar spans many lines. quoted: "So does this quoted scalar.\n" in.json100644001750001750 1214161720075 21742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FTA2[ "a" ] in.yaml100644001750001750 2214161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FTA2--- &sequence - a in.json100644001750001750 2214161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WPF" foo\nbar\nbaz " in.yaml100644001750001750 4014161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WPF--- " foo bar baz " in.json100644001750001750 5214161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AB8U[ "single multiline - sequence entry" ] in.yaml100644001750001750 4514161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AB8U- single multiline - sequence entry in.json100644001750001750 3714161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/35KP{ "a": "b" } [ "c" ] "d e" in.yaml100644001750001750 6414161720075 21730 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/35KP--- !!map ? a : b --- !!seq - !!str c --- !!str d e in.json100644001750001750 2514161720075 22017 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5NYZ{ "key": "value" } in.yaml100644001750001750 3214161720075 22006 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5NYZkey: # Comment value in.json100644001750001750 15314161720075 22002 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NAT4{ "a": " ", "b": " ", "c": " ", "d": " ", "e": "\n", "f": "\n", "g": "\n\n", "h": "\n\n" } in.yaml100644001750001750 12614161720075 21773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NAT4--- a: ' ' b: ' ' c: " " d: " " e: ' ' f: " " g: ' ' h: " " in.yaml100644001750001750 2614161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GT5M- item1 &node - item2 in.json100644001750001750 10614161720075 22042 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2XXW{ "Mark McGwire": null, "Sammy Sosa": null, "Ken Griff": null } in.yaml100644001750001750 21114161720075 22030 0ustar00tinatina000000000000YAML-PP-0.031/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.json100644001750001750 14014161720075 21742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8KB6[ { "single line": null, "a": "b" }, { "multi line": null, "a": "b" } ] in.yaml100644001750001750 6314161720075 21717 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8KB6--- - { single line, a: b} - { multi line, a: b} in.yaml100644001750001750 3414161720075 21705 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6S55key: - bar - baz invalid in.json100644001750001750 7314161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2AD[ "literal\n", " folded\n", "keep\n\n", " strip" ] in.yaml100644001750001750 21714161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2AD- | # Empty header↓ literal - >1 # Indentation indicator↓ folded - |+ # Chomping indicator↓ keep - >1- # Both indicators↓ strip in.json100644001750001750 5714161720075 21717 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7A4E" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 6214161720075 21704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7A4E" 1st non-empty 2nd non-empty 3rd non-empty " in.json100644001750001750 614161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6LVF"foo" in.yaml100644001750001750 11414161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6LVF%FOO bar baz # Should be ignored # with a warning. --- "foo" in.json100644001750001750 5414161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDM2[ { "url": "http://example.org" } ] in.yaml100644001750001750 3614161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDM2- { url: http://example.org } in.yaml100644001750001750 4214161720075 21763 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5LLUblock scalar: > invalid in.json100644001750001750 11014161720075 21746 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q88A[ [ "a", "b" ], { "a": "b" }, "a", "b", "c" ] in.yaml100644001750001750 4614161720075 21727 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q88A- [ a, b ] - { a: b } - "a" - 'b' - c in.json100644001750001750 1014161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P76L"1 - 3" in.yaml100644001750001750 11214161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P76L%TAG !! tag:example.com,2000:app/ --- !!int 1 - 3 # Interval, not integer in.json100644001750001750 11714161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F6MC{ "a": " more indented\nregular\n", "b": "\n\n more indented\nregular\n" } in.yaml100644001750001750 11014161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F6MC--- a: >2 more indented regular b: >2 more indented regular in.json100644001750001750 1414161720075 21774 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6FWR"ab\n\n \n" in.yaml100644001750001750 2414161720075 21766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6FWR--- |+ ab ... in.json100644001750001750 2514161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P94K{ "key": "value" } in.yaml100644001750001750 5414161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P94Kkey: # Comment # lines value in.yaml100644001750001750 2714161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BS4Kword1 # comment word2 in.json100644001750001750 3314161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T26H"\n\nliteral\n \n\ntext\n" in.yaml100644001750001750 5714161720075 21733 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T26H--- | literal text # Comment in.json100644001750001750 1314161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S7BG[ ":," ] in.yaml100644001750001750 1114161720075 21740 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S7BG--- - :, in.json100644001750001750 2614161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KSS4"quoted string" "foo" in.yaml100644001750001750 4214161720075 21766 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KSS4--- "quoted string" --- &node foo in.json100644001750001750 2114161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EXG3"---word1 word2" in.yaml100644001750001750 2314161720075 21747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EXG3--- ---word1 word2 in.json100644001750001750 13314161720075 21777 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CN3R[ { "a": "b" }, { "c": "d" }, { "e": "f" }, { "g": "h" } ] in.yaml100644001750001750 7114161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CN3R&flowseq [ a: b, &c c: d, { &e e: f }, &g { g: h } ] in.json100644001750001750 3314161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UT92{ "matches %": 20 } null in.yaml100644001750001750 5314161720075 21747 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UT92--- { matches % : 20 } ... --- # Empty ... in.json100644001750001750 414161720075 21675 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/52DL"a" in.yaml100644001750001750 1014161720075 21703 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/52DL--- ! a in.json100644001750001750 014161720075 21721 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QT73in.yaml100644001750001750 1614161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QT73# comment ... in.json100644001750001750 12114161720075 22024 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LQZ7{ "implicit block key": [ { "implicit flow key": "value" } ] } in.yaml100644001750001750 7314161720075 22003 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LQZ7"implicit block key" : [ "implicit flow key" : value, ] in.json100644001750001750 2214161720075 21743 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TL85" foo\nbar\nbaz " in.yaml100644001750001750 3414161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TL85" foo bar baz " in.json100644001750001750 5714161720075 21773 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PRH3" 1st non-empty\n2nd non-empty 3rd non-empty " in.yaml100644001750001750 6214161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PRH3' 1st non-empty 2nd non-empty 3rd non-empty ' in.json100644001750001750 7314161720075 21753 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BCT[ { "foo": "bar" }, [ "baz", "baz" ] ] in.yaml100644001750001750 3414161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BCT- foo: bar - - baz - baz in.json100644001750001750 2314161720075 22007 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4MUZ{ "foo": "bar" } in.yaml100644001750001750 2014161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4MUZ{"foo" : "bar"} in.json100644001750001750 6714161720075 21720 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/96L6"Mark McGwire's year was crippled by a knee injury.\n" in.yaml100644001750001750 7714161720075 21712 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/96L6--- > Mark McGwire's year was crippled by a knee injury. in.json100644001750001750 4514161720075 21775 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2SXE{ "key": "value", "foo": "key" } in.yaml100644001750001750 3514161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2SXE&a: key: &a value foo: *a: in.json100644001750001750 13514161720075 21767 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F3CP{ "a": [ "b", "c", { "d": [ "e", "f" ] } ] } in.yaml100644001750001750 4214161720075 21735 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F3CP--- { a: [b, c, { d: [e, f] } ] } in.yaml100644001750001750 7614161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S3PDplain key: in-line value : # Both empty "quoted key": - entry in.json100644001750001750 10214161720075 21764 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5KJE[ [ "one", "two" ], [ "three", "four" ] ] in.yaml100644001750001750 4014161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5KJE- [ one, two, ] - [three ,four] in.yaml100644001750001750 7314161720075 21727 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ABK{ unquoted : "separate", http://foo.com, omitted value:, } in.yaml100644001750001750 2614161720075 21736 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK4H--- [ key : value ] in.json100644001750001750 1414161720075 22012 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WLZ"bar" "bar" in.yaml100644001750001750 12614161720075 22027 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WLZ# Private --- !foo "bar" ... # Global %TAG ! tag:example.com,2000:app/ --- !foo "bar" in.json100644001750001750 6714161720075 22000 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9DXL{ "Mapping": "Document" } null { "matches %": 20 } in.yaml100644001750001750 7614161720075 21771 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9DXLMapping: Document --- # Empty ... %YAML 1.2 --- matches %: 20 in.yaml100644001750001750 2414161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9C9N--- flow: [a, b, c] in.json100644001750001750 6014161720075 21710 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K858{ "strip": "", "clip": "", "keep": "\n" } in.yaml100644001750001750 3614161720075 21704 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K858strip: >- clip: > keep: |+ in.yaml100644001750001750 2514161720075 21722 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H7J7key: &x !!map a: b in.json100644001750001750 4514161720075 21742 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LE5A[ "a", "b", "c", "c", "" ] in.yaml100644001750001750 6214161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LE5A- !!str "a" - 'b' - &anchor "c" - *anchor - !!str in.json100644001750001750 3514161720075 21776 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QF4Y[ { "foo": "bar" } ] in.yaml100644001750001750 1514161720075 21765 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QF4Y[ foo: bar ] in.json100644001750001750 23314161720075 21740 0ustar00tinatina000000000000YAML-PP-0.031/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 45514161720075 21737 0ustar00tinatina000000000000YAML-PP-0.031/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.yaml100644001750001750 2214161720075 21715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4H7K--- [ a, b, c ] ] in.yaml100644001750001750 3014161720075 21700 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T833--- { foo: 1 bar: 2 } in.yaml100644001750001750 14114161720075 22010 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q9WF{ first: Sammy, last: Sosa }: # Statistics: hr: # Home runs 65 avg: # Average 0.278 in.json100644001750001750 2414161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4Q9F"ab cd\nef\n\ngh\n" in.yaml100644001750001750 3214161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4Q9F--- > ab cd ef gh in.json100644001750001750 4414161720075 21725 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9J7A{ "foo": { "bar": "baz" } } in.yaml100644001750001750 2014161720075 21710 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9J7Afoo: bar: baz in.yaml100644001750001750 5214161720075 21760 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S98Zempty block scalar: > # comment in.json100644001750001750 5414161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KMK3{ "foo": { "bar": 1 }, "baz": 2 } in.yaml100644001750001750 2514161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KMK3foo: bar: 1 baz: 2 in.json100644001750001750 2714161720075 22016 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SSW6"here's to \"quotes\"" in.yaml100644001750001750 3214161720075 22003 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SSW6--- 'here''s to "quotes"' in.json100644001750001750 11014161720075 21750 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5WE3{ "explicit key": null, "block key\n": [ "one", "two" ] } in.yaml100644001750001750 13614161720075 21751 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5WE3? explicit key # Empty value ? | block key : - one # Explicit compact - two # block value in.json100644001750001750 3314161720075 21744 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/E76Z{ "a": "b", "b": "a" } in.yaml100644001750001750 2314161720075 21734 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/E76Z&a a: &b b *b : *a in.yaml100644001750001750 7314161720075 21762 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9HCY!foo "bar" %TAG ! tag:example.com,2000:app/ --- !foo "bar" in.json100644001750001750 16314161720075 22030 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3GZX{ "First occurrence": "Foo", "Second occurrence": "Foo", "Override anchor": "Bar", "Reuse anchor": "Bar" } in.yaml100644001750001750 15414161720075 22021 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3GZXFirst occurrence: &anchor Foo Second occurrence: *anchor Override anchor: &anchor Bar Reuse anchor: *anchor in.yaml100644001750001750 3114161720075 21732 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G9HC--- seq: &anchor - a - b in.json100644001750001750 2414161720075 21724 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M9B4"literal\n\ttext\n" in.yaml100644001750001750 2414161720075 21715 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M9B4| literal text in.yaml100644001750001750 3114161720075 21761 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CVW2--- [ a, b, c,#invalid ] in.json100644001750001750 34114161720075 21754 0ustar00tinatina000000000000YAML-PP-0.031/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 30114161720075 21741 0ustar00tinatina000000000000YAML-PP-0.031/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 2114161720075 22175 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RTP8--- Document ... out.yaml100644001750001750 10614161720075 22217 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZF4XMark McGwire: hr: 65 avg: 0.278 Sammy Sosa: hr: 63 avg: 0.288 out.yaml100644001750001750 17714161720075 22173 0ustar00tinatina000000000000YAML-PP-0.031/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 3214161720075 22164 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MJS9"foo \n\n\t bar\n\nbaz\n" out.yaml100644001750001750 6314161720075 22160 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9BXH--- - "single line": a: b - "multi line": a: b out.yaml100644001750001750 1714161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K54U--- scalar ... out.yaml100644001750001750 2514161720075 22143 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8QBEkey: - item1 - item2 out.yaml100644001750001750 3314161720075 22147 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SBG9a: - b - c ? - d - e : f out.yaml100644001750001750 3114161720075 22176 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XLQ9--- scalar %YAML 1.2 ... out.yaml100644001750001750 2014161720075 22071 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G992> folded text out.yaml100644001750001750 2014161720075 22155 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FUP4- a - - b - c out.yaml100644001750001750 13214161720075 22214 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/YD5X- - name - hr - avg - - Mark McGwire - 65 - 0.278 - - Sammy Sosa - 63 - 0.288 out.yaml100644001750001750 3114161720075 22200 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZWK4--- a: 1 b: &anchor c: 3 out.yaml100644001750001750 2214161720075 22104 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/54T7foo: you bar: far out.yaml100644001750001750 3014161720075 22157 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Y2GN--- key: &an:chor value out.yaml100644001750001750 3314161720075 22073 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K527>- trimmed as space out.yaml100644001750001750 5014161720075 22146 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8CWC--- 'key ends with two colons::': value out.yaml100644001750001750 1714161720075 22156 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EX5H'a b c d e' out.yaml100644001750001750 6114161720075 22142 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FH7J- !!str - !!null : a b: !!str - !!str : !!null out.yaml100644001750001750 13214161720075 22211 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XW4Da: "double quotes" b: plain value c: d ? - seq1 : - seq2 e: &node - x: y block: > abcde out.yaml100644001750001750 3414161720075 22137 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TE2Ablock mapping: key: value out.yaml100644001750001750 6014161720075 22153 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JWBfoo: !!seq - !!str a - !!map key: !!str value out.yaml100644001750001750 2214161720075 22127 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6H3V'foo: bar\': baz' out.yaml100644001750001750 33314161720075 22202 0ustar00tinatina000000000000YAML-PP-0.031/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 10214161720075 22132 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D83L- |- explicit indent and chomp - |- chomp and explicit indent out.yaml100644001750001750 17314161720075 22210 0ustar00tinatina000000000000YAML-PP-0.031/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 5014161720075 22122 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CFD4- - : empty key - - : another empty key out.yaml100644001750001750 10514161720075 22112 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/57H4sequence: !!seq - entry - !!seq - nested mapping: !!map foo: bar out.yaml100644001750001750 2214161720075 22110 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GH63a: 1.3 fifteen: d out.yaml100644001750001750 11314161720075 22164 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8UDB- "double quoted" - 'single quoted' - plain text - - nested - single: pair out.yaml100644001750001750 5214161720075 22113 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M5C3literal: | value folded: !foo > value out.yaml100644001750001750 5014161720075 22154 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HMQ5&a1 !!str "foo": !!str bar &a2 baz: *a1 out.yaml100644001750001750 014161720075 22152 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HWV9out.yaml100644001750001750 6514161720075 22216 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PW8X- &a - a - &a : a b: &b - &c : &a - &d : - &e : &a out.yaml100644001750001750 1714161720075 22160 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CT4Q- foo bar: baz out.yaml100644001750001750 2414161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T5N4"literal\n\ttext\n" out.yaml100644001750001750 5614161720075 22137 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BFJ--- &mapping ? &key - &item a - b - c : value out.yaml100644001750001750 11014161720075 22142 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5GBFFolding: "Empty line\nas a line feed" Chomping: | Clipped empty lines out.yaml100644001750001750 014161720075 22050 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8G76out.yaml100644001750001750 1714161720075 22177 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X8DW--- key: value out.yaml100644001750001750 7214161720075 22165 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7ZZ5--- nested sequences: - - - [] - - - {} key1: [] key2: {} out.yaml100644001750001750 5714161720075 22174 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HS5T'1st non-empty 2nd non-empty 3rd non-empty' out.yaml100644001750001750 2714161720075 22145 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TS54> ab cd ef gh out.yaml100644001750001750 13214161720075 22223 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RZP5a: "double quotes" b: plain value c: d ? - seq1 : - seq2 e: &node - x: y block: > abcde out.yaml100644001750001750 3314161720075 22211 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XYN--- - &😁 unicode anchor out.yaml100644001750001750 12614161720075 22162 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JHB9--- - Mark McGwire - Sammy Sosa - Ken Griffey --- - Chicago Cubs - St Louis Cardinals out.yaml100644001750001750 3514161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EHF6!!map k: !!seq - a - !!str b out.yaml100644001750001750 17014161720075 22215 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JR7V- a?string - another ? string - key: value? - - a?string - - another ? string - key: value? - key: value? - key?: value out.yaml100644001750001750 2514161720075 22174 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JTV5a true: null d e 42: out.yaml100644001750001750 2114161720075 22203 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PUW8--- a: b --- ... out.yaml100644001750001750 3214161720075 22161 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FP8R--- > line1 line2 line3 out.yaml100644001750001750 6114161720075 22215 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T4YY' 1st non-empty 2nd non-empty 3rd non-empty ' out.yaml100644001750001750 25414161720075 22235 0ustar00tinatina000000000000YAML-PP-0.031/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 2014161720075 22062 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/753E--- |- ab ... out.yaml100644001750001750 1414161720075 22204 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MYW6|- ab ... out.yaml100644001750001750 2114161720075 22143 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DHP8- foo - bar - 42 out.yaml100644001750001750 5514161720075 22143 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2DT"adjacent": value "readable": value "empty": out.yaml100644001750001750 7514161720075 22156 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6SLA? "foo\nbar:baz\tx \\$%^&*()x" : 23 'x\ny:z\tx $%^&*()x': 24 out.yaml100644001750001750 7614161720075 22103 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/74H7!!str a: b c: !!int 42 e: !!str f g: h !!str 23: !!bool false out.yaml100644001750001750 1514161720075 22163 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RR7Fa: 4.2 d: 23 out.yaml100644001750001750 2114161720075 22166 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LX3P? - flow : block out.yaml100644001750001750 2314161720075 22105 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A2M4a: - b - - c - d out.yaml100644001750001750 3314161720075 22176 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DWX9"\n\nliteral\n \n\ntext\n" out.yaml100644001750001750 10414161720075 22206 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J9HZ--- hr: - Mark McGwire - Sammy Sosa rbi: - Sammy Sosa - Ken Griffey out.yaml100644001750001750 4314161720075 22164 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JQ4Rblock sequence: - one - two: three out.yaml100644001750001750 5514161720075 22132 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NJ66--- - single line: value - multi line: value out.yaml100644001750001750 2114161720075 22110 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/82AN'---word1 word2' out.yaml100644001750001750 4014161720075 22170 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JQW--- | \//||\/|| // || ||__ out.yaml100644001750001750 7114161720075 22223 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9WXW!foo "bar" ... --- ! "bar" out.yaml100644001750001750 3314161720075 22112 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7Z25--- scalar1 ... key: value out.yaml100644001750001750 3114161720075 22125 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M29Ma: | ab cd ef ... out.yaml100644001750001750 5314161720075 22122 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93JH- key: value key2: value2 - key3: value3 out.yaml100644001750001750 2414161720075 22176 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RLU9foo: - 42 bar: - 44 out.yaml100644001750001750 11014161720075 22233 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XV9VFolding: "Empty line\nas a line feed" Chomping: | Clipped empty lines out.yaml100644001750001750 4314161720075 22200 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W4TN--- | %!PS-Adobe-2.0 ... --- ... out.yaml100644001750001750 25414161720075 22201 0ustar00tinatina000000000000YAML-PP-0.031/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 21014161720075 22163 0ustar00tinatina000000000000YAML-PP-0.031/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 2314161720075 22176 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3MYT--- k:#foo &a !t s out.yaml100644001750001750 14614161720075 22165 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9U5K--- - item: Super Hoop quantity: 1 - item: Basketball quantity: 4 - item: Big Shoes quantity: 1 out.yaml100644001750001750 5714161720075 22203 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9TFX" 1st non-empty\n2nd non-empty 3rd non-empty " out.yaml100644001750001750 5314161720075 22106 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F2C7- &a !!str a - !!int 2 - &c !!int 4 - &d d out.yaml100644001750001750 12414161720075 22121 0ustar00tinatina000000000000YAML-PP-0.031/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 2014161720075 22150 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7VCone: 2 three: 4 out.yaml100644001750001750 3514161720075 22165 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2AUY- !!str a - b - !!int 42 - d out.yaml100644001750001750 5714161720075 22157 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5BVJliteral: | some text folded: > some text out.yaml100644001750001750 7014161720075 22134 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S9E8sequence: - one - two mapping: sky: blue sea: green out.yaml100644001750001750 4014161720075 22172 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7NX--- a: - b - c - d: - e - f out.yaml100644001750001750 11114161720075 22131 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4FJ6--- - ? - a - - ? - - b - c : d - e : 23 out.yaml100644001750001750 6314161720075 22075 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/87E4'implicit block key': - 'implicit flow key': value out.yaml100644001750001750 4214161720075 22131 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DFF7explicit: entry implicit: entry : out.yaml100644001750001750 24714161720075 22152 0ustar00tinatina000000000000YAML-PP-0.031/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 1214161720075 22120 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BEC7--- "foo" out.yaml100644001750001750 3314161720075 22211 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SYW4hr: 65 avg: 0.278 rbi: 147 out.yaml100644001750001750 1114161720075 22136 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7W2Pa: b: c: out.yaml100644001750001750 2514161720075 22207 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3UYSescaped slash: "a/b" out.yaml100644001750001750 7014161720075 22165 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDR7sequence: - one - two mapping: sky: blue sea: green out.yaml100644001750001750 2014161720075 22111 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6M2F&a a: &b b : *a out.yaml100644001750001750 2314161720075 22147 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DC7Xa: b seq: - a c: d out.yaml100644001750001750 12014161720075 22172 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7T8X> folded line next line * bullet * list * lines last line out.yaml100644001750001750 6414161720075 22120 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5C5M- one: two three: four - five: six seven: eight out.yaml100644001750001750 714161720075 22156 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MXS3- a: b out.yaml100644001750001750 5714161720075 22147 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L9U5implicit block key: - implicit flow key: value out.yaml100644001750001750 11514161720075 22215 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMW- - YAML: separate - - "JSON like": adjacent - - ? JSON: like : adjacent out.yaml100644001750001750 7314161720075 22123 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F8F9strip: |- # text clip: | # text keep: |+ # text ... out.yaml100644001750001750 2414161720075 22162 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CPZ3--- tab: "\tstring" out.yaml100644001750001750 21014161720075 22176 0ustar00tinatina000000000000YAML-PP-0.031/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 2414161720075 22162 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7FWL!!str foo: !bar baz out.yaml100644001750001750 20014161720075 22171 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KK5Pcomplex1: ? - a : complex2: ? - a : b complex3: ? - a : > b complex4: ? > a : complex5: ? - a : - b out.yaml100644001750001750 7014161720075 22113 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/735Y- "flow in block" - > Block scalar - !!map foo: bar out.yaml100644001750001750 6114161720075 22122 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SA2--- - "single line": value - "multi line": value out.yaml100644001750001750 314161720075 22131 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q5MG{} out.yaml100644001750001750 10014161720075 22210 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7PZ--- !!omap - Mark McGwire: 65 - Sammy Sosa: 63 - Ken Griffy: 58 out.yaml100644001750001750 25414161720075 22207 0ustar00tinatina000000000000YAML-PP-0.031/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 10114161720075 22156 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7BUB--- hr: - Mark McGwire - &SS Sammy Sosa rbi: - *SS - Ken Griffey out.yaml100644001750001750 3214161720075 22154 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BU8Lkey: &anchor !!map a: b out.yaml100644001750001750 6214161720075 22153 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LP6E- - a - b - c - "a": b c: 'd' e: "f" - [] out.yaml100644001750001750 4414161720075 22105 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/33X3--- - !!int 1 - !!int -2 - !!int 33 out.yaml100644001750001750 5314161720075 22141 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H3Z8--- wanted: "love \u2665 and peace \u262E" out.yaml100644001750001750 2414161720075 22161 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7TMG--- - word1 - word2 out.yaml100644001750001750 1614161720075 22133 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3R3P&sequence - a out.yaml100644001750001750 2614161720075 22071 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/36F6--- plain: 'a b c' out.yaml100644001750001750 46314161720075 22202 0ustar00tinatina000000000000YAML-PP-0.031/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 5714161720075 22116 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A6F9strip: |- text clip: | text keep: | text out.yaml100644001750001750 1314161720075 22116 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D88Ja: - b - c out.yaml100644001750001750 3714161720075 22137 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93WF--- >- trimmed as space out.yaml100644001750001750 1714161720075 22201 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K3WX--- "foo": bar out.yaml100644001750001750 5314161720075 22167 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H2RWfoo: 1 bar: 2 text: "a\n \nb\n\nc\n\nd\n" out.yaml100644001750001750 21714161720075 22152 0ustar00tinatina000000000000YAML-PP-0.031/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 3314161720075 22102 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5T43- key: value - key: :value out.yaml100644001750001750 5214161720075 22104 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CC74--- ! "bar" out.yaml100644001750001750 17114161720075 22163 0ustar00tinatina000000000000YAML-PP-0.031/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 11714161720075 22170 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J3BTquoted: "Quoted \t" block: | void main() { printf("Hello, world!\n"); } out.yaml100644001750001750 5214161720075 22152 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z67Pliteral: | value folded: !foo > value out.yaml100644001750001750 2014161720075 22122 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B3HG> folded text out.yaml100644001750001750 4714161720075 22161 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X38W? &a - a - &b b : *b *a : - c - *b - d out.yaml100644001750001750 2114161720075 22165 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZK9Hkey: - - - value out.yaml100644001750001750 4114161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK3J--- > line1 # no comment line3 out.yaml100644001750001750 1114161720075 22106 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/27NA--- text out.yaml100644001750001750 3514161720075 22132 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L94M!!str a: !!int 47 c: !!str d out.yaml100644001750001750 2314161720075 22163 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4JQ- "12" - 12 - ! 12 out.yaml100644001750001750 2714161720075 22156 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/WZ62foo: !!str !!str : bar out.yaml100644001750001750 5614161720075 22166 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CUP7anchored: &anchor !local value alias: *anchor out.yaml100644001750001750 7214161720075 22164 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NP9H"folded to a space,\nto a line feed, or \t \tnon-content" out.yaml100644001750001750 3114161720075 22150 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SKE5--- seq: &anchor - a - b out.yaml100644001750001750 1714161720075 22174 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9YRD'a b c d e' out.yaml100644001750001750 4114161720075 22150 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4V8U--- plain\value\with\backslashes out.yaml100644001750001750 014161720075 22112 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/98YDout.yaml100644001750001750 3214161720075 22161 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NB6Zkey: 'value with tabs' out.yaml100644001750001750 60114161720075 22232 0ustar00tinatina000000000000YAML-PP-0.031/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 10114161720075 22222 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ZYMplain: text lines quoted: "text lines" block: "text\n \tlines\n" out.yaml100644001750001750 1614161720075 22071 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/A984a: b c d: e f out.yaml100644001750001750 1714161720075 22157 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5MUD--- "foo": bar out.yaml100644001750001750 7214161720075 22143 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q8AD"folded to a space,\nto a line feed, or \t \tnon-content" out.yaml100644001750001750 10714161720075 22212 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R4YG- | detected - >2 # detected - |2 explicit - "\t\ndetected\n" out.yaml100644001750001750 2014161720075 22114 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U3C3--- !!str "foo" out.yaml100644001750001750 1214161720075 22153 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2LFX--- "foo" out.yaml100644001750001750 6614161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/R52L--- top1: - item1 - key2: value2 - item3 top2: value2 out.yaml100644001750001750 1014161720075 22170 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6XDY--- --- out.yaml100644001750001750 5614161720075 22151 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W42U- - | block node - - one - two - one: two out.yaml100644001750001750 77314161720075 22211 0ustar00tinatina000000000000YAML-PP-0.031/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 5414161720075 22151 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z9M4--- - ! "bar" out.yaml100644001750001750 3214161720075 22147 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6KGN--- a: &anchor b: *anchor out.yaml100644001750001750 12614161720075 22176 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4CQQplain: This unquoted scalar spans many lines. quoted: "So does this quoted scalar.\n" out.yaml100644001750001750 2214161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FTA2--- &sequence - a out.yaml100644001750001750 2214161720075 22163 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WPF" foo\nbar\nbaz " out.yaml100644001750001750 4414161720075 22144 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AB8U- single multiline - sequence entry out.yaml100644001750001750 6114161720075 22126 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/35KP--- !!map a: b --- !!seq - !!str c --- !!str d e out.yaml100644001750001750 1314161720075 22206 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5NYZkey: value out.yaml100644001750001750 5714161720075 22221 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2XXW--- !!set Mark McGwire: Sammy Sosa: Ken Griff: out.yaml100644001750001750 5714161720075 22123 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8KB6--- - single line: a: b - multi line: a: b out.yaml100644001750001750 7114161720075 22133 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2AD- | literal - >2 folded - |+ keep - >2- strip out.yaml100644001750001750 5714161720075 22111 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7A4E" 1st non-empty\n2nd non-empty 3rd non-empty " out.yaml100644001750001750 1214161720075 22155 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6LVF--- "foo" out.yaml100644001750001750 3214161720075 22151 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDM2- url: http://example.org out.yaml100644001750001750 4314161720075 22125 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q88A- - a - b - a: b - "a" - 'b' - c out.yaml100644001750001750 5214161720075 22134 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P76L--- ! 1 - 3 out.yaml100644001750001750 2014161720075 22163 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6FWR"ab\n\n \n" ... out.yaml100644001750001750 1314161720075 22130 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P94Kkey: value out.yaml100644001750001750 3314161720075 22126 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T26H"\n\nliteral\n \n\ntext\n" out.yaml100644001750001750 1114161720075 22141 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S7BG--- - :, out.yaml100644001750001750 4614161720075 22173 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KSS4--- "quoted string" --- &node foo ... out.yaml100644001750001750 2114161720075 22146 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EXG3'---word1 word2' out.yaml100644001750001750 6014161720075 22150 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CN3R&flowseq - a: b - &c c: d - &e e: f - &g g: h out.yaml100644001750001750 3614161720075 22151 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UT92--- matches %: 20 ... --- ... out.yaml100644001750001750 1014161720075 22104 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/52DL--- ! a out.yaml100644001750001750 014161720075 22113 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QT73out.yaml100644001750001750 6314161720075 22203 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LQZ7"implicit block key": - "implicit flow key": value out.yaml100644001750001750 2214161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TL85" foo\nbar\nbaz " out.yaml100644001750001750 6114161720075 22160 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PRH3' 1st non-empty 2nd non-empty 3rd non-empty ' out.yaml100644001750001750 3314161720075 22141 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6BCT- foo: bar - - baz - baz out.yaml100644001750001750 7314161720075 22107 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/96L6--- > Mark McGwire's year was crippled by a knee injury. out.yaml100644001750001750 3314161720075 22164 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2SXE&a: key: &a value foo: *a: out.yaml100644001750001750 4014161720075 22134 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F3CP--- a: - b - c - d: - e - f out.yaml100644001750001750 4314161720075 22142 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5KJE- - one - two - - three - four out.yaml100644001750001750 7614161720075 22133 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ABKunquoted: "separate" http://foo.com: null omitted value: null out.yaml100644001750001750 7514161720075 22213 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WLZ--- !foo "bar" ... --- ! "bar" out.yaml100644001750001750 4214161720075 22102 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K858strip: "" clip: "" keep: |2+ ... out.yaml100644001750001750 1314161720075 22164 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QF4Y- foo: bar out.yaml100644001750001750 16314161720075 22134 0ustar00tinatina000000000000YAML-PP-0.031/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 6214161720075 22173 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q9WF? first: Sammy last: Sosa : hr: 65 avg: 0.278 out.yaml100644001750001750 3314161720075 22126 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4Q9F--- > ab cd ef gh out.yaml100644001750001750 3214161720075 22204 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SSW6--- 'here''s to "quotes"' out.yaml100644001750001750 5614161720075 22133 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5WE3explicit key: ? | block key : - one - two out.yaml100644001750001750 2314161720075 22135 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/E76Z&a a: &b b *b : *a out.yaml100644001750001750 2414161720075 22116 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M9B4| literal text out.yaml100644001750001750 25614161720075 22153 0ustar00tinatina000000000000YAML-PP-0.031/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 emit.yaml100644001750001750 5514161720075 22312 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6ZKBDocument --- ... %YAML 1.2 --- matches %: 20 emit.yaml100644001750001750 1714161720075 22305 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EX5H--- a b c d e emit.yaml100644001750001750 10314161720075 22323 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4QFQ- | detected - >2 # detected - |2 explicit - > detected lex.token100644001750001750 25114161720075 22327 0ustar00tinatina000000000000YAML-PP-0.031/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 3014161720075 22261 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T5N4--- | literal text emit.yaml100644001750001750 6514161720075 22350 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T4YY--- ' 1st non-empty 2nd non-empty 3rd non-empty ' emit.yaml100644001750001750 3214161720075 22324 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DWX9| literal text emit.yaml100644001750001750 214161720075 22273 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NHX8: emit.yaml100644001750001750 6314161720075 22327 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9TFX--- " 1st non-empty\n2nd non-empty 3rd non-empty " emit.yaml100644001750001750 10214161720075 22316 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NKF9--- key: value : empty key --- key: value : empty key --- : --- : emit.yaml100644001750001750 5514161720075 22320 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H2RWfoo: 1 bar: 2 text: | a b c d emit.yaml100644001750001750 3714161720075 22235 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5T43- "key": value - "key": :value emit.yaml100644001750001750 2414161720075 22255 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B3HG--- > folded text emit.yaml100644001750001750 3414161720075 22267 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6PBE--- ? - a - b : - c - d emit.yaml100644001750001750 10114161720075 22351 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ZYMplain: text lines quoted: "text lines" block: | text lines emit.yaml100644001750001750 7614161720075 22276 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q8AD--- "folded to a space,\nto a line feed, or \t \tnon-content" emit.yaml100644001750001750 1214161720075 22302 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2LFX--- "foo" emit.yaml100644001750001750 7214161720075 22244 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M7A3Bare document ... | %!PS-Adobe-2.0 # Not the first line emit.yaml100644001750001750 2614161720075 22316 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WPF--- " foo\nbar\nbaz " emit.yaml100644001750001750 10714161720075 22322 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NAT4--- a: ' ' b: ' ' c: " " d: " " e: ' ' f: "\n" g: ' ' h: "\n\n" emit.yaml100644001750001750 11014161720075 22301 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/F6MC--- a: >2 more indented regular b: >2 more indented regular emit.yaml100644001750001750 2414161720075 22316 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6FWR--- | ab ... emit.yaml100644001750001750 3614161720075 22260 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T26H--- | literal text emit.yaml100644001750001750 4214161720075 22316 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KSS4--- "quoted string" --- &node foo emit.yaml100644001750001750 2514161720075 22301 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EXG3--- '---word1 word2' emit.yaml100644001750001750 6114161720075 22307 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PRH3' 1st non-empty 2nd non-empty 3rd non-empty ' emit.yaml100644001750001750 1514161720075 22331 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4MUZ"foo": "bar" emit.yaml100644001750001750 6114161720075 22304 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S3PDplain key: in-line value : "quoted key": - entry emit.yaml100644001750001750 7514161720075 22342 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WLZ--- !foo "bar" ... --- ! "bar" emit.yaml100644001750001750 6614161720075 22320 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9DXLMapping: Document --- ... %YAML 1.2 --- matches %: 20 test.event100644001750001750 5314161720075 22531 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RTP8+STR +DOC --- =VAL :Document -DOC ... -STR test.event100644001750001750 25414161720075 22552 0ustar00tinatina000000000000YAML-PP-0.031/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 32514161720075 22515 0ustar00tinatina000000000000YAML-PP-0.031/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 20114161720075 22455 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6CK3+STR +DOC --- +SEQ =VAL :foo =VAL :bar =VAL :baz -SEQ -DOC -STR test.event100644001750001750 6214161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MJS9+STR +DOC =VAL >foo \n\n\t bar\n\nbaz\n -DOC -STR test.event100644001750001750 6314161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9JBA+STR +DOC --- +SEQ [] =VAL :a =VAL :b =VAL :c -SEQ test.event100644001750001750 21514161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/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 4514161720075 22465 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K54U+STR +DOC --- =VAL :scalar -DOC -STR test.event100644001750001750 11214161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8QBE+STR +DOC +MAP =VAL :key +SEQ =VAL :item1 =VAL :item2 -SEQ -MAP -DOC -STR test.event100644001750001750 15314161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/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 5714161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/XLQ9+STR +DOC --- =VAL :scalar %YAML 1.2 -DOC -STR test.event100644001750001750 5014161720075 22423 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G992+STR +DOC =VAL >folded text\n -DOC -STR test.event100644001750001750 10614161720075 22531 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FUP4+STR +DOC +SEQ [] =VAL :a +SEQ [] =VAL :b =VAL :c -SEQ -SEQ -DOC -STR test.event100644001750001750 26114161720075 22546 0ustar00tinatina000000000000YAML-PP-0.031/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 13114161720075 22550 0ustar00tinatina000000000000YAML-PP-0.031/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 15514161720075 22533 0ustar00tinatina000000000000YAML-PP-0.031/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 11114161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/54T7+STR +DOC +MAP {} =VAL :foo =VAL :you =VAL :bar =VAL :far -MAP -DOC -STR test.event100644001750001750 11614161720075 22527 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9SHH+STR +DOC +MAP =VAL :single =VAL 'text =VAL :double =VAL "text -MAP -DOC -STR test.event100644001750001750 10114161720075 22525 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Y2GN+STR +DOC --- +MAP =VAL :key =VAL &an:chor :value -MAP -DOC -STR test.event100644001750001750 5714161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KS4U+STR +DOC --- +SEQ [] =VAL :sequence item -SEQ test.event100644001750001750 6014161720075 22422 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K527+STR +DOC =VAL >trimmed\n\n\nas space -DOC -STR test.event100644001750001750 7214161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4HVU+STR +DOC +MAP =VAL :key +SEQ =VAL :ok =VAL :also ok -SEQ test.event100644001750001750 11714161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8CWC+STR +DOC --- +MAP =VAL :key ends with two colons:: =VAL :value -MAP -DOC -STR test.event100644001750001750 5114161720075 22503 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EX5H+STR +DOC --- =VAL :a b c d\ne -DOC -STR test.event100644001750001750 4514161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GDY7+STR +DOC +MAP =VAL :key =VAL :value test.event100644001750001750 4514161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XDJ+STR +DOC +MAP =VAL :key =VAL :word1 test.event100644001750001750 33714161720075 22517 0ustar00tinatina000000000000YAML-PP-0.031/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 2714161720075 22531 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZCZ6+STR +DOC +MAP =VAL :a test.event100644001750001750 33214161720075 22542 0ustar00tinatina000000000000YAML-PP-0.031/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 4014161720075 22473 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HRE5+STR +DOC --- +MAP =VAL :double test.event100644001750001750 4014161720075 22451 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8MK2+STR +DOC =VAL :a -DOC -STR test.event100644001750001750 5014161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/65WH+STR +DOC +SEQ =VAL :foo -SEQ -DOC -STR test.event100644001750001750 15614161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/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 6714161720075 22513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3HFZ+STR +DOC --- +MAP =VAL :key =VAL :value -MAP -DOC ... test.event100644001750001750 5114161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BF9H+STR +DOC --- +MAP =VAL :plain =VAL :a b test.event100644001750001750 10114161720075 22551 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JY7Z+STR +DOC +MAP =VAL :key1 =VAL "quoted1 =VAL :key2 =VAL "quoted2 test.event100644001750001750 12214161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TE2A+STR +DOC +MAP =VAL :block mapping +MAP =VAL :key =VAL :value -MAP -MAP -DOC -STR test.event100644001750001750 1614161720075 22540 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RXY3+STR +DOC --- test.event100644001750001750 3114161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HU3P+STR +DOC +MAP =VAL :key test.event100644001750001750 15114161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/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 27214161720075 22527 0ustar00tinatina000000000000YAML-PP-0.031/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 7214161720075 22463 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6H3V+STR +DOC +MAP =VAL 'foo: bar\\ =VAL :baz' -MAP -DOC -STR test.event100644001750001750 114014161720075 22546 0ustar00tinatina000000000000YAML-PP-0.031/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 13614161720075 22470 0ustar00tinatina000000000000YAML-PP-0.031/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 7414161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2JQS+STR +DOC +MAP =VAL : =VAL :a =VAL : =VAL :b -MAP -DOC -STR test.event100644001750001750 22214161720075 22532 0ustar00tinatina000000000000YAML-PP-0.031/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 21014161720075 22467 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CFD4+STR +DOC +SEQ +SEQ [] +MAP {} =VAL : =VAL :empty key -MAP -SEQ +SEQ [] +MAP {} =VAL : =VAL :another empty key -MAP -SEQ -SEQ -DOC -STR test.event100644001750001750 3114161720075 22445 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5U3A+STR +DOC +MAP =VAL :key test.event100644001750001750 4714161720075 22467 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BD7L+STR +DOC +SEQ =VAL :item1 =VAL :item2 test.event100644001750001750 31614161720075 22445 0ustar00tinatina000000000000YAML-PP-0.031/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 10614161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GH63+STR +DOC +MAP =VAL :a =VAL :1.3 =VAL :fifteen =VAL :d -MAP -DOC -STR test.event100644001750001750 514161720075 22423 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B63P+STR test.event100644001750001750 23114161720075 22514 0ustar00tinatina000000000000YAML-PP-0.031/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 12014161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4JVG+STR +DOC +MAP =VAL :top1 +MAP &node1 =VAL &k1 :key1 =VAL :val1 -MAP =VAL :top2 test.event100644001750001750 13414161720075 22463 0ustar00tinatina000000000000YAML-PP-0.031/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 17514161720075 22533 0ustar00tinatina000000000000YAML-PP-0.031/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 1214161720075 22524 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HWV9+STR -STR test.event100644001750001750 12414161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FQ7F+STR +DOC +SEQ =VAL :Mark McGwire =VAL :Sammy Sosa =VAL :Ken Griffey -SEQ -DOC -STR test.event100644001750001750 26514161720075 22567 0ustar00tinatina000000000000YAML-PP-0.031/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 10614161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CT4Q+STR +DOC +SEQ [] +MAP {} =VAL :foo bar =VAL :baz -MAP -SEQ -DOC -STR test.event100644001750001750 3314161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X4QW+STR +DOC +MAP =VAL :block test.event100644001750001750 36114161720075 22554 0ustar00tinatina000000000000YAML-PP-0.031/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 3314161720075 22501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/C2SP+STR +DOC +SEQ [] =VAL :23 test.event100644001750001750 6014161720075 22464 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T5N4+STR +DOC --- =VAL |literal\n\ttext\n -DOC -STR test.event100644001750001750 1614161720075 22476 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LHL4+STR +DOC --- test.event100644001750001750 14714161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/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 17014161720075 22477 0ustar00tinatina000000000000YAML-PP-0.031/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 1214161720075 22422 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8G76+STR -STR test.event100644001750001750 4014161720075 22465 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QB6E+STR +DOC --- +MAP =VAL :quoted test.event100644001750001750 7014161720075 22525 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/X8DW+STR +DOC --- +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 26514161720075 22540 0ustar00tinatina000000000000YAML-PP-0.031/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 10514161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/HS5T+STR +DOC =VAL :1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 5414161720075 22474 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TS54+STR +DOC =VAL >ab cd\nef\n\ngh\n -DOC -STR test.event100644001750001750 21314161720075 22501 0ustar00tinatina000000000000YAML-PP-0.031/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 5114161720075 22540 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4UYU+STR +DOC =VAL "foo: bar": baz -DOC -STR test.event100644001750001750 33214161720075 22554 0ustar00tinatina000000000000YAML-PP-0.031/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 14414161720075 22541 0ustar00tinatina000000000000YAML-PP-0.031/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 7514161720075 22546 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/8XYN+STR +DOC --- +SEQ =VAL &😁 :unicode anchor -SEQ -DOC -STR test.event100644001750001750 23414161720075 22511 0ustar00tinatina000000000000YAML-PP-0.031/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 21614161720075 22505 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EHF6+STR +DOC +MAP {} =VAL :k +SEQ [] =VAL :a =VAL :b -SEQ -MAP -DOC -STR test.event100644001750001750 42114161720075 22543 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/JR7V+STR +DOC +SEQ =VAL :a?string =VAL :another ? string +MAP =VAL :key =VAL :value? -MAP +SEQ [] =VAL :a?string -SEQ +SEQ [] =VAL :another ? string -SEQ +MAP {} =VAL :key =VAL :value? -MAP +MAP {} =VAL :key =VAL :value? -MAP +MAP {} =VAL :key? =VAL :value -MAP -SEQ -DOC -STR test.event100644001750001750 4314161720075 22467 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G7JE+STR +DOC +MAP =VAL :a\\nb =VAL :1 test.event100644001750001750 10314161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FRK4+STR +DOC +MAP {} =VAL :foo =VAL : =VAL : =VAL :bar -MAP -DOC -STR test.event100644001750001750 4614161720075 22475 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W9L4+STR +DOC --- +MAP =VAL :block scalar test.event100644001750001750 11214161720075 22540 0ustar00tinatina000000000000YAML-PP-0.031/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 6014161720075 22501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P2EQ+STR +DOC --- +SEQ +MAP {} =VAL :y =VAL :z -MAP test.event100644001750001750 7314161720075 22524 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K4SU+STR +DOC +SEQ =VAL :foo =VAL :bar =VAL :42 -SEQ -DOC -STR test.event100644001750001750 10714161720075 22557 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PUW8+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- =VAL : -DOC -STR test.event100644001750001750 6214161720075 22513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FP8R+STR +DOC --- =VAL >line1 line2 line3\n -DOC -STR test.event100644001750001750 5614161720075 22501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU74+STR +DOC +MAP =VAL :key1 =VAL &alias :value1 test.event100644001750001750 11314161720075 22562 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T4YY+STR +DOC --- =VAL ' 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 53014161720075 22561 0ustar00tinatina000000000000YAML-PP-0.031/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 4514161720075 22420 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/753E+STR +DOC --- =VAL |ab -DOC ... -STR test.event100644001750001750 4114161720075 22533 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MYW6+STR +DOC =VAL |ab -DOC ... -STR test.event100644001750001750 7614161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DHP8+STR +DOC +SEQ [] =VAL :foo =VAL :bar =VAL :42 -SEQ -DOC -STR test.event100644001750001750 15214161720075 22510 0ustar00tinatina000000000000YAML-PP-0.031/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 15414161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/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 1214161720075 22473 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2CMS+STR +DOC test.event100644001750001750 35514161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/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 10114161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RR7F+STR +DOC +MAP =VAL :a =VAL :4.2 =VAL :d =VAL :23 -MAP -DOC -STR test.event100644001750001750 4014161720075 22477 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4GJ+STR +DOC --- +MAP =VAL :folded test.event100644001750001750 10214161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/LX3P+STR +DOC +MAP +SEQ [] =VAL :flow -SEQ =VAL :block -MAP -DOC -STR test.event100644001750001750 12214161720075 22454 0ustar00tinatina000000000000YAML-PP-0.031/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 6614161720075 22501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4T7+STR +DOC +MAP =VAL :aaa =VAL :bbb -MAP -DOC ... -STR test.event100644001750001750 6314161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DWX9+STR +DOC =VAL |\n\nliteral\n \n\ntext\n -DOC -STR test.event100644001750001750 22014161720075 22534 0ustar00tinatina000000000000YAML-PP-0.031/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 14714161720075 22540 0ustar00tinatina000000000000YAML-PP-0.031/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 16714161720075 22505 0ustar00tinatina000000000000YAML-PP-0.031/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 1614161720075 22517 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CXX2+STR +DOC --- test.event100644001750001750 2614161720075 22471 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MAG+STR +DOC --- +SEQ [] test.event100644001750001750 5114161720075 22442 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/82AN+STR +DOC =VAL :---word1 word2 -DOC -STR test.event100644001750001750 4314161720075 22407 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/236B+STR +DOC +MAP =VAL :foo =VAL :bar test.event100644001750001750 7114161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JQW+STR +DOC --- =VAL |\\//||\\/||\n// || ||__\n -DOC -STR test.event100644001750001750 14014161720075 22567 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9WXW+STR +DOC =VAL "bar -DOC ... +DOC --- =VAL "bar -DOC -STR test.event100644001750001750 5514161720075 22502 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CML9+STR +DOC +MAP =VAL :key +SEQ [] =VAL :word1 test.event100644001750001750 12414161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7Z25+STR +DOC --- =VAL :scalar1 -DOC ... +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 5414161720075 22522 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NHX8+STR +DOC +MAP =VAL : =VAL : -MAP -DOC -STR test.event100644001750001750 7714161720075 22466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M29M+STR +DOC +MAP =VAL :a =VAL |ab\n\ncd\nef\n -MAP -DOC ... -STR test.event100644001750001750 17014161720075 22471 0ustar00tinatina000000000000YAML-PP-0.031/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 13014161720075 22543 0ustar00tinatina000000000000YAML-PP-0.031/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 17014161720075 22570 0ustar00tinatina000000000000YAML-PP-0.031/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 6714161720075 22477 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U44R+STR +DOC +MAP =VAL :map +MAP =VAL :key1 =VAL "quoted1 test.event100644001750001750 11414161720075 22546 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W4TN+STR +DOC --- =VAL |%!PS-Adobe-2.0\n -DOC ... +DOC --- =VAL : -DOC ... -STR test.event100644001750001750 53014161720075 22525 0ustar00tinatina000000000000YAML-PP-0.031/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 7014161720075 22461 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/62EZ+STR +DOC --- +MAP =VAL :x +MAP {} =VAL :y =VAL :z -MAP test.event100644001750001750 30214161720075 22514 0ustar00tinatina000000000000YAML-PP-0.031/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 4314161720075 22536 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZL4Z+STR +DOC --- +MAP =VAL :a =VAL 'b test.event100644001750001750 6214161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D9TU+STR +DOC +MAP =VAL :foo =VAL :bar -MAP -DOC -STR test.event100644001750001750 5514161720075 22532 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3MYT+STR +DOC --- =VAL :k:#foo &a !t s -DOC -STR test.event100644001750001750 514161720075 22474 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SF5V+STR test.event100644001750001750 33014161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/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 11314161720075 22543 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9TFX+STR +DOC --- =VAL " 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 11714161720075 22532 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QLJ7+STR +DOC --- +MAP =VAL :a =VAL :b -MAP -DOC +DOC --- test.event100644001750001750 21714161720075 22457 0ustar00tinatina000000000000YAML-PP-0.031/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 1214161720075 22501 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AVM7+STR -STR test.event100644001750001750 7214161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7MNF+STR +DOC +MAP =VAL :top1 +MAP =VAL :key1 =VAL :val1 -MAP test.event100644001750001750 34614161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NKF9+STR +DOC --- +MAP =VAL :key =VAL :value =VAL : =VAL :empty key -MAP -DOC +DOC --- +MAP {} =VAL :key =VAL :value =VAL : =VAL :empty key -MAP -DOC +DOC --- +MAP =VAL : =VAL : -MAP -DOC +DOC --- +MAP {} =VAL : =VAL : -MAP -DOC -STR test.event100644001750001750 27414161720075 22456 0ustar00tinatina000000000000YAML-PP-0.031/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 10414161720075 22522 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/J7VC+STR +DOC +MAP =VAL :one =VAL :2 =VAL :three =VAL :4 -MAP -DOC -STR test.event100644001750001750 15714161720075 22541 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2AUY+STR +DOC +SEQ =VAL :a =VAL :b =VAL :42 =VAL :d -SEQ -DOC -STR test.event100644001750001750 13614161720075 22524 0ustar00tinatina000000000000YAML-PP-0.031/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 21614161720075 22505 0ustar00tinatina000000000000YAML-PP-0.031/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 17414161720075 22551 0ustar00tinatina000000000000YAML-PP-0.031/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 5714161720075 22532 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZVH3+STR +DOC +SEQ +MAP =VAL :key =VAL :value -MAP test.event100644001750001750 24414161720075 22467 0ustar00tinatina000000000000YAML-PP-0.031/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 16514161720075 22447 0ustar00tinatina000000000000YAML-PP-0.031/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 14514161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/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 16214161720075 22556 0ustar00tinatina000000000000YAML-PP-0.031/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 4714161720075 22511 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TD5N+STR +DOC +SEQ =VAL :item1 =VAL :item2 test.event100644001750001750 514161720075 22454 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMA+STR test.event100644001750001750 14014161720075 22547 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TYM+STR +DOC --- =VAL :fluorescent -DOC ... +DOC --- =VAL :green -DOC -STR test.event100644001750001750 35214161720075 22476 0ustar00tinatina000000000000YAML-PP-0.031/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 4214161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BEC7+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 13214161720075 22560 0ustar00tinatina000000000000YAML-PP-0.031/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 11314161720075 22510 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7W2P+STR +DOC +MAP =VAL :a =VAL : =VAL :b =VAL : =VAL :c =VAL : -MAP -DOC -STR test.event100644001750001750 7414161720075 22542 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3UYS+STR +DOC +MAP =VAL :escaped slash =VAL "a/b -MAP -DOC -STR test.event100644001750001750 22414161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/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 10314161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6M2F+STR +DOC +MAP =VAL &a :a =VAL &b :b =VAL : =ALI *a -MAP -DOC -STR test.event100644001750001750 13214161720075 22517 0ustar00tinatina000000000000YAML-PP-0.031/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 14514161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/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 22014161720075 22461 0ustar00tinatina000000000000YAML-PP-0.031/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 7314161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/MXS3+STR +DOC +SEQ +MAP {} =VAL :a =VAL :b -MAP -SEQ -DOC -STR test.event100644001750001750 16514161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/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 32714161720075 22551 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9MMW+STR +DOC +SEQ +SEQ [] +MAP {} =VAL :YAML =VAL :separate -MAP -SEQ +SEQ [] +MAP {} =VAL "JSON like =VAL :adjacent -MAP -SEQ +SEQ [] +MAP {} +MAP {} =VAL :JSON =VAL :like -MAP =VAL :adjacent -MAP -SEQ -SEQ -DOC -STR test.event100644001750001750 514161720075 22520 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SY6V+STR test.event100644001750001750 15514161720075 22473 0ustar00tinatina000000000000YAML-PP-0.031/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 7314161720075 22515 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CPZ3+STR +DOC --- +MAP =VAL :tab =VAL "\tstring -MAP -DOC -STR test.event100644001750001750 34414161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/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 12114161720075 22527 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7FWL+STR +DOC +MAP =VAL :foo =VAL :baz -MAP -DOC -STR test.event100644001750001750 20414161720075 22514 0ustar00tinatina000000000000YAML-PP-0.031/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 43714161720075 22534 0ustar00tinatina000000000000YAML-PP-0.031/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 17514161720075 22470 0ustar00tinatina000000000000YAML-PP-0.031/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 13514161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/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 16714161720075 22500 0ustar00tinatina000000000000YAML-PP-0.031/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 10114161720075 22511 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q4CL+STR +DOC +MAP =VAL :key1 =VAL "quoted1 =VAL :key2 =VAL "quoted2 test.event100644001750001750 4114161720075 22502 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Q5MG+STR +DOC +MAP {} -MAP -DOC -STR test.event100644001750001750 25114161720075 22546 0ustar00tinatina000000000000YAML-PP-0.031/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 37414161720075 22541 0ustar00tinatina000000000000YAML-PP-0.031/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 21414161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/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 13614161720075 22547 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/W5VH+STR +DOC +MAP =VAL :a =VAL &:@*!$": :scalar a =VAL :b =ALI *:@*!$": -MAP -DOC -STR test.event100644001750001750 5114161720075 22522 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/RHX7+STR +DOC --- +MAP =VAL :key =VAL :value test.event100644001750001750 14214161720075 22525 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BU8L+STR +DOC +MAP =VAL :key +MAP &anchor =VAL :a =VAL :b -MAP -MAP -DOC -STR test.event100644001750001750 21514161720075 22522 0ustar00tinatina000000000000YAML-PP-0.031/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 1614161720075 22461 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/55WF+STR +DOC --- test.event100644001750001750 1614161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5TRB+STR +DOC --- test.event100644001750001750 20414161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/33X3+STR +DOC --- +SEQ =VAL :1 =VAL :-2 =VAL :33 -SEQ -DOC -STR test.event100644001750001750 6414161720075 22500 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SR86+STR +DOC +MAP =VAL :key1 =VAL &a :value =VAL :key2 test.event100644001750001750 11414161720075 22506 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H3Z8+STR +DOC --- +MAP =VAL :wanted =VAL :love ♥ and peace ☮ -MAP -DOC -STR test.event100644001750001750 3514161720075 22511 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CQ3W+STR +DOC --- +MAP =VAL :key test.event100644001750001750 7514161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7TMG+STR +DOC --- +SEQ [] =VAL :word1 =VAL :word2 -SEQ -DOC -STR test.event100644001750001750 6014161720075 22461 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/3R3P+STR +DOC +SEQ &sequence =VAL :a -SEQ -DOC -STR test.event100644001750001750 7314161720075 22422 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/36F6+STR +DOC --- +MAP =VAL :plain =VAL :a b\nc -MAP -DOC -STR test.event100644001750001750 7414161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N4JP+STR +DOC +MAP =VAL :map +MAP =VAL :key1 =VAL "quoted1 -MAP test.event100644001750001750 11114161720075 22500 0ustar00tinatina000000000000YAML-PP-0.031/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 71414161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/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 14514161720075 22463 0ustar00tinatina000000000000YAML-PP-0.031/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 10314161720075 22465 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D88J+STR +DOC +MAP =VAL :a +SEQ [] =VAL :b =VAL :c -SEQ -MAP -DOC -STR test.event100644001750001750 4314161720075 22454 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/D49Q+STR +DOC +MAP =VAL 'a\\nb =VAL :1 test.event100644001750001750 3414161720075 22545 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/ZXT5+STR +DOC +SEQ [] =VAL "key test.event100644001750001750 6414161720075 22466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/93WF+STR +DOC --- =VAL >trimmed\n\n\nas space -DOC -STR test.event100644001750001750 10414161720075 22524 0ustar00tinatina000000000000YAML-PP-0.031/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 4214161720075 22466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7LBH+STR +DOC +MAP =VAL "a\nb =VAL :1 test.event100644001750001750 7114161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/K3WX+STR +DOC --- +MAP {} =VAL "foo =VAL :bar -MAP -DOC -STR test.event100644001750001750 15014161720075 22534 0ustar00tinatina000000000000YAML-PP-0.031/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 33314161720075 22500 0ustar00tinatina000000000000YAML-PP-0.031/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 14514161720075 22455 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5T43+STR +DOC +SEQ +MAP {} =VAL "key =VAL :value -MAP +MAP {} =VAL "key =VAL ::value -MAP -SEQ -DOC -STR test.event100644001750001750 10114161720075 22446 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CC74+STR +DOC --- =VAL "bar -DOC -STR test.event100644001750001750 31514161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/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 17714161720075 22525 0ustar00tinatina000000000000YAML-PP-0.031/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 5514161720075 22441 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4GC6+STR +DOC =VAL 'here's to "quotes" -DOC -STR test.event100644001750001750 3314161720075 22477 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4EJS+STR +DOC --- +MAP =VAL :a test.event100644001750001750 13414161720075 22522 0ustar00tinatina000000000000YAML-PP-0.031/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 5414161720075 22460 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/B3HG+STR +DOC --- =VAL >folded text\n -DOC -STR test.event100644001750001750 17114161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/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 3014161720075 22513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EW3V+STR +DOC +MAP =VAL :k1 test.event100644001750001750 12514161720075 22477 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AZ63+STR +DOC +MAP =VAL :one +SEQ =VAL :2 =VAL :3 -SEQ =VAL :four =VAL :5 -MAP -DOC -STR test.event100644001750001750 13614161720075 22543 0ustar00tinatina000000000000YAML-PP-0.031/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 7114161720075 22467 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK3J+STR +DOC --- =VAL >line1 # no comment line3\n -DOC -STR test.event100644001750001750 7314161720075 22525 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6JTT+STR +DOC --- +SEQ [] +SEQ [] =VAL :a =VAL :b =VAL :c -SEQ test.event100644001750001750 4314161720075 22442 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/27NA+STR +DOC --- =VAL :text -DOC -STR test.event100644001750001750 20714161720075 22502 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/L94M+STR +DOC +MAP =VAL :a =VAL :47 =VAL :c =VAL :d -MAP -DOC -STR test.event100644001750001750 7514161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S4JQ+STR +DOC +SEQ =VAL "12 =VAL :12 =VAL :12 -SEQ -DOC -STR test.event100644001750001750 16314161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/WZ62+STR +DOC +MAP {} =VAL :foo =VAL : =VAL : =VAL :bar -MAP -DOC -STR test.event100644001750001750 14314161720075 22532 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CUP7+STR +DOC +MAP =VAL :anchored =VAL &anchor :value =VAL :alias =ALI *anchor -MAP -DOC -STR test.event100644001750001750 4114161720075 22423 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EB22+STR +DOC --- =VAL :scalar1 -DOC test.event100644001750001750 12214161720075 22527 0ustar00tinatina000000000000YAML-PP-0.031/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 12614161720075 22511 0ustar00tinatina000000000000YAML-PP-0.031/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 11614161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SKE5+STR +DOC --- +MAP =VAL :seq +SEQ &anchor =VAL :a =VAL :b -SEQ -MAP -DOC -STR test.event100644001750001750 5614161720075 22510 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CTN5+STR +DOC --- +SEQ [] =VAL :a =VAL :b =VAL :c test.event100644001750001750 4514161720075 22524 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9YRD+STR +DOC =VAL :a b c d\ne -DOC -STR test.event100644001750001750 7614161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4V8U+STR +DOC --- =VAL :plain\\value\\with\\backslashes -DOC -STR test.event100644001750001750 1214161720075 22464 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/98YD+STR -STR test.event100644001750001750 131714161720075 22475 0ustar00tinatina000000000000YAML-PP-0.031/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 7714161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/NB6Z+STR +DOC +MAP =VAL :key =VAL :value with\ntabs -MAP -DOC -STR test.event100644001750001750 117114161720075 22604 0ustar00tinatina000000000000YAML-PP-0.031/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 17414161720075 22563 0ustar00tinatina000000000000YAML-PP-0.031/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 10214161720075 22434 0ustar00tinatina000000000000YAML-PP-0.031/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 6414161720075 22473 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DMG6+STR +DOC +MAP =VAL :key +MAP =VAL :ok =VAL :1 -MAP test.event100644001750001750 7114161720075 22506 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5MUD+STR +DOC --- +MAP {} =VAL "foo =VAL :bar -MAP -DOC -STR test.event100644001750001750 7314161720075 22531 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9CWY+STR +DOC +MAP =VAL :key +SEQ =VAL :item1 =VAL :item2 -SEQ test.event100644001750001750 12614161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/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 15514161720075 22544 0ustar00tinatina000000000000YAML-PP-0.031/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 4514161720075 22543 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SU5Z+STR +DOC +MAP =VAL :key =VAL "value test.event100644001750001750 2214161720075 22426 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/N782+STR +DOC +SEQ [] test.event100644001750001750 7214161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U3C3+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 4214161720075 22505 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/2LFX+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 1614161720075 22463 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9KBC+STR +DOC --- test.event100644001750001750 22214161720075 22476 0ustar00tinatina000000000000YAML-PP-0.031/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 10414161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/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 14214161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/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 1714161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/U99R+STR +DOC +SEQ test.event100644001750001750 6414161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6XDY+STR +DOC --- =VAL : -DOC +DOC --- =VAL : -DOC -STR test.event100644001750001750 16414161720075 22520 0ustar00tinatina000000000000YAML-PP-0.031/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 140314161720075 22547 0ustar00tinatina000000000000YAML-PP-0.031/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 11314161720075 22514 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/Z9M4+STR +DOC --- +SEQ =VAL "bar -SEQ -DOC -STR test.event100644001750001750 11614161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6KGN+STR +DOC --- +MAP =VAL :a =VAL &anchor : =VAL :b =ALI *anchor -MAP -DOC -STR test.event100644001750001750 21014161720075 22517 0ustar00tinatina000000000000YAML-PP-0.031/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 6414161720075 22472 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/FTA2+STR +DOC --- +SEQ &sequence =VAL :a -SEQ -DOC -STR test.event100644001750001750 5614161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WPF+STR +DOC --- =VAL " foo\nbar\nbaz -DOC -STR test.event100644001750001750 10614161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/AB8U+STR +DOC +SEQ =VAL :single multiline - sequence entry -SEQ -DOC -STR test.event100644001750001750 31214161720075 22474 0ustar00tinatina000000000000YAML-PP-0.031/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 6414161720075 22543 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5NYZ+STR +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 25214161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/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 3314161720075 22506 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/GT5M+STR +DOC +SEQ =VAL :item1 test.event100644001750001750 20314161720075 22561 0ustar00tinatina000000000000YAML-PP-0.031/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 21514161720075 22466 0ustar00tinatina000000000000YAML-PP-0.031/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 6214161720075 22436 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6S55+STR +DOC +MAP =VAL :key +SEQ =VAL :bar =VAL :baz test.event100644001750001750 13214161720075 22500 0ustar00tinatina000000000000YAML-PP-0.031/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 10714161720075 22454 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/7A4E+STR +DOC =VAL " 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 4214161720075 22507 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6LVF+STR +DOC --- =VAL "foo -DOC -STR test.event100644001750001750 11614161720075 22523 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UDM2+STR +DOC +SEQ +MAP {} =VAL :url =VAL :http://example.org -MAP -SEQ -DOC -STR test.event100644001750001750 4214161720075 22513 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/5LLU+STR +DOC +MAP =VAL :block scalar test.event100644001750001750 16014161720075 22474 0ustar00tinatina000000000000YAML-PP-0.031/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 10314161720075 22500 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P76L+STR +DOC --- =VAL :1 - 3 -DOC -STR test.event100644001750001750 16614161720075 22514 0ustar00tinatina000000000000YAML-PP-0.031/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 5414161720075 22521 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6FWR+STR +DOC --- =VAL |ab\n\n \n -DOC ... -STR test.event100644001750001750 6414161720075 22465 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/P94K+STR +DOC +MAP =VAL :key =VAL :value -MAP -DOC -STR test.event100644001750001750 3314161720075 22475 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/BS4K+STR +DOC =VAL :word1 -DOC test.event100644001750001750 6714161720075 22464 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T26H+STR +DOC --- =VAL |\n\nliteral\n \n\ntext\n -DOC -STR test.event100644001750001750 5314161720075 22476 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S7BG+STR +DOC --- +SEQ =VAL ::, -SEQ -DOC -STR test.event100644001750001750 11214161720075 22534 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/KSS4+STR +DOC --- =VAL "quoted string -DOC +DOC --- =VAL &node :foo -DOC -STR test.event100644001750001750 5514161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/EXG3+STR +DOC --- =VAL :---word1 word2 -DOC -STR test.event100644001750001750 24714161720075 22526 0ustar00tinatina000000000000YAML-PP-0.031/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 13314161720075 22516 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/UT92+STR +DOC --- +MAP {} =VAL :matches % =VAL :20 -MAP -DOC ... +DOC --- =VAL : -DOC ... -STR test.event100644001750001750 4414161720075 22442 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/52DL+STR +DOC --- =VAL :a -DOC -STR test.event100644001750001750 1214161720075 22465 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QT73+STR -STR test.event100644001750001750 16514161720075 22555 0ustar00tinatina000000000000YAML-PP-0.031/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 5214161720075 22467 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/TL85+STR +DOC =VAL " foo\nbar\nbaz -DOC -STR test.event100644001750001750 10714161720075 22530 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/PRH3+STR +DOC =VAL ' 1st non-empty\n2nd non-empty 3rd non-empty -DOC -STR test.event100644001750001750 13214161720075 22510 0ustar00tinatina000000000000YAML-PP-0.031/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 6514161720075 22536 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4MUZ+STR +DOC +MAP {} =VAL "foo =VAL "bar -MAP -DOC -STR test.event100644001750001750 12314161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/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 11614161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/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 17414161720075 22513 0ustar00tinatina000000000000YAML-PP-0.031/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 16714161720075 22533 0ustar00tinatina000000000000YAML-PP-0.031/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 14314161720075 22512 0ustar00tinatina000000000000YAML-PP-0.031/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 16614161720075 22502 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4ABK+STR +DOC +MAP {} =VAL :unquoted =VAL "separate =VAL :http://foo.com =VAL : =VAL :omitted value =VAL : -MAP -DOC -STR test.event100644001750001750 4014161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/DK4H+STR +DOC --- +SEQ [] =VAL :key test.event100644001750001750 14414161720075 22557 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/6WLZ+STR +DOC --- =VAL "bar -DOC ... +DOC --- =VAL "bar -DOC -STR test.event100644001750001750 20514161720075 22533 0ustar00tinatina000000000000YAML-PP-0.031/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 5614161720075 22461 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9C9N+STR +DOC --- +MAP =VAL :flow +SEQ [] =VAL :a test.event100644001750001750 12714161720075 22455 0ustar00tinatina000000000000YAML-PP-0.031/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 4314161720075 22452 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/H7J7+STR +DOC +MAP =VAL :key =VAL &x : test.event100644001750001750 20214161720075 22476 0ustar00tinatina000000000000YAML-PP-0.031/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 10214161720075 22532 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/QF4Y+STR +DOC +SEQ [] +MAP {} =VAL :foo =VAL :bar -MAP -SEQ -DOC -STR test.event100644001750001750 27014161720075 22462 0ustar00tinatina000000000000YAML-PP-0.031/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 6514161720075 22454 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4H7K+STR +DOC --- +SEQ =VAL :a =VAL :b =VAL :c -SEQ -DOC test.event100644001750001750 3514161720075 22435 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/T833+STR +DOC --- +MAP =VAL :foo test.event100644001750001750 21314161720075 22540 0ustar00tinatina000000000000YAML-PP-0.031/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 6014161720075 22455 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/4Q9F+STR +DOC --- =VAL >ab cd\nef\n\ngh\n -DOC -STR test.event100644001750001750 10614161720075 22465 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9J7A+STR +DOC +MAP =VAL :foo +MAP =VAL :bar =VAL :baz -MAP -MAP -DOC -STR test.event100644001750001750 5014161720075 22506 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/S98Z+STR +DOC +MAP =VAL :empty block scalar test.event100644001750001750 12614161720075 22522 0ustar00tinatina000000000000YAML-PP-0.031/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 6114161720075 22535 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/SSW6+STR +DOC --- =VAL 'here's to "quotes" -DOC -STR test.event100644001750001750 15014161720075 22475 0ustar00tinatina000000000000YAML-PP-0.031/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 10414161720075 22504 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/E76Z+STR +DOC +MAP =VAL &a :a =VAL &b :b =ALI *b =ALI *a -MAP -DOC -STR test.event100644001750001750 3314161720075 22506 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/9HCY+STR +DOC =VAL "bar test.event100644001750001750 26414161720075 22553 0ustar00tinatina000000000000YAML-PP-0.031/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 3514161720075 22466 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/G9HC+STR +DOC --- +MAP =VAL :seq test.event100644001750001750 5414161720075 22450 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/M9B4+STR +DOC =VAL |literal\n\ttext\n -DOC -STR test.event100644001750001750 5614161720075 22520 0ustar00tinatina000000000000YAML-PP-0.031/test-suite/yaml-test-suite-data/CVW2+STR +DOC --- +SEQ [] =VAL :a =VAL :b =VAL :c test.event100644001750001750 50114161720075 22473 0ustar00tinatina000000000000YAML-PP-0.031/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 etc000755001750001750 014161720075 16321 5ustar00tinatina000000000000YAML-PP-0.031/ext/yaml-test-schemagenerate-schema-html.pl100644001750001750 1011014161720075 23021 0ustar00tinatina000000000000YAML-PP-0.031/ext/yaml-test-schema/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/../yaml-schema.yaml"; my $htmlfile = "$Bin/../gh-pages/data.html"; my $data = YAML::PP::LoadFile($file); my %examples; for my $input (sort keys %$data) { my $schemas = $data->{ $input }; my @keys = keys %$schemas; for my $key (@keys) { my $def = $schemas->{ $key }; my @schemas = split m/ *, */, $key; for my $schema (@schemas) { $examples{ $input }->{ $schema } = $def; } } } my @keys = qw/ failsafe json core yaml11 /; for my $input (sort keys %examples) { my $schemas = $examples{ $input }; my $str = 0; for my $schema (@keys) { my $example = $schemas->{ $schema }; unless ($example) { $example = $schemas->{ $schema } = [ 'todo', '', '', '' ]; } if ($example->[0] eq 'str' or $example->[0] eq 'todo') { $str++; } } } my %type_index = ( null => 0, bool => 1, float => 2, inf => 3, nan => 4, int => 5, str => 6, todo => 7, ); my $table = schema_table(\%examples); my $html = generate_html($table); open my $fh, '>', $htmlfile or die $!; print $fh $html; close $fh; sub sort_rows { my ($x, $y, $a, $b) = @_; $type_index{ $x->{yaml11}->[0] } <=> $type_index{ $y->{yaml11}->[0] } || $type_index{ $x->{core}->[0] } <=> $type_index{ $y->{core}->[0] } || $type_index{ $x->{json}->[0] } <=> $type_index{ $y->{json}->[0] } || lc $a cmp lc $b || $a cmp $b } sub schema_table { my ($examples) = @_; my $html = ''; my @sorted = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { not m/^!!\w/ } keys %$examples; my @sorted_explicit = sort { sort_rows($examples->{ $a }, $examples->{ $b }, $a, $b) } grep { m/^!!\w/ } keys %$examples; my @all = (@sorted, @sorted_explicit); $html .= qq{\n}; my $header; $header .= qq{}; $header .= join '', map { my $m = $_ eq 'YAML' ? 'YAML.pm' : $_; qq{\n}; } (qw/ Failsafe JSON Core /, 'YAML 1.1'); $header .= qq{\n}; $html .= $header; $html .= qq{} . (qq{} x 4) . qq{\n}; for my $i (0 .. $#all) { my $input = $all[ $i ]; if ($i and $i % 30 == 0) { $html .= $header; } my $schemas = $examples->{ $input }; my $input_escaped = uri_escape($input); $input =~ s/ / /g; $html .= qq{}; } else { $html .= qq{}; } } $html .= qq{\n}; } $html .= "
YAML 1.2YAML 1.1
Input YAML$m
TypeOutput
$input}; for my $schema (@keys) { my $example = $schemas->{ $schema }; my $class = 'type-str'; my ($type, $perl, $out) = @$example; $class = "type-$type"; for ($out) { s/ / /g; } if (0 and $type eq 'str') { $html .= qq{$type$type
$out
"; return $html; } sub generate_html { my ($content) = @_; my $html = <<'EOM'; YAML Schema Data YAML Test Schema | Schemas | Test Data

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

EOM $html .= $content; $html .= <<'EOM'; EOM return $html; }