@@ -0,0 +1,12 @@
+# =========================================================================
+# THIS FILE IS AUTOMATICALLY GENERATED BY MINILLA.
+# DO NOT EDIT DIRECTLY.
+# =========================================================================
+
+use 5.008_001;
+use strict;
+
+use Module::Build::Tiny 0.035;
+
+Build_PL();
+
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, 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 licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU 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. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), 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 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 show them these terms so they know 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.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- 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 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 derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 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 License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-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.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary 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
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 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 Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing 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 for copying, distributing or modifying
-the Program or works based on it.
-
- 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.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. 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 this 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
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. 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
-
- 11. 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.
-
- 12. 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
-
- 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 the public, 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.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- 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 2 of the License, 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) year 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 is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
@@ -1,112 +0,0 @@
-2013-04-24 Darren Chamberlain <dlc@sevenroot.org>
-
- * COPYING, MANIFEST, README: Added another contributor, and GPL.
-
-2013-04-03 Darren Chamberlain <dlc@sevenroot.org>
-
- * Changelog: Add Changelog, per issues/5
-
-2013-04-03 Darren Chamberlain <dlc@sevenroot.org>
-
- * TOML.pm: Added forgotten contributor (sorry!)
-
-2013-04-02 Darren Chamberlain <dlc@sevenroot.org>
-
- * MANIFEST, MANIFEST.SKIP: Add MANIFEST.SKIP to MANIFEST, and add
- .travis.yml to it
-
-2013-04-02 Darren Chamberlain <dlc@sevenroot.org>
-
- * .travis.yml: travis-ci.org config.
-
-2013-04-02 Darren Chamberlain <dlc@sevenroot.org>
-
- * TOML.pm: Handle embedded \" in strings.
-
-2013-04-02 Darren Chamberlain <dlc@sevenroot.org>
-
- * TOML.pm: Bump version number.
-
-2013-04-02 Darren Chamberlain <dlc@sevenroot.org>
-
- * : Merge pull request #4 from tokuhirom/better-unescape Better unescape
-
-2013-04-02 tokuhirom <tokuhirom@gmail.com>
-
- * TOML.pm, t/escape.t: Unescape characters correctly.
-
-2013-03-21 Darren Chamberlain <dlc@sevenroot.org>
-
- * README: Fix formatting for Contributor section.
-
-2013-03-21 Darren Chamberlain <dlc@sevenroot.org>
-
- * TOML.pm: Fix formatting for Contributor section.
-
-2013-03-19 Darren Chamberlain <dlc@sevenroot.org>
-
- * README: Updated README from docs.
-
-2013-03-19 Darren Chamberlain <dlc@sevenroot.org>
-
- * t/reparse.t: Test roundtripping data -> toml -> data.
-
-2013-03-19 Darren Chamberlain <dlc@sevenroot.org>
-
- * TOML.pm: Code cleanups and new documentation.
-
-2013-03-19 Darren Chamberlain <dlc@sevenroot.org>
-
- * MANIFEST: Add new tests to manifest.
-
-2013-03-19 Darren Chamberlain <dlc@sevenroot.org>
-
- * t/example.t: Not sure why the structure was named $yaml, that
- doesn't make sense.
-
-2013-03-19 Darren Chamberlain <dlc@sevenroot.org>
-
- * : Merge pull request #3 from tokuhirom/master to_toml
-
-2013-03-19 tokuhirom <tokuhirom@gmail.com>
-
- * t/to_toml.t: better test case
-
-2013-03-19 tokuhirom <tokuhirom@gmail.com>
-
- * TOML.pm: Allow \z after number
-
-2013-03-19 tokuhirom <tokuhirom@gmail.com>
-
- * TOML.pm, t/to_toml.t: TOML generator
-
-2013-03-09 Darren Chamberlain <dlc@sevenroot.org>
-
- * README, TOML.pm: Update docs to reflect contributions.
-
-2013-03-09 Darren Chamberlain <dlc@sevenroot.org>
-
- * TOML.pm, t/broken.t: Update test to emit line number and broken
- line, as recommended by Matthias Bethke
-
-2013-03-08 Darren Chamberlain <dlc@sevenroot.org>
-
- * README: Update README with new docs.
-
-2013-03-08 Darren Chamberlain <dlc@sevenroot.org>
-
- * MANIFEST, TOML.pm, t/broken.t: On error, from_toml returns (undef,
- $error) in list context, and undef in scalar context.
-
-2013-03-08 Darren Chamberlain <dlc@sevenroot.org>
-
- * .gitignore: Ignore build stuff.
-
-2013-02-25 Darren Chamberlain <dlc@sevenroot.org>
-
- * : Merge pull request #1 from sergeyromanov/master Replace 'vars' pragma
-
-2013-02-24 Darren Chamberlain <dlc@sevenroot.org>
-
- * Parser for Tom's Obvious, Minimal Language
-
@@ -0,0 +1,54 @@
+Revision history for Perl extension TOML
+
+0.96 2015-02-18T14:37:31Z
+
+ - Just import Exporter's "import" instead of inheriting from it. (thanks to dolmen)
+
+0.95 2014-10-08T23:41:57Z
+
+ - Required TOML::Parser 0.04 or later. (bug fixed in this version)
+
+0.94 2014-05-22T13:28:16Z
+
+ - Required TOML::Parser 0.03 or later. (many bugs are fixed in this version)
+
+0.93 2014-05-18T14:33:11Z
+
+ - Use TOML::Parser for parsing.
+ - Now conforms to the specifications of CPAN::Changes::Spec.
+
+0.92 2013-04-24T07:49:02-04:00
+
+ - COPYING, MANIFEST, README: Added another contributor, and GPL.
+ - Changelog: Add Changelog, per issues/5
+ - TOML.pm: Added forgotten contributor (sorry!)
+ - MANIFEST, MANIFEST.SKIP: Add MANIFEST.SKIP to MANIFEST, and add .travis.yml to it
+ - .travis.yml: travis-ci.org config.
+ - TOML.pm: Handle embedded \" in strings.
+ - TOML.pm: Bump version number.
+ - : Merge pull request -4 from tokuhirom/better-unescape Better unescape
+ - TOML.pm, t/escape.t: Unescape characters correctly.
+ - README: Fix formatting for Contributor section.
+ - TOML.pm: Fix formatting for Contributor section.
+
+0.91 2013-03-19T09:01:13-04:00
+
+ - README: Updated README from docs.
+ - t/reparse.t: Test roundtripping data -> toml -> data.
+ - TOML.pm: Code cleanups and new documentation.
+ - MANIFEST: Add new tests to manifest.
+ - t/example.t: Not sure why the structure was named $yaml, that doesn't make sense.
+ - : Merge pull request -3 from tokuhirom/master to_toml
+ - t/to_toml.t: better test case
+ - TOML.pm: Allow \z after number
+ - TOML.pm, t/to_toml.t: TOML generator
+ - README, TOML.pm: Update docs to reflect contributions.
+ - TOML.pm, t/broken.t: Update test to emit line number and broken line, as recommended by Matthias Bethke
+ - README: Update README with new docs.
+ - MANIFEST, TOML.pm, t/broken.t: On error, from_toml returns (undef, $error) in list context, and undef in scalar context.
+ - .gitignore: Ignore build stuff.
+
+0.9 2013-02-25T09:18:27-08:00
+
+ - : Merge pull request -1 from sergeyromanov/master Replace 'vars' pragma
+ - Parser for Tom's Obvious, Minimal Language
\ No newline at end of file
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, 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 licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU 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. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), 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 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 show them these terms so they know 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.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ 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 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 derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 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 License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+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.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary 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
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 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 Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing 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 for copying, distributing or modifying
+the Program or works based on it.
+
+ 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.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. 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 this 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
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. 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
+
+ 11. 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.
+
+ 12. 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
+
+ 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 the public, 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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 2 of the License, 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) year 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 is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
@@ -1,13 +1,12 @@
-COPYING
-Changelog
-Makefile.PL
-MANIFEST
-MANIFEST.SKIP
-README
-t/broken.t
-t/escape.t
-t/example.t
+Build.PL
+Changes
+LICENSE
+META.json
+README.md
+cpanfile
+lib/TOML.pm
+minil.toml
t/reparse.t
t/to_toml.t
-TOML.pm
-META.yml Module meta-data (added by MakeMaker)
+META.yml
+MANIFEST
\ No newline at end of file
@@ -1,3 +0,0 @@
-\.git
-\.gitignore
-\.travis\.yml
@@ -0,0 +1,83 @@
+{
+ "abstract" : "Parser for Tom's Obvious, Minimal Language.",
+ "author" : [
+ "Darren Chamberlain <darren@cpan.org>"
+ ],
+ "dynamic_config" : 0,
+ "generated_by" : "Minilla/v2.3.0",
+ "license" : [
+ "gpl_2"
+ ],
+ "meta-spec" : {
+ "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+ "version" : "2"
+ },
+ "name" : "TOML",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "xt",
+ "inc",
+ "share",
+ "eg",
+ "examples",
+ "author",
+ "builder"
+ ]
+ },
+ "prereqs" : {
+ "configure" : {
+ "requires" : {
+ "Module::Build::Tiny" : "0.035",
+ "perl" : "5.008_001"
+ }
+ },
+ "develop" : {
+ "requires" : {
+ "Test::CPAN::Meta" : "0",
+ "Test::MinimumVersion::Fast" : "0.04",
+ "Test::PAUSE::Permissions" : "0.04",
+ "Test::Pod" : "1.41",
+ "Test::Spellunker" : "v0.2.7"
+ }
+ },
+ "runtime" : {
+ "requires" : {
+ "Exporter" : "5.57",
+ "TOML::Parser" : "0.04",
+ "perl" : "5.008005"
+ }
+ },
+ "test" : {
+ "requires" : {
+ "Test::More" : "0"
+ }
+ }
+ },
+ "provides" : {
+ "TOML" : {
+ "file" : "lib/TOML.pm",
+ "version" : "0.96"
+ }
+ },
+ "release_status" : "stable",
+ "resources" : {
+ "bugtracker" : {
+ "web" : "https://github.com/karupanerura/toml/issues"
+ },
+ "homepage" : "https://github.com/karupanerura/toml",
+ "repository" : {
+ "url" : "git://github.com/karupanerura/toml.git",
+ "web" : "https://github.com/karupanerura/toml"
+ }
+ },
+ "version" : "0.96",
+ "x_contributors" : [
+ "Sergey Romanov <Sergey.Romanov@emc.com>",
+ "tokuhirom <tokuhirom@gmail.com>",
+ "Darren Chamberlain <dlc@sevenroot.org>",
+ "karupanerura <karupa@cpan.org>",
+ "Olivier Mengué <dolmen@cpan.org>",
+ "karupanerura <karupanerura@users.noreply.github.com>"
+ ]
+}
@@ -1,21 +1,46 @@
---- #YAML:1.0
-name: TOML
-version: 0.92
-abstract: Parser for Tom's Obvious, Minimal Language.
+---
+abstract: "Parser for Tom's Obvious, Minimal Language."
author:
- - darren chamberlain <darren@cpan.org>
-license: unknown
-distribution_type: module
-configure_requires:
- ExtUtils::MakeMaker: 0
+ - 'Darren Chamberlain <darren@cpan.org>'
build_requires:
- ExtUtils::MakeMaker: 0
-requires: {}
-no_index:
- directory:
- - t
- - inc
-generated_by: ExtUtils::MakeMaker version 6.56
+ Test::More: '0'
+configure_requires:
+ Module::Build::Tiny: '0.035'
+ perl: 5.008_001
+dynamic_config: 0
+generated_by: 'Minilla/v2.3.0, CPAN::Meta::Converter version 2.143240'
+license: gpl
meta-spec:
- url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ url: http://module-build.sourceforge.net/META-spec-v1.4.html
+ version: '1.4'
+name: TOML
+no_index:
+ directory:
+ - t
+ - xt
+ - inc
+ - share
+ - eg
+ - examples
+ - author
+ - builder
+provides:
+ TOML:
+ file: lib/TOML.pm
+ version: '0.96'
+requires:
+ Exporter: '5.57'
+ TOML::Parser: '0.04'
+ perl: '5.008005'
+resources:
+ bugtracker: https://github.com/karupanerura/toml/issues
+ homepage: https://github.com/karupanerura/toml
+ repository: git://github.com/karupanerura/toml.git
+version: '0.96'
+x_contributors:
+ - 'Sergey Romanov <Sergey.Romanov@emc.com>'
+ - 'tokuhirom <tokuhirom@gmail.com>'
+ - 'Darren Chamberlain <dlc@sevenroot.org>'
+ - 'karupanerura <karupa@cpan.org>'
+ - 'Olivier Mengué <dolmen@cpan.org>'
+ - 'karupanerura <karupanerura@users.noreply.github.com>'
@@ -1,19 +0,0 @@
-use strict;
-use ExtUtils::MakeMaker;
-
-my %clean = (
- 'FILES' => '$(DISTVNAME).tar$(SUFFIX) *.ppd'
-);
-
-my %dist = (
- PREOP => 'perldoc -t TOML.pm > README',
-);
-
-WriteMakefile(
- 'NAME' => 'TOML',
- 'AUTHOR' => 'darren chamberlain <darren@cpan.org>',
- 'ABSTRACT_FROM' => 'TOML.pm',
- 'VERSION_FROM' => 'TOML.pm',
- 'clean' => \%clean,
- 'dist' => \%dist,
-);
@@ -1,47 +0,0 @@
-NAME
- TOML - Parser for Tom's Obvious, Minimal Language.
-
-SYNOPSIS
- use TOML qw(from_toml to_toml);
-
- # Parsing toml
- my $toml = slurp("~/.foo.toml");
- my $data = from_toml($toml);
-
- # With error checking
- my ($data, $err) = from_toml($toml);
- unless ($data) {
- die "Error parsing toml: $err";
- }
-
- # Creating toml
- my $toml = to_toml($data);
-
-DESCRIPTION
- "TOML" implements a parser for Tom's Obvious, Minimal Language, as
- defined at <https://github.com/mojombo/toml>. "TOML" exports two
- subroutines, "from_toml" and "to_toml",
-
-FUNCTIONS
- from_toml
- "from_toml" transforms a string containing toml to a perl data
- structure or vice versa. This data structure complies with the tests
- provided at <https://github.com/mojombo/toml/tree/master/tests>.
-
- If called in list context, "from_toml" produces a ("hash",
- "error_string") tuple, where "error_string" is "undef" on
- non-errors. If there is an error, then "hash" will be undefined and
- "error_string" will contains (scant) details about said error.
-
- to_toml
- "to_toml" transforms a perl data structure into toml-formatted
- string.
-
-AUTHOR
- Darren Chamberlain <darren@cpan.org>
-
-CONTRIBUTORS
- Tokuhiro Matsuno <tokuhirom@cpan.org>
- Matthias Bethke <matthias@towiski.de>
- Sergey Romanov <complefor@rambler.ru>
-
@@ -0,0 +1,93 @@
+[![Build Status](https://travis-ci.org/karupanerura/toml.svg?branch=master)](https://travis-ci.org/karupanerura/toml)
+# NAME
+
+TOML - Parser for Tom's Obvious, Minimal Language.
+
+# SYNOPSIS
+
+ use TOML qw(from_toml to_toml);
+
+ # Parsing toml
+ my $toml = slurp("~/.foo.toml");
+ my $data = from_toml($toml);
+
+ # With error checking
+ my ($data, $err) = from_toml($toml);
+ unless ($data) {
+ die "Error parsing toml: $err";
+ }
+
+ # Creating toml
+ my $toml = to_toml($data);
+
+# DESCRIPTION
+
+`TOML` implements a parser for Tom's Obvious, Minimal Language, as
+defined at [https://github.com/mojombo/toml](https://github.com/mojombo/toml). `TOML` exports two
+subroutines, `from_toml` and `to_toml`,
+
+# FAQ
+
+- How change how to de-serialize?
+
+ You can change `$TOML::PARSER` for change how to de-serialize.
+
+ example:
+
+ use TOML;
+ use TOML::Parser;
+
+ local $TOML::PARSER = TOML::Parser->new(
+ inflate_boolean => sub { $_[0] eq 'true' ? \1 : \0 },
+ );
+
+ my $data = TOML::from_toml('foo = true');
+
+# FUNCTIONS
+
+- from\_toml
+
+ `from_toml` transforms a string containing toml to a perl data
+ structure or vice versa. This data structure complies with the tests
+ provided at [https://github.com/mojombo/toml/tree/master/tests](https://github.com/mojombo/toml/tree/master/tests).
+
+ If called in list context, `from_toml` produces a (`hash`,
+ `error_string`) tuple, where `error_string` is `undef` on
+ non-errors. If there is an error, then `hash` will be undefined and
+ `error_string` will contains (scant) details about said error.
+
+- to\_toml
+
+ `to_toml` transforms a perl data structure into toml-formatted
+ string.
+
+# SEE ALSO
+
+[TOML::Parser](https://metacpan.org/pod/TOML::Parser)
+
+# LICENSE
+
+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; version 2.
+
+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
+02111-1301 USA
+
+# AUTHOR
+
+Darren Chamberlain <darren@cpan.org>
+
+# CONTRIBUTORS
+
+- Tokuhiro Matsuno <tokuhirom@cpan.org>
+- Matthias Bethke <matthias@towiski.de>
+- Sergey Romanov <complefor@rambler.ru>
+- karupanerura <karupa@cpan.org>
@@ -1,318 +0,0 @@
-package TOML;
-
-# -------------------------------------------------------------------
-# TOML - Parser for Tom's Obvious, Minimal Language.
-#
-# Copyright (C) 2013 Darren Chamberlain <darren@cpan.org>
-#
-# 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; version 2.
-#
-# 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
-# 02111-1301 USA
-# -------------------------------------------------------------------
-
-use strict;
-use base qw(Exporter);
-
-our ($VERSION, @EXPORT, $SYNTAX_ERROR, @_NAMESPACE);
-
-use B;
-use Carp qw(croak);
-use Text::Balanced qw(extract_bracketed);
-
-$VERSION = "0.92";
-@EXPORT = qw(from_toml to_toml);
-$SYNTAX_ERROR = q(Syntax error);
-
-my %UNESCAPE = (
- q{b} => "\x08",
- q{t} => "\x09",
- q{n} => "\x0a",
- q{f} => "\x0c",
- q{r} => "\x0d",
- q{"} => "\x22",
- q{/} => "\x2f",
- q{\\} => "\x5c",
-);
-
-sub to_toml {
- my $stuff = shift;
- local @_NAMESPACE = ();
- _to_toml($stuff);
-}
-
-sub _to_toml {
- my ($stuff) = @_;
-
- if (ref $stuff eq 'HASH') {
- my $res = '';
- my @keys = sort keys %$stuff;
- for my $key (grep { ref $stuff->{$_} ne 'HASH' } @keys) {
- my $val = $stuff->{$key};
- $res .= "$key = " . _serialize($val) . "\n";
- }
- for my $key (grep { ref $stuff->{$_} eq 'HASH' } @keys) {
- my $val = $stuff->{$key};
- local @_NAMESPACE = (@_NAMESPACE, $key);
- $res .= sprintf("[%s]\n", join(".", @_NAMESPACE));
- $res .= _to_toml($val);
- }
- return $res;
- } else {
- croak("You cannot convert non-HashRef values to TOML");
- }
-}
-
-sub _serialize {
- my $value = shift;
- my $b_obj = B::svref_2object(\$value);
- my $flags = $b_obj->FLAGS;
-
- return $value
- if $flags & ( B::SVp_IOK | B::SVp_NOK ) and !( $flags & B::SVp_POK ); # SvTYPE is IV or NV?
-
- my $type = ref($value);
- if (!$type) {
- return string_to_json($value);
- } elsif ($type eq 'ARRAY') {
- return sprintf('[%s]', join(", ", map { _serialize($_) } @$value));
- } elsif ($type eq 'SCALAR') {
- if (defined $$value) {
- if ($$value eq '0') {
- return 'false';
- } elsif ($$value eq '1') {
- return 'true';
- } else {
- croak("cannot encode reference to scalar");
- }
- }
- croak("cannot encode reference to scalar");
- }
- croak("Bad type in to_toml: $type");
-}
-
-my %esc = (
- "\n" => '\n',
- "\r" => '\r',
- "\t" => '\t',
- "\f" => '\f',
- "\b" => '\b',
- "\"" => '\"',
- "\\" => '\\\\',
- "\'" => '\\\'',
-);
-sub string_to_json {
- my ($arg) = @_;
-
- $arg =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g;
- $arg =~ s/\//\\\//g if 1;
- $arg =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg;
-
- return '"' . $arg . '"';
-}
-
-sub from_toml {
- my $string = shift;
- my %toml; # Final data structure
- my $cur;
- my $err; # Error
- my $lineno = 0;
-
- # Normalize
- $string =
- join "\n",
- grep !/^$/,
- map { s/^\s*//; s/\s*$//; $_ }
- map { s/#.*//; $_ }
- split /[\n\r]/, $string;
-
- while ($string) {
- # strip leading whitespace, including newlines
- $string =~ s/^\s*//s;
- $lineno++;
-
- # Store current value, to check for invalid syntax
- my $string_start = $string;
-
- # Strings
- if ($string =~ s/^(\S+)\s*=\s*"(.+)"\s*//) {
- my $key = "$1";
- my $val = "$2";
- $val =~ s/^"//;
- $val =~ s/"$//;
- $val =~ s!
- \\([btnfr"/\\])
- |
- \\u([0-9A-Fa-f]{4})
- !
- if (defined $1) {
- $UNESCAPE{$1}
- } else {
- pack "U", hex $2;
- }
- !gex;
-
- if ($cur) {
- $cur->{ $key } = $val;
- }
- else {
- $toml{ $key } = $val;
- }
- }
-
- # Boolean
- if ($string =~ s/^(\S+)\s*=\s*(true|false)//i) {
- my $key = "$1";
- my $num = lc($2) eq "true" ? "true" : "false";
- if ($cur) {
- $cur->{ $key } = $num;
- }
- else {
- $toml{ $key } = $num;
- }
- }
-
- # Date
- if ($string =~ s/^(\S+)\s*=\s*(\d\d\d\d\-\d\d\-\d\dT\d\d:\d\d:\d\dZ)\s*//) {
- my $key = "$1";
- my $date = "$2";
- if ($cur) {
- $cur->{ $key } = $date;
- }
- else {
- $toml{ $key } = $date;
- }
- }
-
- # Numbers
- if ($string =~ s/^(\S+)\s*=\s*([+-]?[\d.]+)(?:\n|\z)//) {
- my $key = "$1";
- my $num = $2;
- if ($cur) {
- $cur->{ $key } = $num;
- }
- else {
- $toml{ $key } = $num;
- }
- }
-
- # Arrays
- if ($string =~ s/^(\S+)\s=\s*(\[)/[/) {
- my $key = "$1";
- my $match;
- ($match, $string) = extract_bracketed($string, "[]");
- if ($cur) {
- $cur->{ $key } = eval $match || $match;
- }
- else {
- $toml{ $key } = eval $match || $match;
- }
- }
-
- # New section
- elsif ($string =~ s/^\[([^]]+)\]\s*//) {
- my $section = "$1";
- $cur = undef;
- my @bits = split /\./, $section;
-
- for my $bit (@bits) {
- if ($cur) {
- $cur->{ $bit } ||= { };
- $cur = $cur->{ $bit };
- }
- else {
- $toml{ $bit } ||= { };
- $cur = $toml{ $bit };
- }
- }
- }
-
- if ($string eq $string_start) {
- # If $string hasn't been modified by this point, then
- # it contains invalid syntax.
- (my $err_bits = $string) =~ s/(.+?)\n.*//s;
- return wantarray ? (undef, "$SYNTAX_ERROR at line $lineno: $err_bits") : undef;
- }
- }
-
- return wantarray ? (\%toml, $err) : \%toml;
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-TOML - Parser for Tom's Obvious, Minimal Language.
-
-=head1 SYNOPSIS
-
- use TOML qw(from_toml to_toml);
-
- # Parsing toml
- my $toml = slurp("~/.foo.toml");
- my $data = from_toml($toml);
-
- # With error checking
- my ($data, $err) = from_toml($toml);
- unless ($data) {
- die "Error parsing toml: $err";
- }
-
- # Creating toml
- my $toml = to_toml($data);
-
-=head1 DESCRIPTION
-
-C<TOML> implements a parser for Tom's Obvious, Minimal Language, as
-defined at L<https://github.com/mojombo/toml>. C<TOML> exports two
-subroutines, C<from_toml> and C<to_toml>,
-
-
-=head1 FUNCTIONS
-
-=over 4
-
-=item from_toml
-
-C<from_toml> transforms a string containing toml to a perl data
-structure or vice versa. This data structure complies with the tests
-provided at L<https://github.com/mojombo/toml/tree/master/tests>.
-
-If called in list context, C<from_toml> produces a (C<hash>,
-C<error_string>) tuple, where C<error_string> is C<undef> on
-non-errors. If there is an error, then C<hash> will be undefined and
-C<error_string> will contains (scant) details about said error.
-
-=item to_toml
-
-C<to_toml> transforms a perl data structure into toml-formatted
-string.
-
-=back
-
-=head1 AUTHOR
-
-Darren Chamberlain <darren@cpan.org>
-
-=head1 CONTRIBUTORS
-
-=over 4
-
-=item Tokuhiro Matsuno <tokuhirom@cpan.org>
-
-=item Matthias Bethke <matthias@towiski.de>
-
-=item Sergey Romanov <complefor@rambler.ru>
-
-=back
@@ -0,0 +1,11 @@
+requires 'TOML::Parser', '0.04';
+requires 'Exporter', '5.57';
+
+on configure => sub {
+ requires 'Module::Build::Tiny', '0.035';
+ requires 'perl', '5.008_001';
+};
+
+on test => sub {
+ requires 'Test::More';
+};
@@ -0,0 +1,217 @@
+package TOML;
+
+# -------------------------------------------------------------------
+# TOML - Parser for Tom's Obvious, Minimal Language.
+#
+# Copyright (C) 2013 Darren Chamberlain <darren@cpan.org>
+# -------------------------------------------------------------------
+
+use 5.008005;
+use strict;
+use warnings;
+use Exporter 'import';
+
+our ($VERSION, @EXPORT, @_NAMESPACE, $PARSER);
+
+use B;
+use Carp qw(croak);
+use TOML::Parser 0.03;
+
+$VERSION = "0.96";
+@EXPORT = qw(from_toml to_toml);
+$PARSER = TOML::Parser->new(inflate_boolean => sub { $_[0] });
+
+sub to_toml {
+ my $stuff = shift;
+ local @_NAMESPACE = ();
+ _to_toml($stuff);
+}
+
+sub _to_toml {
+ my ($stuff) = @_;
+
+ if (ref $stuff eq 'HASH') {
+ my $res = '';
+ my @keys = sort keys %$stuff;
+ for my $key (grep { ref $stuff->{$_} ne 'HASH' } @keys) {
+ my $val = $stuff->{$key};
+ $res .= "$key = " . _serialize($val) . "\n";
+ }
+ for my $key (grep { ref $stuff->{$_} eq 'HASH' } @keys) {
+ my $val = $stuff->{$key};
+ local @_NAMESPACE = (@_NAMESPACE, $key);
+ $res .= sprintf("[%s]\n", join(".", @_NAMESPACE));
+ $res .= _to_toml($val);
+ }
+ return $res;
+ } else {
+ croak("You cannot convert non-HashRef values to TOML");
+ }
+}
+
+sub _serialize {
+ my $value = shift;
+ my $b_obj = B::svref_2object(\$value);
+ my $flags = $b_obj->FLAGS;
+
+ return $value
+ if $flags & ( B::SVp_IOK | B::SVp_NOK ) and !( $flags & B::SVp_POK ); # SvTYPE is IV or NV?
+
+ my $type = ref($value);
+ if (!$type) {
+ return string_to_json($value);
+ } elsif ($type eq 'ARRAY') {
+ return sprintf('[%s]', join(", ", map { _serialize($_) } @$value));
+ } elsif ($type eq 'SCALAR') {
+ if (defined $$value) {
+ if ($$value eq '0') {
+ return 'false';
+ } elsif ($$value eq '1') {
+ return 'true';
+ } else {
+ croak("cannot encode reference to scalar");
+ }
+ }
+ croak("cannot encode reference to scalar");
+ }
+ croak("Bad type in to_toml: $type");
+}
+
+my %esc = (
+ "\n" => '\n',
+ "\r" => '\r',
+ "\t" => '\t',
+ "\f" => '\f',
+ "\b" => '\b',
+ "\"" => '\"',
+ "\\" => '\\\\',
+ "\'" => '\\\'',
+);
+sub string_to_json {
+ my ($arg) = @_;
+
+ $arg =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g;
+ $arg =~ s/\//\\\//g if 1;
+ $arg =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg;
+
+ return '"' . $arg . '"';
+}
+
+sub from_toml {
+ my $string = shift;
+ local $@;
+ my $toml = eval { $PARSER->parse($string) };
+ return wantarray ? ($toml, $@) : $toml;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+TOML - Parser for Tom's Obvious, Minimal Language.
+
+=head1 SYNOPSIS
+
+ use TOML qw(from_toml to_toml);
+
+ # Parsing toml
+ my $toml = slurp("~/.foo.toml");
+ my $data = from_toml($toml);
+
+ # With error checking
+ my ($data, $err) = from_toml($toml);
+ unless ($data) {
+ die "Error parsing toml: $err";
+ }
+
+ # Creating toml
+ my $toml = to_toml($data);
+
+=head1 DESCRIPTION
+
+C<TOML> implements a parser for Tom's Obvious, Minimal Language, as
+defined at L<https://github.com/mojombo/toml>. C<TOML> exports two
+subroutines, C<from_toml> and C<to_toml>,
+
+=head1 FAQ
+
+=over 4
+
+=item How change how to de-serialize?
+
+You can change C<$TOML::PARSER> for change how to de-serialize.
+
+example:
+
+ use TOML;
+ use TOML::Parser;
+
+ local $TOML::PARSER = TOML::Parser->new(
+ inflate_boolean => sub { $_[0] eq 'true' ? \1 : \0 },
+ );
+
+ my $data = TOML::from_toml('foo = true');
+
+=back
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item from_toml
+
+C<from_toml> transforms a string containing toml to a perl data
+structure or vice versa. This data structure complies with the tests
+provided at L<https://github.com/mojombo/toml/tree/master/tests>.
+
+If called in list context, C<from_toml> produces a (C<hash>,
+C<error_string>) tuple, where C<error_string> is C<undef> on
+non-errors. If there is an error, then C<hash> will be undefined and
+C<error_string> will contains (scant) details about said error.
+
+=item to_toml
+
+C<to_toml> transforms a perl data structure into toml-formatted
+string.
+
+=back
+
+=head1 SEE ALSO
+
+L<TOML::Parser>
+
+=head1 LICENSE
+
+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; version 2.
+
+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
+02111-1301 USA
+
+=head1 AUTHOR
+
+Darren Chamberlain <darren@cpan.org>
+
+=head1 CONTRIBUTORS
+
+=over 4
+
+=item Tokuhiro Matsuno <tokuhirom@cpan.org>
+
+=item Matthias Bethke <matthias@towiski.de>
+
+=item Sergey Romanov <complefor@rambler.ru>
+
+=item karupanerura <karupa@cpan.org>
+
+=back
@@ -0,0 +1,6 @@
+name = "TOML"
+badges = ["travis"]
+license = "gpl_2"
+
+# Module::Build::Tiny
+module_maker = "ModuleBuildTiny"
\ No newline at end of file
@@ -1,18 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use Test::More tests => 3;
-
-use_ok("TOML");
-
-# Syntactically invalid example, originally from https://rt.cpan.org/Ticket/Display.html?id=83836
-my $toml = q{foo = "bar'};
-my $new;
-my $err;
-my $serr = $TOML::SYNTAX_ERROR = $TOML::SYNTAX_ERROR ;
-
-$new = from_toml($toml);
-is($new, undef, "Invalid syntax returns <undef> in scalar context");
-
-($new, $err) = from_toml($toml);
-like($err, qr/^$serr/, 'Invalid syntx returns <undef>, $err in list context');
@@ -1,16 +0,0 @@
-use strict;
-use warnings;
-use utf8;
-use Test::More tests => 4;
-
-use_ok("TOML");
-
-my ($dat, $err) = from_toml(<<'...');
-all="\b\t\n\f\r\"\/\\"
-unichar="\u0022"
-...
-ok(!$err) or diag $err;
-
-is($dat->{all}, "\x08\x09\x0A\x0C\x0D\x22\x2F\x5C");
-is($dat->{unichar}, q{"});
-
@@ -1,87 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use Test::More tests => 2;
-
-use_ok("TOML");
-
-# Original structre
-my $toml = q{# This is a TOML document. Boom.
-
-title = "TOML Example"
-
-[owner]
-name = "Tom Preston-Werner"
-organization = "GitHub"
-bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
-dob = 1979-05-27T07:32:00Z # First class dates? Why not?
-
-[database]
-server = "192.168.1.1"
-ports = [ 8001, 8001, 8002 ]
-connection_max = 5000
-enabled = true
-
-[servers]
-
- # You can indent as you please. Tabs or spaces. TOML don't care.
- [servers.alpha]
- ip = "10.0.0.1"
- dc = "eqdc10"
-
- [servers.beta]
- ip = "10.0.0.2"
- dc = "eqdc10"
-
-[clients]
-data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it
-};
-
-# Expected structure
-my $data = {
- 'database' => {
- 'ports' => [
- '8001',
- '8001',
- '8002'
- ],
- 'connection_max' => '5000',
- 'server' => '192.168.1.1',
- 'enabled' => 'true'
- },
- 'owner' => {
- 'dob' => '1979-05-27T07:32:00Z',
- 'name' => 'Tom Preston-Werner',
- 'bio' => 'GitHub Cofounder & CEO
-Likes tater tots and beer.',
- 'organization' => 'GitHub'
- },
- 'clients' => {
- 'data' => [
- [
- 'gamma',
- 'delta'
- ],
- [
- '1',
- '2'
- ]
- ]
- },
- 'servers' => {
- 'alpha' => {
- 'dc' => 'eqdc10',
- 'ip' => '10.0.0.1'
- },
- 'beta' => {
- 'dc' => 'eqdc10',
- 'ip' => '10.0.0.2'
- }
- },
- 'title' => 'TOML Example'
- };
-
-
-
-my $new = from_toml($toml);
-is_deeply($data, $new, "Structure matches example data");