Hello community, here is the log from the commit of package perl-boolean for openSUSE:Factory checked in at Mon Sep 19 21:39:03 CEST 2011.
-------- --- perl-boolean/perl-boolean.changes 2011-04-03 17:30:39.000000000 +0200 +++ /mounts/work_src_done/STABLE/perl-boolean/perl-boolean.changes 2011-09-19 11:15:44.000000000 +0200 @@ -1,0 +2,9 @@ +Mon Sep 19 09:11:27 UTC 2011 - [email protected] + +- updated to 0.28 + - Added -truth option. + - This idea was inspired by https://rt.cpan.org/Ticket/Display.html?id=65536 + - Awesome idea! + - Released from Liz++&Wendy++ downstairs bathroom + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- boolean-0.26.tar.gz New: ---- boolean-0.28.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-boolean.spec ++++++ --- /var/tmp/diff_new_pack.NGfUbo/_old 2011-09-19 21:38:59.000000000 +0200 +++ /var/tmp/diff_new_pack.NGfUbo/_new 2011-09-19 21:38:59.000000000 +0200 @@ -18,21 +18,19 @@ Name: perl-boolean -Version: 0.26 +Version: 0.28 Release: 1 License: GPL+ or Artistic %define cpan_name boolean Summary: Boolean support for Perl Url: http://search.cpan.org/dist/boolean/ Group: Development/Libraries/Perl -#Source: http://www.cpan.org/authors/id/I/IN/INGY/boolean-%{version}.tar.gz -Source: %{cpan_name}-%{version}.tar.gz +Source: http://www.cpan.org/authors/id/I/IN/INGY/%{cpan_name}-%{version}.tar.gz BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros -BuildRequires: perl(Readonly) -Requires: perl(Readonly) +Recommends: perl(Readonly) %{perl_requires} %description @@ -72,7 +70,7 @@ %{__rm} -rf %{buildroot} %files -f %{name}.files -%defattr(644,root,root,755) -%doc Changes README +%defattr(-,root,root,755) +%doc Changes LICENSE README %changelog ++++++ boolean-0.26.tar.gz -> boolean-0.28.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/Changes new/boolean-0.28/Changes --- old/boolean-0.26/Changes 2011-01-20 14:06:17.000000000 +0100 +++ new/boolean-0.28/Changes 2011-09-12 13:51:52.000000000 +0200 @@ -1,4 +1,17 @@ --- +version: 0.28 +date: Mon Sep 12 13:51:47 CEST 2011 +changes: +- Added -truth option. +- This idea was inspired by https://rt.cpan.org/Ticket/Display.html?id=65536 +- Awesome idea! +- Released from Liz++&Wendy++ downstairs bathroom +--- +version: 0.27 +date: Tue Jun 28 10:47:01 EDT 2011 +changes: +- Switch to Module::Package at YAPC 2011 ++ +--- version: 0.26 date: Fri Jan 21 00:05:44 EST 2011 changes: @@ -12,14 +25,14 @@ - Removed the new methods and autobox methods. They didn't add much except confusion. - Documented that you can use isTrue and isFalse as methods. -- &boolean(1,2,3) now dies like boolean(1,2,3) -- &boolean() now dies like boolean() +- '&boolean(1,2,3) now dies like boolean(1,2,3)' +- '&boolean() now dies like boolean()' --- version: 0.24 date: Thu Jan 13 15:27:09 EST 2011 changes: -- @Schwern++ found out how to make true and false immutable. - Kudos to #strategicdata++. +- '@Schwern++ found out how to make true and false immutable. + Kudos to #strategicdata++.' - Document the boolean() function. - Added is_true and is_false methods. - Added boolean, is_true, and is_false autobox methods diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/LICENSE new/boolean-0.28/LICENSE --- old/boolean-0.26/LICENSE 1970-01-01 01:00:00.000000000 +0100 +++ new/boolean-0.28/LICENSE 2011-09-12 13:51:53.000000000 +0200 @@ -0,0 +1,377 @@ +This software is copyright (c) 2011 by Ingy döt Net <[email protected]>. + +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) 2011 by Ingy döt Net <[email protected]>. + +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. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, 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. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <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 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307, 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. + + <signature of Ty Coon>, 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) 2011 by Ingy döt Net <[email protected]>. + +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 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/MANIFEST new/boolean-0.28/MANIFEST --- old/boolean-0.26/MANIFEST 2011-01-20 14:09:07.000000000 +0100 +++ new/boolean-0.28/MANIFEST 2011-09-12 13:51:53.000000000 +0200 @@ -1,20 +1,21 @@ Changes inc/Module/Install.pm -inc/Module/Install/AckXXX.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm inc/Module/Install/Fetch.pm +inc/Module/Install/GithubMeta.pm inc/Module/Install/Makefile.pm -inc/Module/Install/ManifestSkip.pm inc/Module/Install/Metadata.pm -inc/Module/Install/ReadmeFromPod.pm -inc/Module/Install/VersionCheck.pm +inc/Module/Install/Package.pm inc/Module/Install/Win32.pm inc/Module/Install/WriteAll.pm +inc/Module/Package.pm lib/boolean.pm +LICENSE Makefile.PL MANIFEST This list of files META.yml README t/boolean.t t/export.t +t/truth.t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/META.yml new/boolean-0.28/META.yml --- old/boolean-0.26/META.yml 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/META.yml 2011-09-12 13:51:53.000000000 +0200 @@ -7,7 +7,7 @@ configure_requires: ExtUtils::MakeMaker: 6.42 distribution_type: module -generated_by: 'Module::Install version 1.00' +generated_by: 'Module::Install version 1.01' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -23,5 +23,7 @@ requires: perl: 5.005003 resources: + homepage: http://github.com/ingydotnet/boolean-pm/tree license: http://dev.perl.org/licenses/ -version: 0.26 + repository: git://github.com/ingydotnet/boolean-pm.git +version: 0.28 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/Makefile.PL new/boolean-0.28/Makefile.PL --- old/boolean-0.26/Makefile.PL 2011-01-16 00:45:03.000000000 +0100 +++ new/boolean-0.28/Makefile.PL 2011-09-12 13:34:22.000000000 +0200 @@ -1,12 +1,3 @@ -use inc::Module::Install; - -all_from 'lib/boolean.pm'; - -readme_from; -manifest_skip; -version_check; -ack_xxx; +use inc::Module::Package 'Ingy:modern 0.15'; recommends 'Readonly'; - -WriteAll; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/README new/boolean-0.28/README --- old/boolean-0.26/README 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/README 2011-09-12 13:51:53.000000000 +0200 @@ -18,6 +18,13 @@ do &something if isTrue($guess); do &something_else if isFalse($guess); + and: + + use boolean -truth; + + die unless ref(42 == 42) eq 'boolean'; + die unless ("foo" =~ /bar/) eq '0'; + DESCRIPTION Most programming languages have a native "Boolean" data type. Perl does not. @@ -88,7 +95,7 @@ $boolean->isFalse Same as isFalse($boolean). -EXPORTABLES +USE OPTIONS By default this module exports the "true", "false" and "boolean" functions. @@ -97,6 +104,19 @@ :all Exports "true", "false", "boolean", "isTrue", "isFalse", "isBoolean" + -truth + You can specify the "-truth" option to override truth operators to + return "boolean" values. + + use boolean -truth; + print ref("hello" eq "world"), "\n"; + + Prints: + + boolean + + "-truth" can be used with the other import options. + AUTHOR Ingy döt Net <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/AckXXX.pm new/boolean-0.28/inc/Module/Install/AckXXX.pm --- old/boolean-0.26/inc/Module/Install/AckXXX.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/AckXXX.pm 1970-01-01 01:00:00.000000000 +0100 @@ -1,42 +0,0 @@ -#line 1 -package Module::Install::AckXXX; -use strict; -use warnings; -use 5.008003; - -use Module::Install::Base; - -use vars qw($VERSION @ISA); -BEGIN { - $VERSION = '0.11'; - @ISA = 'Module::Install::Base'; -} - -sub ack_xxx { - my $self = shift; - return unless $self->is_admin; - - require Capture::Tiny; - sub ack { system "ack '^\\s*use XXX\\b'"; } - my $output = Capture::Tiny::capture_merged(\&ack); - $self->_report($output) if $output; -} - -sub _report { - my $self = shift; - my $output = shift; - chomp ($output); - print <<"..."; - -*** AUTHOR WARNING *** -*** Found usage of XXX.pm in this code: -$output - -... -} - -1; - -=encoding utf8 - -#line 82 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Base.pm new/boolean-0.28/inc/Module/Install/Base.pm --- old/boolean-0.26/inc/Module/Install/Base.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Base.pm 2011-09-12 13:51:52.000000000 +0200 @@ -4,7 +4,7 @@ use strict 'vars'; use vars qw{$VERSION}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; } # Suspend handler for "redefined" warnings diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Can.pm new/boolean-0.28/inc/Module/Install/Can.pm --- old/boolean-0.26/inc/Module/Install/Can.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Can.pm 2011-09-12 13:51:53.000000000 +0200 @@ -9,7 +9,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Fetch.pm new/boolean-0.28/inc/Module/Install/Fetch.pm --- old/boolean-0.26/inc/Module/Install/Fetch.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Fetch.pm 2011-09-12 13:51:53.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/GithubMeta.pm new/boolean-0.28/inc/Module/Install/GithubMeta.pm --- old/boolean-0.26/inc/Module/Install/GithubMeta.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/GithubMeta.pm 2011-09-12 13:51:53.000000000 +0200 @@ -0,0 +1,50 @@ +#line 1 +package Module::Install::GithubMeta; + +use strict; +use warnings; +use Cwd; +use base qw(Module::Install::Base); +use vars qw($VERSION); + +$VERSION = '0.10'; + +sub githubmeta { + my $self = shift; + return unless $Module::Install::AUTHOR; + return unless _under_git(); + return unless $self->can_run('git'); + return unless my ($git_url) = `git remote show -n origin` =~ /URL: (.*)$/m; + return unless $git_url =~ /github\.com/; # Not a Github repository + my $http_url = $git_url; + $git_url =~ s![\w\-]+\@([^:]+):!git://$1/!; + $http_url =~ s![\w\-]+\@([^:]+):!http://$1/!; + $http_url =~ s!\.git$!/tree!; + $self->repository( $git_url ); + $self->homepage( $http_url ) unless $self->homepage(); + return 1; +} + +sub _under_git { + return 1 if -e '.git'; + my $cwd = getcwd; + my $last = $cwd; + my $found = 0; + while (1) { + chdir '..' or last; + my $current = getcwd; + last if $last eq $current; + $last = $current; + if ( -e '.git' ) { + $found = 1; + last; + } + } + chdir $cwd; + return $found; +} + +'Github'; +__END__ + +#line 108 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Makefile.pm new/boolean-0.28/inc/Module/Install/Makefile.pm --- old/boolean-0.26/inc/Module/Install/Makefile.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Makefile.pm 2011-09-12 13:51:53.000000000 +0200 @@ -8,7 +8,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/ManifestSkip.pm new/boolean-0.28/inc/Module/Install/ManifestSkip.pm --- old/boolean-0.26/inc/Module/Install/ManifestSkip.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/ManifestSkip.pm 1970-01-01 01:00:00.000000000 +0100 @@ -1,84 +0,0 @@ -#line 1 -package Module::Install::ManifestSkip; -use strict; -use warnings; -use 5.008003; - -use Module::Install::Base; - -use vars qw($VERSION @ISA); -BEGIN { - $VERSION = '0.14'; - @ISA = 'Module::Install::Base'; -} - -my $skip_file = "MANIFEST.SKIP"; - -sub manifest_skip { - my $self = shift; - return unless $self->is_admin; - - print "manifest_skip\n"; - - my $keepers; - if (-e $skip_file) { - open IN, $skip_file - or die "Can't open $skip_file for input: $!"; - my $input = do {local $/; <IN>}; - close IN; - if ($input =~ s/(.*?\n)\s*\n.*/$1/s and $input =~ /\S/) { - $keepers = $input; - } - } - open OUT, '>', $skip_file - or die "Can't open $skip_file for output: $!";; - - if ($keepers) { - print OUT "$keepers\n"; - } - - print OUT _skip_files(); - - close OUT; - - $self->clean_files('MANIFEST'); -} - -sub _skip_files { - return <<'...'; -^Makefile$ -^Makefile\.old$ -^pm_to_blib$ -^blib/ -^pod2htm.* -^MANIFEST\.SKIP$ -^MANIFEST\.bak$ -^\.git/ -^\.gitignore -^\.gitmodules -/\.git/ -\.svn/ -^\.vimrc$ -\.sw[op]$ -^core$ -^out$ -^tmon.out$ -^\w$ -^foo.* -^notes -^todo -^ToDo$ -## avoid OS X finder files -\.DS_Store$ -## skip komodo project files -\.kpf$ -## ignore emacs and vim backup files -~$ -... -} - -1; - -=encoding utf8 - -#line 135 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Metadata.pm new/boolean-0.28/inc/Module/Install/Metadata.pm --- old/boolean-0.26/inc/Module/Install/Metadata.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Metadata.pm 2011-09-12 13:51:53.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } @@ -170,7 +170,7 @@ # Normalize the version $version = $self->_perl_version($version); - # We don't support the reall old versions + # We don't support the really old versions unless ( $version >= 5.005 ) { die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n"; } @@ -515,6 +515,7 @@ 'GNU Free Documentation license' => 'unrestricted', 1, 'GNU Affero General Public License' => 'open_source', 1, '(?:Free)?BSD license' => 'bsd', 1, + 'Artistic license 2\.0' => 'artistic_2', 1, 'Artistic license' => 'artistic', 1, 'Apache (?:Software )?license' => 'apache', 1, 'GPL' => 'gpl', 1, @@ -550,9 +551,9 @@ sub _extract_bugtracker { my @links = $_[0] =~ m#L<( - \Qhttp://rt.cpan.org/\E[^>]+| - \Qhttp://github.com/\E[\w_]+/[\w_]+/issues| - \Qhttp://code.google.com/p/\E[\w_\-]+/issues/list + https?\Q://rt.cpan.org/\E[^>]+| + https?\Q://github.com/\E[\w_]+/[\w_]+/issues| + https?\Q://code.google.com/p/\E[\w_\-]+/issues/list )>#gx; my %links; @links{@links}=(); @@ -581,7 +582,7 @@ sub requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); - my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; + my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+(v?[\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Package.pm new/boolean-0.28/inc/Module/Install/Package.pm --- old/boolean-0.26/inc/Module/Install/Package.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Package.pm 2011-09-12 13:51:52.000000000 +0200 @@ -0,0 +1,275 @@ +#line 1 +## +# name: Module::Install::Package +# abstract: Module::Install support for Module::Package +# author: Ingy döt Net <[email protected]> +# license: perl +# copyright: 2011 +# see: +# - Module::Package + +# This module contains the Module::Package logic that must be available to +# both the Author and the End User. Author-only logic goes in a +# Module::Package::Plugin subclass. +package Module::Install::Package; +use strict; +use Module::Install::Base; +use vars qw'@ISA $VERSION'; +@ISA = 'Module::Install::Base'; +$VERSION = '0.28'; + +#-----------------------------------------------------------------------------# +# XXX BOOTBUGHACK +# This is here to try to get us out of Module-Package-0.11 cpantesters hell... +# Remove this when the situation has blown over. +sub pkg { + *inc::Module::Package::VERSION = sub { $VERSION }; + my $self = shift; + $self->module_package_internals_init($@); +} + +#-----------------------------------------------------------------------------# +# We allow the author to specify key/value options after the plugin. These +# options need to be available both at author time and install time. +#-----------------------------------------------------------------------------# +# OO accessor for command line options: +sub package_options { + @_>1?($_[0]->{package_options}=$_[1]):$_[0]->{package_options}} + +my $default_options = { + deps_list => 1, + install_bin => 1, + install_share => 1, + manifest_skip => 1, + requires_from => 1, +}; + +#-----------------------------------------------------------------------------# +# Module::Install plugin directives. Use long, ugly names to not pollute the +# Module::Install plugin namespace. These are only intended to be called from +# Module::Package. +#-----------------------------------------------------------------------------# + +# Module::Package starts off life as a normal call to this Module::Install +# plugin directive: +my $module_install_plugin; +my $module_package_plugin; +# XXX ARGVHACK This @argv thing is a temporary fix for an ugly bug somewhere in the +# Wikitext module usage. +my @argv; +sub module_package_internals_init { + my $self = $module_install_plugin = shift; + my ($plugin_spec, %options) = @_; + $self->package_options({%$default_options, %options}); + + if ($module_install_plugin->is_admin) { + $module_package_plugin = $self->_load_plugin($plugin_spec); + $module_package_plugin->mi($module_install_plugin); + $module_package_plugin->version_check($VERSION); + } + # NOTE - This is the point in time where the body of Makefile.PL runs... + return; + + sub INIT { + return unless $module_install_plugin; + return if $Module::Package::ERROR; + eval { + if ($module_install_plugin->is_admin) { + $module_package_plugin->initial(); + $module_package_plugin->main(); + } + else { + $module_install_plugin->_initial(); + $module_install_plugin->_main(); + } + }; + if ($@) { + $Module::Package::ERROR = $@; + die $@; + } + @argv = @ARGV; # XXX ARGVHACK + } + + # If this Module::Install plugin was used (by Module::Package) then wrap + # up any loose ends. This will get called after Makefile.PL has completed. + sub END { + @ARGV = @argv; # XXX ARGVHACK + return unless $module_install_plugin; + return if $Module::Package::ERROR; + $module_package_plugin + ? do { + $module_package_plugin->final; + $module_package_plugin->replicate_module_package; + } + : $module_install_plugin->_final; + } +} + +# Module::Package, Module::Install::Package and Module::Package::Plugin +# must all have the same version. Seems wise. +sub module_package_internals_version_check { + my ($self, $version) = @_; + return if $version < 0.1800001; # XXX BOOTBUGHACK!! + die <<"..." unless $version == $VERSION; + +Error! Something has gone awry: + Module::Package version=$version is using + Module::Install::Package version=$VERSION +If you are the author of this module, try upgrading Module::Package. +Otherwise, please notify the author of this error. + +... +} + +# Find and load the author side plugin: +sub _load_plugin { + my ($self, $spec) = @_; + $spec ||= ''; + my $version = ''; + $Module::Package::plugin_version = 0; + if ($spec =~ s/\s+(\S+)\s*//) { + $version = $1; + $Module::Package::plugin_version = $version; + } + my ($module, $plugin) = + not($spec) ? ('Plugin', "Plugin::basic") : + ($spec =~ /^\w(\w|::)*$/) ? ($spec, $spec) : + ($spec =~ /^:(\w+)$/) ? ('Plugin', "Plugin::$1") : + ($spec =~ /^(\S*\w):(\w+)$/) ? ($1, "$1::$2") : + die "$spec is invalid"; + $module = "Module::Package::$module"; + $plugin = "Module::Package::$plugin"; + eval "use $module $version (); 1" or die $@; + return $plugin->new(); +} + +#-----------------------------------------------------------------------------# +# These are the user side analogs to the author side plugin API calls. +# Prefix with '_' to not pollute Module::Install plugin space. +#-----------------------------------------------------------------------------# +sub _initial { + my ($self) = @_; +} + +sub _main { + my ($self) = @_; +} + +# NOTE These must match Module::Package::Plugin::final. +sub _final { + my ($self) = @_; + $self->_all_from; + $self->_requires_from; + $self->_install_bin; + $self->_install_share; + $self->_WriteAll; +} + +#-----------------------------------------------------------------------------# +# This section is where all the useful code bits go. These bits are needed by +# both Author and User side runs. +#-----------------------------------------------------------------------------# + +my $all_from = 0; +sub _all_from { + my $self = shift; + return if $all_from++; + return if $self->name; + my $file = shift || "$main::PM" or die "all_from has no file"; + $self->all_from($file); +} + +my $requires_from = 0; +sub _requires_from { + my $self = shift; + return if $requires_from++; + return unless $self->package_options->{requires_from}; + my $file = shift || "$main::PM" or die "requires_from has no file"; + $self->requires_from($main::PM) +} + +my $install_bin = 0; +sub _install_bin { + my $self = shift; + return if $install_bin++; + return unless $self->package_options->{install_bin}; + return unless -d 'bin'; + my @bin; + File::Find::find(sub { + return unless -f $_; + push @bin, $File::Find::name; + }, 'bin'); + $self->install_script($_) for @bin; +} + +my $install_share = 0; +sub _install_share { + my $self = shift; + return if $install_share++; + return unless $self->package_options->{install_share}; + return unless -d 'share'; + $self->install_share; +} + +my $WriteAll = 0; +sub _WriteAll { + my $self = shift; + return if $WriteAll++; + $self->WriteAll(@_); +} + +#-----------------------------------------------------------------------------# +# Take a guess at the primary .pm and .pod files for 'all_from', and friends. +# Put them in global magical vars in the main:: namespace. +#-----------------------------------------------------------------------------# +package Module::Package::PM; +use overload '""' => sub { + $_[0]->guess_pm unless @{$_[0]}; + return $_[0]->[0]; +}; +sub set { $_[0]->[0] = $_[1] } +sub guess_pm { + my $pm = ''; + my $self = shift; + if (-e 'META.yml') { + open META, 'META.yml' or die "Can't open 'META.yml' for input:\n$!"; + my $meta = do { local $/; <META> }; + close META; + $meta =~ /^module_name: (\S+)$/m + or die "Can't get module_name from META.yml"; + $pm = $1; + $pm =~ s!::!/!g; + $pm = "lib/$pm.pm"; + } + else { + require File::Find; + my @array = (); + File::Find::find(sub { + return unless /\.pm$/; + my $name = $File::Find::name; + my $num = ($name =~ s!/+!/!g); + my $ary = $array[$num] ||= []; + push @$ary, $name; + }, 'lib'); + shift @array while @array and not defined $array[0]; + die "Can't guess main module" unless @array; + (($pm) = sort @{$array[0]}) or + die "Can't guess main module"; + } + my $pmc = $pm . 'c'; + $pm = $pmc if -e $pmc; + $self->set($pm); +} +$main::PM = bless [$main::PM ? ($main::PM) : ()], __PACKAGE__; + +package Module::Package::POD; +use overload '""' => sub { + return $_[0]->[0] if @{$_[0]}; + (my $pod = "$main::PM") =~ s/\.pm/.pod/ or die; + return -e $pod ? $pod : ''; +}; +sub set { $_[0][0] = $_[1] } +$main::POD = bless [$main::POD ? ($main::POD) : ()], __PACKAGE__; + +1; + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/ReadmeFromPod.pm new/boolean-0.28/inc/Module/Install/ReadmeFromPod.pm --- old/boolean-0.26/inc/Module/Install/ReadmeFromPod.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/ReadmeFromPod.pm 1970-01-01 01:00:00.000000000 +0100 @@ -1,48 +0,0 @@ -#line 1 -package Module::Install::ReadmeFromPod; - -use 5.006; -use strict; -use warnings; -use base qw(Module::Install::Base); -use vars qw($VERSION); - -$VERSION = '0.12'; - -sub readme_from { - my $self = shift; - return unless $self->is_admin; - - my $file = shift || $self->_all_from - or die "Can't determine file to make readme_from"; - my $clean = shift; - - print "Writing README from $file\n"; - - require Pod::Text; - my $parser = Pod::Text->new(); - open README, '> README' or die "$!\n"; - $parser->output_fh( *README ); - $parser->parse_file( $file ); - if ($clean) { - $self->clean_files('README'); - } - return 1; -} - -sub _all_from { - my $self = shift; - return unless $self->admin->{extensions}; - my ($metadata) = grep { - ref($_) eq 'Module::Install::Metadata'; - } @{$self->admin->{extensions}}; - return unless $metadata; - return $metadata->{values}{all_from} || ''; -} - -'Readme!'; - -__END__ - -#line 112 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/VersionCheck.pm new/boolean-0.28/inc/Module/Install/VersionCheck.pm --- old/boolean-0.26/inc/Module/Install/VersionCheck.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/VersionCheck.pm 1970-01-01 01:00:00.000000000 +0100 @@ -1,74 +0,0 @@ -#line 1 -package Module::Install::VersionCheck; -use strict; -use warnings; -use 5.008003; - -use Module::Install::Base; - -my $DEFAULT = '0.00'; - -use vars qw($VERSION @ISA); -BEGIN { - $VERSION = '0.11'; - @ISA = 'Module::Install::Base'; -} - -sub version_check { - my $self = shift; - return unless $self->is_admin; - - my $module_version = $self->_get_module_version(); - my $changes_version = $self->_get_changes_version(); - my $git_tag_version = $self->_get_git_tag_version(); - - $self->_report( - $module_version, - $changes_version, - $git_tag_version, - ); -} - -sub _get_module_version { - my $self = shift; - return $DEFAULT unless $self->admin->{extensions}; - my ($metadata) = grep { - ref($_) eq 'Module::Install::Metadata'; - } @{$self->admin->{extensions}}; - return $DEFAULT unless $metadata; - return $metadata->{values}{version} || $DEFAULT; -} - -sub _get_changes_version { - my $self = shift; - return $DEFAULT unless -e 'Changes'; - open IN, 'Changes' or die "Can't open 'Changes' for input: $!"; - my $text = do {local $/; <IN>}; - $text =~ /\b(\d\.\d\d)\b/ or return $DEFAULT; - return $1; -} - -sub _get_git_tag_version { - my $self = shift; - return $DEFAULT unless -e '.git'; - require Capture::Tiny; - my $text = Capture::Tiny::capture_merged(sub { system('git tag') }); - my $version = $DEFAULT; - for (split "\n", $text) { - if (/\b(\d\.\d\d)\b/ and $1 > $version) { - $version = $1; - } - } - return $version; -} - -sub _report { - my $self = shift; - print "version_check @_\n"; -} - -1; - -=encoding utf8 - -#line 107 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/Win32.pm new/boolean-0.28/inc/Module/Install/Win32.pm --- old/boolean-0.26/inc/Module/Install/Win32.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/Win32.pm 2011-09-12 13:51:53.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install/WriteAll.pm new/boolean-0.28/inc/Module/Install/WriteAll.pm --- old/boolean-0.26/inc/Module/Install/WriteAll.pm 2011-01-20 14:08:45.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install/WriteAll.pm 2011-09-12 13:51:53.000000000 +0200 @@ -6,7 +6,7 @@ use vars qw{$VERSION @ISA $ISCORE}; BEGIN { - $VERSION = '1.00'; + $VERSION = '1.01'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Install.pm new/boolean-0.28/inc/Module/Install.pm --- old/boolean-0.26/inc/Module/Install.pm 2011-01-20 14:08:44.000000000 +0100 +++ new/boolean-0.28/inc/Module/Install.pm 2011-09-12 13:51:52.000000000 +0200 @@ -31,7 +31,7 @@ # This is not enforced yet, but will be some time in the next few # releases once we can make sure it won't clash with custom # Module::Install extensions. - $VERSION = '1.00'; + $VERSION = '1.01'; # Storage for the pseudo-singleton $MAIN = undef; @@ -467,4 +467,4 @@ 1; -# Copyright 2008 - 2010 Adam Kennedy. +# Copyright 2008 - 2011 Adam Kennedy. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/inc/Module/Package.pm new/boolean-0.28/inc/Module/Package.pm --- old/boolean-0.26/inc/Module/Package.pm 1970-01-01 01:00:00.000000000 +0100 +++ new/boolean-0.28/inc/Module/Package.pm 2011-09-12 13:51:53.000000000 +0200 @@ -0,0 +1,71 @@ +#line 1 +## +# name: Module::Package +# abstract: Postmodern Perl Module Packaging +# author: Ingy döt Net <[email protected]> +# license: perl +# copyright: 2011 +# see: +# - Module::Package::Plugin +# - Module::Install::Package +# - Module::Package::Tutorial + +package Module::Package; +use 5.005; +use strict; + +BEGIN { + $Module::Package::VERSION = '0.28'; + $inc::Module::Package::VERSION ||= $Module::Package::VERSION; + @inc::Module::Package::ISA = __PACKAGE__; +} + +sub import { + my $class = shift; + $INC{'inc/Module/Install.pm'} = __FILE__; + unshift @INC, 'inc' unless $INC[0] eq 'inc'; + eval "use Module::Install 1.01 (); 1" or $class->error($@); + + package main; + Module::Install->import(); + eval { + module_package_internals_version_check($Module::Package::VERSION); + module_package_internals_init(@_); + }; + if ($@) { + $Module::Package::ERROR = $@; + die $@; + } +} + +# XXX Remove this when things are stable. +sub error { + my ($class, $error) = @_; + if (-e 'inc' and not -e 'inc/.author') { + require Data::Dumper; + $Data::Dumper::Sortkeys = 1; + my $dump1 = Data::Dumper::Dumper(\%INC); + my $dump2 = Data::Dumper::Dumper(\@INC); + die <<"..."; +This should not have happened. Hopefully this dump will explain the problem: + +inc::Module::Package: $inc::Module::Package::VERSION +Module::Package: $Module::Package::VERSION +inc::Module::Install: $inc::Module::Install::VERSION +Module::Install: $Module::Install::VERSION + +Error: $error + +%INC: +$dump1 +\@INC: +$dump2 +... + } + else { + die $error; + } +} + +1; + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/lib/boolean.pm new/boolean-0.28/lib/boolean.pm --- old/boolean-0.26/lib/boolean.pm 2011-01-20 14:06:47.000000000 +0100 +++ new/boolean-0.28/lib/boolean.pm 2011-09-12 13:49:24.000000000 +0200 @@ -1,8 +1,8 @@ -package boolean; use 5.005003; +package boolean; use strict; -# use warnings; -$boolean::VERSION = '0.26'; + +$boolean::VERSION = '0.28'; my ($true, $false); @@ -19,6 +19,13 @@ test => [qw(isTrue isFalse isBoolean)], ); +sub import { + my @options = grep $_ ne '-truth', @_; + $_[0]->truth if @options != @_; + @_ = @options; + goto &Exporter::import; +} + my ($true_val, $false_val, $bool_vals); BEGIN { @@ -60,6 +67,18 @@ (exists $bool_vals->{overload::StrVal($_[0])}) ? true : false; } +sub truth { + # enable modifying true and false + &Internals::SvREADONLY( \ !!0, 0); + &Internals::SvREADONLY( \ !!1, 0); + # turn perl internal booleans into blessed booleans: + ${ \ !!0 } = $false; + ${ \ !!1 } = $true; + # make true and false read-only again + &Internals::SvREADONLY( \ !!0, 1); + &Internals::SvREADONLY( \ !!1, 1); +} + 1; =encoding utf8 @@ -86,6 +105,13 @@ do &something if isTrue($guess); do &something_else if isFalse($guess); +and: + + use boolean -truth; + + die unless ref(42 == 42) eq 'boolean'; + die unless ("foo" =~ /bar/) eq '0'; + =head1 DESCRIPTION Most programming languages have a native C<Boolean> data type. @@ -174,7 +200,7 @@ =back -=head1 EXPORTABLES +=head1 USE OPTIONS By default this module exports the C<true>, C<false> and C<boolean> functions. @@ -188,6 +214,20 @@ =back +=head2 -truth + +You can specify the C<-truth> option to override truth operators to return +C<boolean> values. + + use boolean -truth; + print ref("hello" eq "world"), "\n"; + +Prints: + + boolean + +C<-truth> can be used with the other import options. + =head1 AUTHOR Ingy döt Net <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/t/export.t new/boolean-0.28/t/export.t --- old/boolean-0.26/t/export.t 2010-11-17 20:26:05.000000000 +0100 +++ new/boolean-0.28/t/export.t 2011-09-12 13:42:02.000000000 +0200 @@ -13,7 +13,7 @@ use boolean ':all'; package Test; -use boolean ':test'; +use boolean -truth, ':test'; package main; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/boolean-0.26/t/truth.t new/boolean-0.28/t/truth.t --- old/boolean-0.26/t/truth.t 1970-01-01 01:00:00.000000000 +0100 +++ new/boolean-0.28/t/truth.t 2011-09-12 13:39:02.000000000 +0200 @@ -0,0 +1,27 @@ +use Test::More tests => 8; + +use boolean -truth; + +is ref(1 == 0), 'boolean', + 'Turn false == value into boolean'; + +is ref(1 == 1), 'boolean', + 'Turn true == value into boolean'; + +is ref("foo" eq "bar"), 'boolean', + 'Turn false "eq" value into boolean'; + +is ref("foo" ne "bar"), 'boolean', + 'Turn true "ne" value into boolean'; + +is ref("foo" =~ /o/), 'boolean', + 'Turn true regex into boolean'; + +is ref("foo" =~ /bar/), 'boolean', + 'Turn false regex into boolean'; + +is 1 == 0, '0', + 'False is 0'; + +is 1 == 1, '1', + 'True is 1'; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
