MooseX-Role-Parameterized-1.11000755000766000024 013513224542 15734 5ustar00etherstaff000000000000README100644000766000024 60213513224542 16653 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11This archive contains the distribution MooseX-Role-Parameterized, version 1.11: Moose roles with composition parameters This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. This README file was generated by Dist::Zilla::Plugin::Readme v6.013. Changes100644000766000024 1512113513224542 17330 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11Revision history for MooseX-Role-Parameterized 1.11 2019-07-16 01:33:16Z - remove MooseX::Role::WithOverloading from test dependencies (RT#130075) 1.10 2017-04-20 17:50:53Z - add MooseX::Role::Parameterised as stub documentation, for discoverability 1.09 2016-08-07 01:20:31Z - Give 'anonymous' generated roles names that are similar to the original parameterized role so debug output is easier to read 1.08 2014-08-23 22:38:12Z - add x_breaks metadata for incompatibility issue with MooseX::Storage (now resolved with MooseX-Storage-0.47) 1.07 2014-08-06 05:44:11Z - re-release to remove README.pod from shipped dist 1.06 2014-08-02 04:34:06Z - Restored MooseX::Role::Parameterized->current_metaclass as a public method. Apparently there is code on CPAN that relies on this. 1.05 2014-07-31 18:26:03Z - If a parameterizable role was reinitialized after any parameters or a role block was declared, those declarations were lost. Reinitialization usually occurs when new metaroles are applied to the role by other MooseX modules. 1.04 2014-07-31 14:53:26Z - Convert this distribution to Dist::Zilla to resolve packaging insanity 1.03 2014-07-30 - This extension is now implemented as a role metarole, which means it can (mostly) cooperate with other role extensions, such as MooseX::Role::WithOverloading. Note that you should load MooseX::Role::Parameterized _after_ other extensions. - This module no longer supports passing a "-metaclass" parameter when you load it. This was an artifact from a much earlier era of Moose extensions. - repository migrated to the github moose organization 1.02 2013-09-11 - set %INC entries in test to avoid failures with Moose pre-2.11 (kentfrederic) https://github.com/sartak/MooseX-Role-Parameterized/pull/7 https://rt.cpan.org/Ticket/Display.html?id=88593 1.01 2013-09-10 - removed use of deprecated Class::MOP::load_class (ether) 1.00 2012-01-12 - MooseX::Role::Parameterized now depends on Moose 2.0300 released 2011-09-23 for its several core improvements, hence the major version number bump. - MXRP now uses the new meta_lookup feature added to Moose 2.0300 (specifically for MXRP) to avoid duplicating Moose-0.60-era Moose::Role sugar. This means the error messages you get are better, and there's a lot less ugly code in MXRP. - Remove alias/excludes special case errors. They have long since been replaced in core Moose by -alias and -excludes, and were finally removed in Moose 2.0200. - Expressly forbid using role { } inside role { } (which makes no sense but I suppose you could accidentally trigger it) - Documentation fix from cweyl@alumni.drew.edu https://github.com/sartak/MooseX-Role-Parameterized/pull/5 0.27 2011-08-22 - Remove MooseX::Role::Parameterized::Meta::Parameter; instead, the default for parameters of (is => 'ro') is set by the "parameter" sugar. This removes an unnecessary metaclass and removes weird edge cases caused by it. Please please please report any breakage! 0.26 2011-03-20 - make tests stop relying on a specific format for anon class/role names (doy) 0.25 2011-03-04 - Move the reinitialization hook from Role to Trait so hardcore hackers (trait janitors) get the benefit too (doy) 0.24 2011-03-01 - Made MXRP more extensible by hooking into the role metaobject reinitialization (doy) 0.23 2010-12-25 - Merry Christmas! - Make MooseX::Role::Parameterized::Extending more instructive. Hopefully. 0.22 2010-11-26 - The test suite now uses Test::Fatal instead of Test::Exception (Karen Etheridge). - Fix Test::More dependency (reported by Father Chrysostomos) [rt.cpan.org #63222] 0.21 2010-11-15 - "package" arg can now tell generate_role to use a specific package (rjbs) 0.20 2010-11-02 - Minor test refactoring to fix blead support [rt.perl.org #78244] 0.19 2010-07-08 - Documentation improvements 0.18 2010-03-10 - Improve the error message when you leave off the role {} block http://stackoverflow.com/questions/2418177/moose-and-error-messages-the-sun-and-the-moon/2418429 0.17 2010-02-11 - MANIFEST fixes (Karen Etheridge) 0.16 2010-02-04 - Allow specifying custom metaclasses for parameterized roles (Oliver Charles) - Documentation improvements (Oliver Charles, Sartak) 0.15 2010-01-05 - Move the guts of MXRPMR::Parameterized into a trait. See http://www.nntp.perl.org/group/perl.moose/2010/01/msg1294.html (Sartak) 0.14 2009-12-06 - Fix a nesting bug reported by nothingmuch with a test case provided by rafl (Sartak) - Parameterized roles now keep track of their genitor role (Sartak) - Delegate parameterizable->has_parameter to parameters->has_attribute (Sartak) 0.13 2009-09-11 - Documentation improvements (Sartak) 0.12 2009-08-15 - Add MooseX::Role::Parameterized->current_metaclass for forward compat (Sartak) - Various documentation improvements (Sartak) 0.11 2009-08-09 - Explicitly test-require Test::Moose for Fedora packaging (RSRCHBOY) - Finally a sensible synopsis (Sartak) - More examples are always good :) (Sartak) 0.10 2009-06-25 - Fix test that now warns in Moose (Sartak) 0.09 2009-06-14 - Give all modules a version number (Sartak) 0.08 2009-06-14 - Fix mis-packaging :) (Sartak) 0.07 2009-06-14 - Leave the jules nest for github (Sartak) - Switch to Module::Install (Sartak) 0.06 2009-05-12 - Fix long-standing role-role combination bug, reported by several users (Sartak) - Documentation improvements (Sartak) 0.05 2009-04-24 - Use replace_constructor in Meta::Parameter's make_immutable (nothingmuch) - The & prototype hack has been obviated by Moose::Exporter goodness (rafl) - List examples of MooseX::Role::Parameterized roles (Sartak) 0.04 2009-01-30 - The role block now receives as an argument the consuming class or role. 0.03 2009-01-17 - Parameters now default to read-only, so that you no longer have to specify the extremely common case of: is => 'ro' 0.02 2008-12-09 - Using keywords outside of the role block is now allowed and handled. - The role generated by the role block is now composed with its parent role. This is so you can have unparameterized components to your parameterized roles, and so that does_role returns true if you ask about the parent role (instead of the anonymous parameterized role). LICENSE100644000766000024 4366013513224542 17053 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11This software is copyright (c) 2008 by Shawn M Moore. 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) 2008 by Shawn M Moore. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2008 by Shawn M Moore. 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 INSTALL100644000766000024 456113513224542 17054 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11This is the Perl distribution MooseX-Role-Parameterized. Installing MooseX-Role-Parameterized is straightforward. ## Installation with cpanm If you have cpanm, you only need one line: % cpanm MooseX::Role::Parameterized If it does not have permission to install modules to the current perl, cpanm will automatically set up and install to a local::lib in your home directory. See the local::lib documentation (https://metacpan.org/pod/local::lib) for details on enabling it in your environment. ## Installing with the CPAN shell Alternatively, if your CPAN shell is set up, you should just be able to do: % cpan MooseX::Role::Parameterized ## Manual installation As a last resort, you can manually install it. Download the tarball, untar it, install configure prerequisites (see below), then build it: % perl Build.PL % ./Build && ./Build test Then install it: % ./Build install Or the more portable variation: % perl Build.PL % perl Build % perl Build test % perl Build install If your perl is system-managed, you can create a local::lib in your home directory to install modules to. For details, see the local::lib documentation: https://metacpan.org/pod/local::lib The prerequisites of this distribution will also have to be installed manually. The prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated by running the manual build process described above. ## Configure Prerequisites This distribution requires other modules to be installed before this distribution's installer can be run. They can be found under the "configure_requires" key of META.yml or the "{prereqs}{configure}{requires}" key of META.json. ## Other Prerequisites This distribution may require additional modules to be installed after running Build.PL or Makefile.PL. Look for prerequisites in the following phases: * to run ./Build or make, PHASE = build * to use the module code itself, PHASE = runtime * to run tests, PHASE = test They can all be found in the "PHASE_requires" key of MYMETA.yml or the "{prereqs}{PHASE}{requires}" key of MYMETA.json. ## Documentation MooseX-Role-Parameterized documentation is available as POD. You can run `perldoc` from a shell to read the documentation: % perldoc MooseX::Role::Parameterized For more information on installing Perl modules via CPAN, please see: https://www.cpan.org/modules/INSTALL.html dist.ini100600000766000024 170713513224542 17456 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11name = MooseX-Role-Parameterized author = Shawn M Moore license = Perl_5 copyright_holder = Shawn M Moore copyright_year = 2008 [@Author::ETHER] :version = 0.117 authority = cpan:SARTAK -remove = Test::PodSpelling ; TODO -remove = Test::Pod::No404s ; Several of the blog articles we link to return 404 for bots :( AutoPrereqs.skip[0] = ^(?:My|Other|Foo|t) AutoPrereqs.skip[1] = ^P::Role$ AutoPrereqs.skip[2] = ^Test::Consumer$ Test::ReportPrereqs.include = Dist::CheckConflicts Test::MinimumVersion.max_target_perl = 5.008003 StaticInstall.dry_run = 0 ; we can safely set this here [Prereqs / DevelopRequires] MooseX::Role::WithOverloading = 0.14 ; t/200-cooperative.t [MetaResources] x_IRC = irc://irc.perl.org/#moose x_MailingList = http://lists.perl.org/list/moose.html [Breaks] MooseX::Storage = <= 0.46 [Test::CheckBreaks] :version = 0.017 conflicts_module = Moose::Conflicts conflicts_module = Module::Runtime::Conflicts META.yml100644000766000024 7243113513224542 17315 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11--- abstract: 'Moose roles with composition parameters' author: - 'Shawn M Moore ' build_requires: CPAN::Meta::Check: '0.011' CPAN::Meta::Requirements: '0' Data::Dumper: '0' File::Spec: '0' Module::Metadata: '0' Moose::Util::TypeConstraints: '0' Storable: '0' Test::Fatal: '0' Test::Moose: '0' Test::More: '0.96' Test::Needs: '0' lib: '0' overload: '0' perl: '5.008001' configure_requires: ExtUtils::MakeMaker: '0' Module::Build::Tiny: '0.034' perl: '5.008001' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.013, CPAN::Meta::Converter version 2.150010' keywords: - moose - extension - parameter - role - arguments - dynamic - parameterised - parameterizable - parameterisable license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: MooseX-Role-Parameterized no_index: directory: - t - xt provides: MooseX::Role::Parameterised: file: lib/MooseX/Role/Parameterised.pm version: '1.11' MooseX::Role::Parameterized: file: lib/MooseX/Role/Parameterized.pm version: '1.11' MooseX::Role::Parameterized::Meta::Role::Parameterized: file: lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm version: '1.11' MooseX::Role::Parameterized::Meta::Trait::Parameterizable: file: lib/MooseX/Role/Parameterized/Meta/Trait/Parameterizable.pm version: '1.11' MooseX::Role::Parameterized::Meta::Trait::Parameterized: file: lib/MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm version: '1.11' MooseX::Role::Parameterized::Parameters: file: lib/MooseX/Role/Parameterized/Parameters.pm version: '1.11' requires: Carp: '0' Module::Runtime: '0' Moose: '2.0300' Moose::Exporter: '0' Moose::Meta::Role: '0' Moose::Role: '0' Moose::Util: '0' namespace::autoclean: '0' namespace::clean: '0.19' perl: '5.008001' strict: '0' warnings: '0' resources: IRC: irc://irc.perl.org/#moose MailingList: http://lists.perl.org/list/moose.html bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Role-Parameterized homepage: https://github.com/moose/MooseX-Role-Parameterized repository: https://github.com/moose/MooseX-Role-Parameterized.git version: '1.11' x_Dist_Zilla: perl: version: '5.031001' plugins: - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: recommends name: '@Author::ETHER/pluginbundle version' version: '6.013' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 0 check_all_prereqs: 0 modules: - Dist::Zilla::PluginBundle::Author::ETHER phase: build run_under_travis: 0 skip: [] name: '@Author::ETHER/stale modules, build' version: '0.055' - class: Dist::Zilla::Plugin::FileFinder::ByName name: '@Author::ETHER/Examples' version: '6.013' - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: - CONTRIBUTING - INSTALL - LICENSE - README.pod exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@Author::ETHER/Git::GatherDir' version: '2.046' - class: Dist::Zilla::Plugin::MetaYAML name: '@Author::ETHER/MetaYAML' version: '6.013' - class: Dist::Zilla::Plugin::MetaJSON name: '@Author::ETHER/MetaJSON' version: '6.013' - class: Dist::Zilla::Plugin::Readme name: '@Author::ETHER/Readme' version: '6.013' - class: Dist::Zilla::Plugin::Manifest name: '@Author::ETHER/Manifest' version: '6.013' - class: Dist::Zilla::Plugin::License name: '@Author::ETHER/License' version: '6.013' - class: Dist::Zilla::Plugin::GenerateFile::FromShareDir config: Dist::Zilla::Plugin::GenerateFile::FromShareDir: destination_filename: CONTRIBUTING dist: Dist-Zilla-PluginBundle-Author-ETHER encoding: UTF-8 has_xs: 0 location: build source_filename: CONTRIBUTING Dist::Zilla::Role::RepoFileInjector: allow_overwrite: 1 repo_root: . version: '0.009' name: '@Author::ETHER/generate CONTRIBUTING' version: '0.014' - class: Dist::Zilla::Plugin::InstallGuide config: Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000036' version: '0.006' name: '@Author::ETHER/InstallGuide' version: '1.200013' - class: Dist::Zilla::Plugin::Test::Compile config: Dist::Zilla::Plugin::Test::Compile: bail_out_on_fail: '1' fail_on_warning: author fake_home: 0 filename: xt/author/00-compile.t module_finder: - ':InstallModules' needs_display: 0 phase: develop script_finder: - ':PerlExecFiles' - '@Author::ETHER/Examples' skips: [] switch: [] name: '@Author::ETHER/Test::Compile' version: '2.058' - class: Dist::Zilla::Plugin::Test::NoTabs config: Dist::Zilla::Plugin::Test::NoTabs: filename: xt/author/no-tabs.t finder: - ':InstallModules' - ':ExecFiles' - '@Author::ETHER/Examples' - ':TestFiles' - ':ExtraTestFiles' name: '@Author::ETHER/Test::NoTabs' version: '0.15' - class: Dist::Zilla::Plugin::Test::EOL config: Dist::Zilla::Plugin::Test::EOL: filename: xt/author/eol.t finder: - ':ExecFiles' - ':ExtraTestFiles' - ':InstallModules' - ':TestFiles' - '@Author::ETHER/Examples' trailing_whitespace: 1 name: '@Author::ETHER/Test::EOL' version: '0.19' - class: Dist::Zilla::Plugin::MetaTests name: '@Author::ETHER/MetaTests' version: '6.013' - class: Dist::Zilla::Plugin::Test::CPAN::Changes config: Dist::Zilla::Plugin::Test::CPAN::Changes: changelog: Changes name: '@Author::ETHER/Test::CPAN::Changes' version: '0.012' - class: Dist::Zilla::Plugin::GenerateFile::FromShareDir config: Dist::Zilla::Plugin::GenerateFile::FromShareDir: destination_filename: xt/author/changes_has_content.t dist: Dist-Zilla-PluginBundle-Author-ETHER encoding: UTF-8 location: build source_filename: changes_has_content.t Dist::Zilla::Role::RepoFileInjector: allow_overwrite: 1 repo_root: . version: '0.009' name: '@Author::ETHER/generate xt/author/changes_has_content.t' version: '0.014' - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@Author::ETHER/Test::ChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::Test::MinimumVersion config: Dist::Zilla::Plugin::Test::MinimumVersion: max_target_perl: '5.008003' name: '@Author::ETHER/Test::MinimumVersion' version: '2.000010' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@Author::ETHER/PodSyntaxTests' version: '6.013' - class: Dist::Zilla::Plugin::PodCoverageTests name: '@Author::ETHER/PodCoverageTests' version: '6.013' - class: Dist::Zilla::Plugin::Test::Kwalitee config: Dist::Zilla::Plugin::Test::Kwalitee: filename: xt/author/kwalitee.t skiptest: [] name: '@Author::ETHER/Test::Kwalitee' version: '2.12' - class: Dist::Zilla::Plugin::MojibakeTests name: '@Author::ETHER/MojibakeTests' version: '0.8' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@Author::ETHER/Test::ReportPrereqs' version: '0.027' - class: Dist::Zilla::Plugin::Test::Portability config: Dist::Zilla::Plugin::Test::Portability: options: '' name: '@Author::ETHER/Test::Portability' version: '2.001000' - class: Dist::Zilla::Plugin::Test::CleanNamespaces config: Dist::Zilla::Plugin::Test::CleanNamespaces: filename: xt/author/clean-namespaces.t skips: [] name: '@Author::ETHER/Test::CleanNamespaces' version: '0.006' - class: Dist::Zilla::Plugin::Git::Describe name: '@Author::ETHER/Git::Describe' version: '0.007' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: config_plugins: - '@Author::ETHER' finder: - ':InstallModules' - ':ExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@Author::ETHER/EnsurePod5' version: '4.015' - class: Pod::Weaver::Plugin::H1Nester name: '@Author::ETHER/H1Nester' version: '4.015' - class: Pod::Weaver::Plugin::SingleEncoding name: '@Author::ETHER/SingleEncoding' version: '4.015' - class: Pod::Weaver::Plugin::Transformer name: '@Author::ETHER/List' version: '4.015' - class: Pod::Weaver::Plugin::Transformer name: '@Author::ETHER/Verbatim' version: '4.015' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/header' version: '4.015' - class: Pod::Weaver::Section::Name name: '@Author::ETHER/Name' version: '4.015' - class: Pod::Weaver::Section::Version name: '@Author::ETHER/Version' version: '4.015' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/prelude' version: '4.015' - class: Pod::Weaver::Section::Generic name: SYNOPSIS version: '4.015' - class: Pod::Weaver::Section::Generic name: DESCRIPTION version: '4.015' - class: Pod::Weaver::Section::Generic name: OVERVIEW version: '4.015' - class: Pod::Weaver::Section::Collect name: ATTRIBUTES version: '4.015' - class: Pod::Weaver::Section::Collect name: METHODS version: '4.015' - class: Pod::Weaver::Section::Collect name: FUNCTIONS version: '4.015' - class: Pod::Weaver::Section::Collect name: TYPES version: '4.015' - class: Pod::Weaver::Section::Leftovers name: '@Author::ETHER/Leftovers' version: '4.015' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/postlude' version: '4.015' - class: Pod::Weaver::Section::GenerateSection name: '@Author::ETHER/generate SUPPORT' version: '1.06' - class: Pod::Weaver::Section::AllowOverride name: '@Author::ETHER/allow override SUPPORT' version: '0.05' - class: Pod::Weaver::Section::Authors name: '@Author::ETHER/Authors' version: '4.015' - class: Pod::Weaver::Section::AllowOverride name: '@Author::ETHER/allow override AUTHOR' version: '0.05' - class: Pod::Weaver::Section::Contributors name: '@Author::ETHER/Contributors' version: '0.009' - class: Pod::Weaver::Section::Legal name: '@Author::ETHER/Legal' version: '4.015' - class: Pod::Weaver::Section::Region name: '@Author::ETHER/footer' version: '4.015' name: '@Author::ETHER/PodWeaver' version: '4.008' - class: Dist::Zilla::Plugin::GithubMeta name: '@Author::ETHER/GithubMeta' version: '0.58' - class: Dist::Zilla::Plugin::AutoMetaResources name: '@Author::ETHER/AutoMetaResources' version: '1.21' - class: Dist::Zilla::Plugin::Authority name: '@Author::ETHER/Authority' version: '1.009' - class: Dist::Zilla::Plugin::MetaNoIndex name: '@Author::ETHER/MetaNoIndex' version: '6.013' - class: Dist::Zilla::Plugin::MetaProvides::Package config: Dist::Zilla::Plugin::MetaProvides::Package: finder: - ':InstallModules' finder_objects: - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.013' include_underscores: 0 Dist::Zilla::Role::MetaProvider::Provider: $Dist::Zilla::Role::MetaProvider::Provider::VERSION: '2.002004' inherit_missing: '0' inherit_version: '0' meta_noindex: '1' Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000036' version: '0.006' name: '@Author::ETHER/MetaProvides::Package' version: '2.004003' - class: Dist::Zilla::Plugin::MetaConfig name: '@Author::ETHER/MetaConfig' version: '6.013' - class: Dist::Zilla::Plugin::Keywords config: Dist::Zilla::Plugin::Keywords: keywords: - moose - extension - parameter - role - arguments - dynamic - parameterised - parameterizable - parameterisable name: '@Author::ETHER/Keywords' version: '0.007' - class: Dist::Zilla::Plugin::UseUnsafeInc config: Dist::Zilla::Plugin::UseUnsafeInc: dot_in_INC: 0 name: '@Author::ETHER/UseUnsafeInc' version: '0.001' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@Author::ETHER/AutoPrereqs' version: '6.013' - class: Dist::Zilla::Plugin::Prereqs::AuthorDeps name: '@Author::ETHER/Prereqs::AuthorDeps' version: '0.006' - class: Dist::Zilla::Plugin::MinimumPerl name: '@Author::ETHER/MinimumPerl' version: '1.006' - class: Dist::Zilla::Plugin::MakeMaker::Fallback config: Dist::Zilla::Plugin::MakeMaker: make_path: make version: '6.013' Dist::Zilla::Plugin::MakeMaker::Awesome: version: '0.48' Dist::Zilla::Plugin::MakeMaker::Fallback: skip_release_testing: 0 Dist::Zilla::Role::TestRunner: default_jobs: 9 version: '6.013' name: '@Author::ETHER/MakeMaker::Fallback' version: '0.030' - class: Dist::Zilla::Plugin::ModuleBuildTiny::Fallback config: Dist::Zilla::Plugin::ModuleBuildTiny::Fallback: mb_version: '0.28' plugins: - class: Dist::Zilla::Plugin::ModuleBuild config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: 'ModuleBuild, via ModuleBuildTiny::Fallback' version: '6.013' - class: Dist::Zilla::Plugin::ModuleBuildTiny config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: 'ModuleBuildTiny, via ModuleBuildTiny::Fallback' version: '0.015' Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@Author::ETHER/ModuleBuildTiny::Fallback' version: '0.025' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: git_version: 2.19.1 include_authors: 0 include_releaser: 1 order_by: commits paths: [] name: '@Author::ETHER/Git::Contributors' version: '0.035' - class: Dist::Zilla::Plugin::StaticInstall config: Dist::Zilla::Plugin::StaticInstall: dry_run: 0 mode: auto name: '@Author::ETHER/StaticInstall' version: '0.012' - class: Dist::Zilla::Plugin::RunExtraTests config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@Author::ETHER/RunExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::CheckSelfDependency config: Dist::Zilla::Plugin::CheckSelfDependency: finder: - ':InstallModules' Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000036' version: '0.006' name: '@Author::ETHER/CheckSelfDependency' version: '0.011' - class: Dist::Zilla::Plugin::Run::AfterBuild config: Dist::Zilla::Plugin::Run::Role::Runner: fatal_errors: 1 quiet: 1 run: - "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\"" version: '0.048' name: '@Author::ETHER/.ackrc' version: '0.048' - class: Dist::Zilla::Plugin::Run::AfterBuild config: Dist::Zilla::Plugin::Run::Role::Runner: eval: - "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }" fatal_errors: 0 quiet: 1 version: '0.048' name: '@Author::ETHER/.latest' version: '0.048' - class: Dist::Zilla::Plugin::CheckStrictVersion name: '@Author::ETHER/CheckStrictVersion' version: '0.001' - class: Dist::Zilla::Plugin::CheckMetaResources name: '@Author::ETHER/CheckMetaResources' version: '0.001' - class: Dist::Zilla::Plugin::EnsureLatestPerl config: Dist::Zilla::Plugin::EnsureLatestPerl: Module::CoreList: '5.20190620' name: '@Author::ETHER/EnsureLatestPerl' version: '0.008' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 1 modules: [] phase: release run_under_travis: 0 skip: [] name: '@Author::ETHER/stale modules, release' version: '0.055' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: [] allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . name: '@Author::ETHER/initial check' version: '2.046' - class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts config: Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . name: '@Author::ETHER/Git::CheckFor::MergeConflicts' version: '0.014' - class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch config: Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . name: '@Author::ETHER/Git::CheckFor::CorrectBranch' version: '0.014' - class: Dist::Zilla::Plugin::Git::Remote::Check name: '@Author::ETHER/Git::Remote::Check' version: 0.1.2 - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@Author::ETHER/CheckPrereqsIndexed' version: '0.020' - class: Dist::Zilla::Plugin::TestRelease name: '@Author::ETHER/TestRelease' version: '6.013' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: [] allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . name: '@Author::ETHER/after tests' version: '2.046' - class: Dist::Zilla::Plugin::CheckIssues name: '@Author::ETHER/CheckIssues' version: '0.010' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@Author::ETHER/UploadToCPAN' version: '6.013' - class: Dist::Zilla::Plugin::CopyFilesFromRelease config: Dist::Zilla::Plugin::CopyFilesFromRelease: filename: - CONTRIBUTING - INSTALL - LICENCE - LICENSE - ppport.h match: [] name: '@Author::ETHER/copy generated files' version: '0.006' - class: Dist::Zilla::Plugin::ReadmeAnyFromPod config: Dist::Zilla::Role::FileWatcher: version: '0.006' name: '@Author::ETHER/ReadmeAnyFromPod' version: '0.163250' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: recommends name: '@Author::ETHER/@Git::VersionManager/pluginbundle version' version: '6.013' - class: Dist::Zilla::Plugin::RewriteVersion::Transitional config: Dist::Zilla::Plugin::RewriteVersion: add_tarball_name: 0 finders: - ':ExecFiles' - ':InstallModules' global: 1 skip_version_provider: 0 Dist::Zilla::Plugin::RewriteVersion::Transitional: {} name: '@Author::ETHER/@Git::VersionManager/RewriteVersion::Transitional' version: '0.009' - class: Dist::Zilla::Plugin::MetaProvides::Update name: '@Author::ETHER/@Git::VersionManager/MetaProvides::Update' version: '0.007' - class: Dist::Zilla::Plugin::CopyFilesFromRelease config: Dist::Zilla::Plugin::CopyFilesFromRelease: filename: - Changes match: [] name: '@Author::ETHER/@Git::VersionManager/CopyFilesFromRelease' version: '0.006' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: - . commit_msg: '%N-%v%t%n%n%c' Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - CONTRIBUTING - Changes - INSTALL - LICENSE - README.pod allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::ETHER/@Git::VersionManager/release snapshot' version: '2.046' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: v1.11 tag_format: v%V tag_message: v%v%t Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::ETHER/@Git::VersionManager/Git::Tag' version: '2.046' - class: Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional config: Dist::Zilla::Plugin::BumpVersionAfterRelease: finders: - ':ExecFiles' - ':InstallModules' global: 1 munge_makefile_pl: 1 Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional: {} name: '@Author::ETHER/@Git::VersionManager/BumpVersionAfterRelease::Transitional' version: '0.009' - class: Dist::Zilla::Plugin::NextRelease name: '@Author::ETHER/@Git::VersionManager/NextRelease' version: '6.013' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: 'increment $VERSION after %v release' Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Build.PL - Changes - Makefile.PL allow_dirty_match: - (?^:^lib/.*\.pm$) changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::ETHER/@Git::VersionManager/post-release commit' version: '2.046' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: x_Dist_Zilla type: requires name: '@Author::ETHER/@Git::VersionManager/prereqs for @Git::VersionManager' version: '6.013' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - origin remotes_must_exist: 1 Dist::Zilla::Role::Git::Repo: git_version: 2.19.1 repo_root: . name: '@Author::ETHER/Git::Push' version: '2.046' - class: Dist::Zilla::Plugin::GitHub::Update config: Dist::Zilla::Plugin::GitHub::Update: metacpan: 1 name: '@Author::ETHER/GitHub::Update' version: '0.47' - class: Dist::Zilla::Plugin::Run::AfterRelease config: Dist::Zilla::Plugin::Run::Role::Runner: fatal_errors: 0 quiet: 0 run: - REDACTED version: '0.048' name: '@Author::ETHER/install release' version: '0.048' - class: Dist::Zilla::Plugin::Run::AfterRelease config: Dist::Zilla::Plugin::Run::Role::Runner: eval: - 'print "release complete!\xa"' fatal_errors: 1 quiet: 1 version: '0.048' name: '@Author::ETHER/release complete' version: '0.048' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@Author::ETHER/ConfirmRelease' version: '6.013' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: x_Dist_Zilla type: requires name: '@Author::ETHER/prereqs for @Author::ETHER' version: '6.013' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: requires name: DevelopRequires version: '6.013' - class: Dist::Zilla::Plugin::MetaResources name: MetaResources version: '6.013' - class: Dist::Zilla::Plugin::Breaks name: Breaks version: '0.004' - class: Dist::Zilla::Plugin::Test::CheckBreaks config: Dist::Zilla::Plugin::Test::CheckBreaks: conflicts_module: - Module::Runtime::Conflicts - Moose::Conflicts no_forced_deps: 0 Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000036' version: '0.006' name: Test::CheckBreaks version: '0.019' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.013' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.013' - class: Dist::Zilla::Plugin::VerifyPhases name: '@Author::ETHER/PHASE VERIFICATION' version: '0.016' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' version: '6.013' x_authority: cpan:SARTAK x_breaks: MooseX::Storage: '<= 0.46' x_contributors: - 'Karen Etheridge ' - 'Dave Rolsky ' - 'Jesse Luehrs ' - 'Oliver Charles ' - 'Yuval Kogman ' - "Robert 'phaylon' Sedlacek " - 'Florian Ragwitz ' - 'Mark Fowler ' - 'Chris Weyl ' - 'Csson ' - 'Andy Jack ' - 'Ricardo Signes ' - 'Todd Hepler ' x_generated_by_perl: v5.31.1 x_serialization_backend: 'YAML::Tiny version 1.73' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' x_static_install: 1 x_use_unsafe_inc: 0 MANIFEST100644000766000024 311213513224542 17143 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.013. Build.PL CONTRIBUTING Changes INSTALL LICENSE MANIFEST META.json META.yml Makefile.PL README dist.ini lib/MooseX/Role/Parameterised.pm lib/MooseX/Role/Parameterized.pm lib/MooseX/Role/Parameterized/Extending.pod lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm lib/MooseX/Role/Parameterized/Meta/Trait/Parameterizable.pm lib/MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm lib/MooseX/Role/Parameterized/Parameters.pm lib/MooseX/Role/Parameterized/Tutorial.pod t/00-report-prereqs.dd t/00-report-prereqs.t t/001-parameters.t t/002-role-block.t t/003-apply.t t/004-with.t t/005-with-parameterized.t t/006-requires.t t/007-excludes.t t/008-method-modifers.t t/009-override-super.t t/010-blessed-confess.t t/011-reference-parameters.t t/012-rename-role.t t/013-does.t t/014-compose-parameterizable.t t/015-compose-keywords.t t/016-trait.t t/017-current_metaclass.t t/018-parameter-roles.t t/020-metaclass-reinitialize.t t/021-parameter-trait.t t/022-export-p-trait.t t/023-metarole-import-params.t t/024-named-anonymous.t t/100-erroneous-keywords.t t/101-alias-excludes.t t/102-nested.t t/150-composite-role-application.t t/200-cooperative.t t/lib/Bar.pm t/zzz-check-breaks.t xt/author/00-compile.t xt/author/changes_has_content.t xt/author/clean-namespaces.t xt/author/eol.t xt/author/kwalitee.t xt/author/minimum-version.t xt/author/mojibake.t xt/author/no-tabs.t xt/author/pod-coverage.t xt/author/pod-syntax.t xt/author/portability.t xt/release/changes_has_content.t xt/release/cpan-changes.t xt/release/distmeta.t Build.PL100644000766000024 1054513513224542 17336 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11# This Build.PL for MooseX-Role-Parameterized was generated by # Dist::Zilla::Plugin::ModuleBuildTiny::Fallback 0.025 use strict; use warnings; my %configure_requires = ( 'ExtUtils::MakeMaker' => '0', 'Module::Build::Tiny' => '0.034', ); my %errors = map { eval "require $_; $_->VERSION($configure_requires{$_}); 1"; $_ => $@, } keys %configure_requires; if (!grep { $_ } values %errors) { # This section for MooseX-Role-Parameterized was generated by Dist::Zilla::Plugin::ModuleBuildTiny 0.015. use strict; use warnings; use 5.008001; # use Module::Build::Tiny 0.034; Module::Build::Tiny::Build_PL(); } else { if (not $ENV{PERL_MB_FALLBACK_SILENCE_WARNING}) { warn <<'EOW' *** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING *** If you're seeing this warning, your toolchain is really, really old* and you'll almost certainly have problems installing CPAN modules from this century. But never fear, dear user, for we have the technology to fix this! If you're using CPAN.pm to install things, then you can upgrade it using: cpan CPAN If you're using CPANPLUS to install things, then you can upgrade it using: cpanp CPANPLUS If you're using cpanminus, you shouldn't be seeing this message in the first place, so please file an issue on github. This public service announcement was brought to you by the Perl Toolchain Gang, the irc.perl.org #toolchain IRC channel, and the number 42. ---- * Alternatively, you are running this file manually, in which case you need to learn to first fulfill all configure requires prerequisites listed in META.yml or META.json -- or use a cpan client to install this distribution. You can also silence this warning for future installations by setting the PERL_MB_FALLBACK_SILENCE_WARNING environment variable, but please don't do that until you fix your toolchain as described above. Errors from configure prereqs: EOW . do { require Data::Dumper; Data::Dumper->new([ \%errors ])->Indent(2)->Terse(1)->Sortkeys(1)->Dump; }; sleep 10 if -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)); } # This section was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.013. use strict; use warnings; require Module::Build; Module::Build->VERSION(0.28); my %module_build_args = ( "configure_requires" => { "ExtUtils::MakeMaker" => 0, "Module::Build::Tiny" => "0.034", "perl" => "5.008001" }, "dist_abstract" => "Moose roles with composition parameters", "dist_author" => [ "Shawn M Moore " ], "dist_name" => "MooseX-Role-Parameterized", "dist_version" => "1.11", "license" => "perl", "module_name" => "MooseX::Role::Parameterized", "recursive_test_files" => 1, "requires" => { "Carp" => 0, "Module::Runtime" => 0, "Moose" => "2.0300", "Moose::Exporter" => 0, "Moose::Meta::Role" => 0, "Moose::Role" => 0, "Moose::Util" => 0, "namespace::autoclean" => 0, "namespace::clean" => "0.19", "perl" => "5.008001", "strict" => 0, "warnings" => 0 }, "test_requires" => { "CPAN::Meta::Check" => "0.011", "CPAN::Meta::Requirements" => 0, "Data::Dumper" => 0, "File::Spec" => 0, "Module::Metadata" => 0, "Moose::Util::TypeConstraints" => 0, "Storable" => 0, "Test::Fatal" => 0, "Test::Moose" => 0, "Test::More" => "0.96", "Test::Needs" => 0, "lib" => 0, "overload" => 0, "perl" => "5.008001" } ); my %fallback_build_requires = ( "CPAN::Meta::Check" => "0.011", "CPAN::Meta::Requirements" => 0, "Data::Dumper" => 0, "File::Spec" => 0, "Module::Metadata" => 0, "Moose::Util::TypeConstraints" => 0, "Storable" => 0, "Test::Fatal" => 0, "Test::Moose" => 0, "Test::More" => "0.96", "Test::Needs" => 0, "lib" => 0, "overload" => 0, "perl" => "5.008001" ); unless ( eval { Module::Build->VERSION(0.4004) } ) { delete $module_build_args{test_requires}; $module_build_args{build_requires} = \%fallback_build_requires; } my $build = Module::Build->new(%module_build_args); $build->create_build_script; } META.json100644000766000024 14301313513224542 17500 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11{ "abstract" : "Moose roles with composition parameters", "author" : [ "Shawn M Moore " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.013, CPAN::Meta::Converter version 2.150010", "keywords" : [ "moose", "extension", "parameter", "role", "arguments", "dynamic", "parameterised", "parameterizable", "parameterisable" ], "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "MooseX-Role-Parameterized", "no_index" : { "directory" : [ "t", "xt" ] }, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0", "Module::Build::Tiny" : "0.034", "perl" : "5.008001" } }, "develop" : { "recommends" : { "Dist::Zilla::PluginBundle::Author::ETHER" : "0.149", "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007" }, "requires" : { "Encode" : "0", "File::Spec" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "MooseX::Role::WithOverloading" : "0.14", "Pod::Coverage::TrustPod" : "0", "Test::CPAN::Changes" : "0.19", "Test::CPAN::Meta" : "0", "Test::CleanNamespaces" : "0.15", "Test::EOL" : "0", "Test::Kwalitee" : "1.21", "Test::MinimumVersion" : "0", "Test::Mojibake" : "0", "Test::More" : "0.96", "Test::NoTabs" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage" : "1.08", "Test::Portability::Files" : "0" } }, "runtime" : { "requires" : { "Carp" : "0", "Module::Runtime" : "0", "Moose" : "2.0300", "Moose::Exporter" : "0", "Moose::Meta::Role" : "0", "Moose::Role" : "0", "Moose::Util" : "0", "namespace::autoclean" : "0", "namespace::clean" : "0.19", "perl" : "5.008001", "strict" : "0", "warnings" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "CPAN::Meta::Check" : "0.011", "CPAN::Meta::Requirements" : "0", "Data::Dumper" : "0", "File::Spec" : "0", "Module::Metadata" : "0", "Moose::Util::TypeConstraints" : "0", "Storable" : "0", "Test::Fatal" : "0", "Test::Moose" : "0", "Test::More" : "0.96", "Test::Needs" : "0", "lib" : "0", "overload" : "0", "perl" : "5.008001" } }, "x_Dist_Zilla" : { "requires" : { "Dist::Zilla" : "5", "Dist::Zilla::Plugin::Authority" : "1.009", "Dist::Zilla::Plugin::AutoMetaResources" : "0", "Dist::Zilla::Plugin::AutoPrereqs" : "5.038", "Dist::Zilla::Plugin::Breaks" : "0", "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : "0.004", "Dist::Zilla::Plugin::CheckIssues" : "0", "Dist::Zilla::Plugin::CheckMetaResources" : "0", "Dist::Zilla::Plugin::CheckPrereqsIndexed" : "0.019", "Dist::Zilla::Plugin::CheckSelfDependency" : "0", "Dist::Zilla::Plugin::CheckStrictVersion" : "0", "Dist::Zilla::Plugin::ConfirmRelease" : "0", "Dist::Zilla::Plugin::CopyFilesFromRelease" : "0", "Dist::Zilla::Plugin::EnsureLatestPerl" : "0", "Dist::Zilla::Plugin::FileFinder::ByName" : "0", "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : "0", "Dist::Zilla::Plugin::Git::Check" : "0", "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" : "0.004", "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts" : "0", "Dist::Zilla::Plugin::Git::Commit" : "2.020", "Dist::Zilla::Plugin::Git::Contributors" : "0.029", "Dist::Zilla::Plugin::Git::Describe" : "0.004", "Dist::Zilla::Plugin::Git::GatherDir" : "2.016", "Dist::Zilla::Plugin::Git::Push" : "0", "Dist::Zilla::Plugin::Git::Remote::Check" : "0", "Dist::Zilla::Plugin::Git::Tag" : "0", "Dist::Zilla::Plugin::GitHub::Update" : "0.40", "Dist::Zilla::Plugin::GithubMeta" : "0.54", "Dist::Zilla::Plugin::InstallGuide" : "1.200005", "Dist::Zilla::Plugin::Keywords" : "0.004", "Dist::Zilla::Plugin::License" : "5.038", "Dist::Zilla::Plugin::MakeMaker::Fallback" : "0.029", "Dist::Zilla::Plugin::Manifest" : "0", "Dist::Zilla::Plugin::MetaConfig" : "0", "Dist::Zilla::Plugin::MetaJSON" : "0", "Dist::Zilla::Plugin::MetaNoIndex" : "0", "Dist::Zilla::Plugin::MetaProvides::Package" : "1.15000002", "Dist::Zilla::Plugin::MetaResources" : "0", "Dist::Zilla::Plugin::MetaTests" : "0", "Dist::Zilla::Plugin::MetaYAML" : "0", "Dist::Zilla::Plugin::MinimumPerl" : "1.006", "Dist::Zilla::Plugin::ModuleBuildTiny::Fallback" : "0.018", "Dist::Zilla::Plugin::MojibakeTests" : "0.8", "Dist::Zilla::Plugin::NextRelease" : "5.033", "Dist::Zilla::Plugin::PodCoverageTests" : "5.040", "Dist::Zilla::Plugin::PodSyntaxTests" : "5.040", "Dist::Zilla::Plugin::PodWeaver" : "4.005", "Dist::Zilla::Plugin::Prereqs" : "0", "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "0.006", "Dist::Zilla::Plugin::PromptIfStale" : "0", "Dist::Zilla::Plugin::Readme" : "0", "Dist::Zilla::Plugin::ReadmeAnyFromPod" : "0.142180", "Dist::Zilla::Plugin::RewriteVersion::Transitional" : "0.004", "Dist::Zilla::Plugin::Run::AfterBuild" : "0.041", "Dist::Zilla::Plugin::Run::AfterRelease" : "0.038", "Dist::Zilla::Plugin::RunExtraTests" : "0.024", "Dist::Zilla::Plugin::StaticInstall" : "0.005", "Dist::Zilla::Plugin::Test::CPAN::Changes" : "0.012", "Dist::Zilla::Plugin::Test::ChangesHasContent" : "0", "Dist::Zilla::Plugin::Test::CheckBreaks" : "0.017", "Dist::Zilla::Plugin::Test::CleanNamespaces" : "0.006", "Dist::Zilla::Plugin::Test::Compile" : "2.039", "Dist::Zilla::Plugin::Test::EOL" : "0.17", "Dist::Zilla::Plugin::Test::Kwalitee" : "2.10", "Dist::Zilla::Plugin::Test::MinimumVersion" : "2.000010", "Dist::Zilla::Plugin::Test::NoTabs" : "0.08", "Dist::Zilla::Plugin::Test::Portability" : "2.000007", "Dist::Zilla::Plugin::Test::ReportPrereqs" : "0.022", "Dist::Zilla::Plugin::TestRelease" : "0", "Dist::Zilla::Plugin::UploadToCPAN" : "0", "Dist::Zilla::Plugin::UseUnsafeInc" : "0", "Dist::Zilla::PluginBundle::Author::ETHER" : "0.117", "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007", "Software::License::Perl_5" : "0" } } }, "provides" : { "MooseX::Role::Parameterised" : { "file" : "lib/MooseX/Role/Parameterised.pm", "version" : "1.11" }, "MooseX::Role::Parameterized" : { "file" : "lib/MooseX/Role/Parameterized.pm", "version" : "1.11" }, "MooseX::Role::Parameterized::Meta::Role::Parameterized" : { "file" : "lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm", "version" : "1.11" }, "MooseX::Role::Parameterized::Meta::Trait::Parameterizable" : { "file" : "lib/MooseX/Role/Parameterized/Meta/Trait/Parameterizable.pm", "version" : "1.11" }, "MooseX::Role::Parameterized::Meta::Trait::Parameterized" : { "file" : "lib/MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm", "version" : "1.11" }, "MooseX::Role::Parameterized::Parameters" : { "file" : "lib/MooseX/Role/Parameterized/Parameters.pm", "version" : "1.11" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "mailto" : "bug-MooseX-Role-Parameterized@rt.cpan.org", "web" : "https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Role-Parameterized" }, "homepage" : "https://github.com/moose/MooseX-Role-Parameterized", "repository" : { "type" : "git", "url" : "https://github.com/moose/MooseX-Role-Parameterized.git", "web" : "https://github.com/moose/MooseX-Role-Parameterized" }, "x_IRC" : "irc://irc.perl.org/#moose", "x_MailingList" : "http://lists.perl.org/list/moose.html" }, "version" : "1.11", "x_Dist_Zilla" : { "perl" : { "version" : "5.031001" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "recommends" } }, "name" : "@Author::ETHER/pluginbundle version", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 0, "check_all_prereqs" : 0, "modules" : [ "Dist::Zilla::PluginBundle::Author::ETHER" ], "phase" : "build", "run_under_travis" : 0, "skip" : [] } }, "name" : "@Author::ETHER/stale modules, build", "version" : "0.055" }, { "class" : "Dist::Zilla::Plugin::FileFinder::ByName", "name" : "@Author::ETHER/Examples", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [ "CONTRIBUTING", "INSTALL", "LICENSE", "README.pod" ], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@Author::ETHER/Git::GatherDir", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@Author::ETHER/MetaYAML", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@Author::ETHER/MetaJSON", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@Author::ETHER/Readme", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@Author::ETHER/Manifest", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@Author::ETHER/License", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir", "config" : { "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : { "destination_filename" : "CONTRIBUTING", "dist" : "Dist-Zilla-PluginBundle-Author-ETHER", "encoding" : "UTF-8", "has_xs" : 0, "location" : "build", "source_filename" : "CONTRIBUTING" }, "Dist::Zilla::Role::RepoFileInjector" : { "allow_overwrite" : 1, "repo_root" : ".", "version" : "0.009" } }, "name" : "@Author::ETHER/generate CONTRIBUTING", "version" : "0.014" }, { "class" : "Dist::Zilla::Plugin::InstallGuide", "config" : { "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000036", "version" : "0.006" } }, "name" : "@Author::ETHER/InstallGuide", "version" : "1.200013" }, { "class" : "Dist::Zilla::Plugin::Test::Compile", "config" : { "Dist::Zilla::Plugin::Test::Compile" : { "bail_out_on_fail" : 1, "fail_on_warning" : "author", "fake_home" : 0, "filename" : "xt/author/00-compile.t", "module_finder" : [ ":InstallModules" ], "needs_display" : 0, "phase" : "develop", "script_finder" : [ ":PerlExecFiles", "@Author::ETHER/Examples" ], "skips" : [], "switch" : [] } }, "name" : "@Author::ETHER/Test::Compile", "version" : "2.058" }, { "class" : "Dist::Zilla::Plugin::Test::NoTabs", "config" : { "Dist::Zilla::Plugin::Test::NoTabs" : { "filename" : "xt/author/no-tabs.t", "finder" : [ ":InstallModules", ":ExecFiles", "@Author::ETHER/Examples", ":TestFiles", ":ExtraTestFiles" ] } }, "name" : "@Author::ETHER/Test::NoTabs", "version" : "0.15" }, { "class" : "Dist::Zilla::Plugin::Test::EOL", "config" : { "Dist::Zilla::Plugin::Test::EOL" : { "filename" : "xt/author/eol.t", "finder" : [ ":ExecFiles", ":ExtraTestFiles", ":InstallModules", ":TestFiles", "@Author::ETHER/Examples" ], "trailing_whitespace" : 1 } }, "name" : "@Author::ETHER/Test::EOL", "version" : "0.19" }, { "class" : "Dist::Zilla::Plugin::MetaTests", "name" : "@Author::ETHER/MetaTests", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes", "config" : { "Dist::Zilla::Plugin::Test::CPAN::Changes" : { "changelog" : "Changes" } }, "name" : "@Author::ETHER/Test::CPAN::Changes", "version" : "0.012" }, { "class" : "Dist::Zilla::Plugin::GenerateFile::FromShareDir", "config" : { "Dist::Zilla::Plugin::GenerateFile::FromShareDir" : { "destination_filename" : "xt/author/changes_has_content.t", "dist" : "Dist-Zilla-PluginBundle-Author-ETHER", "encoding" : "UTF-8", "location" : "build", "source_filename" : "changes_has_content.t" }, "Dist::Zilla::Role::RepoFileInjector" : { "allow_overwrite" : 1, "repo_root" : ".", "version" : "0.009" } }, "name" : "@Author::ETHER/generate xt/author/changes_has_content.t", "version" : "0.014" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@Author::ETHER/Test::ChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::Test::MinimumVersion", "config" : { "Dist::Zilla::Plugin::Test::MinimumVersion" : { "max_target_perl" : 5.008003 } }, "name" : "@Author::ETHER/Test::MinimumVersion", "version" : "2.000010" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@Author::ETHER/PodSyntaxTests", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::PodCoverageTests", "name" : "@Author::ETHER/PodCoverageTests", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Test::Kwalitee", "config" : { "Dist::Zilla::Plugin::Test::Kwalitee" : { "filename" : "xt/author/kwalitee.t", "skiptest" : [] } }, "name" : "@Author::ETHER/Test::Kwalitee", "version" : "2.12" }, { "class" : "Dist::Zilla::Plugin::MojibakeTests", "name" : "@Author::ETHER/MojibakeTests", "version" : "0.8" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@Author::ETHER/Test::ReportPrereqs", "version" : "0.027" }, { "class" : "Dist::Zilla::Plugin::Test::Portability", "config" : { "Dist::Zilla::Plugin::Test::Portability" : { "options" : "" } }, "name" : "@Author::ETHER/Test::Portability", "version" : "2.001000" }, { "class" : "Dist::Zilla::Plugin::Test::CleanNamespaces", "config" : { "Dist::Zilla::Plugin::Test::CleanNamespaces" : { "filename" : "xt/author/clean-namespaces.t", "skips" : [] } }, "name" : "@Author::ETHER/Test::CleanNamespaces", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::Git::Describe", "name" : "@Author::ETHER/Git::Describe", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "config_plugins" : [ "@Author::ETHER" ], "finder" : [ ":InstallModules", ":ExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@Author::ETHER/EnsurePod5", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@Author::ETHER/H1Nester", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::SingleEncoding", "name" : "@Author::ETHER/SingleEncoding", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@Author::ETHER/List", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@Author::ETHER/Verbatim", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/header", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@Author::ETHER/Name", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Version", "name" : "@Author::ETHER/Version", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/prelude", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "SYNOPSIS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "DESCRIPTION", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "OVERVIEW", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "ATTRIBUTES", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "METHODS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "FUNCTIONS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "TYPES", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "@Author::ETHER/Leftovers", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/postlude", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@Author::ETHER/generate SUPPORT", "version" : "1.06" }, { "class" : "Pod::Weaver::Section::AllowOverride", "name" : "@Author::ETHER/allow override SUPPORT", "version" : "0.05" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "@Author::ETHER/Authors", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::AllowOverride", "name" : "@Author::ETHER/allow override AUTHOR", "version" : "0.05" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "@Author::ETHER/Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "@Author::ETHER/Legal", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Author::ETHER/footer", "version" : "4.015" } ] } }, "name" : "@Author::ETHER/PodWeaver", "version" : "4.008" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@Author::ETHER/GithubMeta", "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::AutoMetaResources", "name" : "@Author::ETHER/AutoMetaResources", "version" : "1.21" }, { "class" : "Dist::Zilla::Plugin::Authority", "name" : "@Author::ETHER/Authority", "version" : "1.009" }, { "class" : "Dist::Zilla::Plugin::MetaNoIndex", "name" : "@Author::ETHER/MetaNoIndex", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Package", "config" : { "Dist::Zilla::Plugin::MetaProvides::Package" : { "finder" : [ ":InstallModules" ], "finder_objects" : [ { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.013" } ], "include_underscores" : 0 }, "Dist::Zilla::Role::MetaProvider::Provider" : { "$Dist::Zilla::Role::MetaProvider::Provider::VERSION" : "2.002004", "inherit_missing" : 0, "inherit_version" : 0, "meta_noindex" : 1 }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000036", "version" : "0.006" } }, "name" : "@Author::ETHER/MetaProvides::Package", "version" : "2.004003" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@Author::ETHER/MetaConfig", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Keywords", "config" : { "Dist::Zilla::Plugin::Keywords" : { "keywords" : [ "moose", "extension", "parameter", "role", "arguments", "dynamic", "parameterised", "parameterizable", "parameterisable" ] } }, "name" : "@Author::ETHER/Keywords", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::UseUnsafeInc", "config" : { "Dist::Zilla::Plugin::UseUnsafeInc" : { "dot_in_INC" : 0 } }, "name" : "@Author::ETHER/UseUnsafeInc", "version" : "0.001" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@Author::ETHER/AutoPrereqs", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps", "name" : "@Author::ETHER/Prereqs::AuthorDeps", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::MinimumPerl", "name" : "@Author::ETHER/MinimumPerl", "version" : "1.006" }, { "class" : "Dist::Zilla::Plugin::MakeMaker::Fallback", "config" : { "Dist::Zilla::Plugin::MakeMaker" : { "make_path" : "make", "version" : "6.013" }, "Dist::Zilla::Plugin::MakeMaker::Awesome" : { "version" : "0.48" }, "Dist::Zilla::Plugin::MakeMaker::Fallback" : { "skip_release_testing" : 0 }, "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9, "version" : "6.013" } }, "name" : "@Author::ETHER/MakeMaker::Fallback", "version" : "0.030" }, { "class" : "Dist::Zilla::Plugin::ModuleBuildTiny::Fallback", "config" : { "Dist::Zilla::Plugin::ModuleBuildTiny::Fallback" : { "mb_version" : "0.28", "plugins" : [ { "class" : "Dist::Zilla::Plugin::ModuleBuild", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "ModuleBuild, via ModuleBuildTiny::Fallback", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::ModuleBuildTiny", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "ModuleBuildTiny, via ModuleBuildTiny::Fallback", "version" : "0.015" } ] }, "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@Author::ETHER/ModuleBuildTiny::Fallback", "version" : "0.025" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "git_version" : "2.19.1", "include_authors" : 0, "include_releaser" : 1, "order_by" : "commits", "paths" : [] } }, "name" : "@Author::ETHER/Git::Contributors", "version" : "0.035" }, { "class" : "Dist::Zilla::Plugin::StaticInstall", "config" : { "Dist::Zilla::Plugin::StaticInstall" : { "dry_run" : 0, "mode" : "auto" } }, "name" : "@Author::ETHER/StaticInstall", "version" : "0.012" }, { "class" : "Dist::Zilla::Plugin::RunExtraTests", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@Author::ETHER/RunExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::CheckSelfDependency", "config" : { "Dist::Zilla::Plugin::CheckSelfDependency" : { "finder" : [ ":InstallModules" ] }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000036", "version" : "0.006" } }, "name" : "@Author::ETHER/CheckSelfDependency", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::Run::AfterBuild", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "fatal_errors" : 1, "quiet" : 1, "run" : [ "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname '%d'` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\"" ], "version" : "0.048" } }, "name" : "@Author::ETHER/.ackrc", "version" : "0.048" }, { "class" : "Dist::Zilla::Plugin::Run::AfterBuild", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "eval" : [ "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }" ], "fatal_errors" : 0, "quiet" : 1, "version" : "0.048" } }, "name" : "@Author::ETHER/.latest", "version" : "0.048" }, { "class" : "Dist::Zilla::Plugin::CheckStrictVersion", "name" : "@Author::ETHER/CheckStrictVersion", "version" : "0.001" }, { "class" : "Dist::Zilla::Plugin::CheckMetaResources", "name" : "@Author::ETHER/CheckMetaResources", "version" : "0.001" }, { "class" : "Dist::Zilla::Plugin::EnsureLatestPerl", "config" : { "Dist::Zilla::Plugin::EnsureLatestPerl" : { "Module::CoreList" : "5.20190620" } }, "name" : "@Author::ETHER/EnsureLatestPerl", "version" : "0.008" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 1, "modules" : [], "phase" : "release", "run_under_travis" : 0, "skip" : [] } }, "name" : "@Author::ETHER/stale modules, release", "version" : "0.055" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." } }, "name" : "@Author::ETHER/initial check", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts", "config" : { "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." } }, "name" : "@Author::ETHER/Git::CheckFor::MergeConflicts", "version" : "0.014" }, { "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch", "config" : { "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." } }, "name" : "@Author::ETHER/Git::CheckFor::CorrectBranch", "version" : "0.014" }, { "class" : "Dist::Zilla::Plugin::Git::Remote::Check", "name" : "@Author::ETHER/Git::Remote::Check", "version" : "0.1.2" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@Author::ETHER/CheckPrereqsIndexed", "version" : "0.020" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@Author::ETHER/TestRelease", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." } }, "name" : "@Author::ETHER/after tests", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::CheckIssues", "name" : "@Author::ETHER/CheckIssues", "version" : "0.010" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@Author::ETHER/UploadToCPAN", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease", "config" : { "Dist::Zilla::Plugin::CopyFilesFromRelease" : { "filename" : [ "CONTRIBUTING", "INSTALL", "LICENCE", "LICENSE", "ppport.h" ], "match" : [] } }, "name" : "@Author::ETHER/copy generated files", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod", "config" : { "Dist::Zilla::Role::FileWatcher" : { "version" : "0.006" } }, "name" : "@Author::ETHER/ReadmeAnyFromPod", "version" : "0.163250" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "recommends" } }, "name" : "@Author::ETHER/@Git::VersionManager/pluginbundle version", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::RewriteVersion::Transitional", "config" : { "Dist::Zilla::Plugin::RewriteVersion" : { "add_tarball_name" : 0, "finders" : [ ":ExecFiles", ":InstallModules" ], "global" : 1, "skip_version_provider" : 0 }, "Dist::Zilla::Plugin::RewriteVersion::Transitional" : {} }, "name" : "@Author::ETHER/@Git::VersionManager/RewriteVersion::Transitional", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Update", "name" : "@Author::ETHER/@Git::VersionManager/MetaProvides::Update", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease", "config" : { "Dist::Zilla::Plugin::CopyFilesFromRelease" : { "filename" : [ "Changes" ], "match" : [] } }, "name" : "@Author::ETHER/@Git::VersionManager/CopyFilesFromRelease", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [ "." ], "commit_msg" : "%N-%v%t%n%n%c" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "CONTRIBUTING", "Changes", "INSTALL", "LICENSE", "README.pod" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::ETHER/@Git::VersionManager/release snapshot", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "v1.11", "tag_format" : "v%V", "tag_message" : "v%v%t" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::ETHER/@Git::VersionManager/Git::Tag", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional", "config" : { "Dist::Zilla::Plugin::BumpVersionAfterRelease" : { "finders" : [ ":ExecFiles", ":InstallModules" ], "global" : 1, "munge_makefile_pl" : 1 }, "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : {} }, "name" : "@Author::ETHER/@Git::VersionManager/BumpVersionAfterRelease::Transitional", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@Author::ETHER/@Git::VersionManager/NextRelease", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "increment $VERSION after %v release" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Build.PL", "Changes", "Makefile.PL" ], "allow_dirty_match" : [ "(?^:^lib/.*\\.pm$)" ], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::ETHER/@Git::VersionManager/post-release commit", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "x_Dist_Zilla", "type" : "requires" } }, "name" : "@Author::ETHER/@Git::VersionManager/prereqs for @Git::VersionManager", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "origin" ], "remotes_must_exist" : 1 }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.19.1", "repo_root" : "." } }, "name" : "@Author::ETHER/Git::Push", "version" : "2.046" }, { "class" : "Dist::Zilla::Plugin::GitHub::Update", "config" : { "Dist::Zilla::Plugin::GitHub::Update" : { "metacpan" : 1 } }, "name" : "@Author::ETHER/GitHub::Update", "version" : "0.47" }, { "class" : "Dist::Zilla::Plugin::Run::AfterRelease", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "fatal_errors" : 0, "quiet" : 0, "run" : [ "REDACTED" ], "version" : "0.048" } }, "name" : "@Author::ETHER/install release", "version" : "0.048" }, { "class" : "Dist::Zilla::Plugin::Run::AfterRelease", "config" : { "Dist::Zilla::Plugin::Run::Role::Runner" : { "eval" : [ "print \"release complete!\\xa\"" ], "fatal_errors" : 1, "quiet" : 1, "version" : "0.048" } }, "name" : "@Author::ETHER/release complete", "version" : "0.048" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@Author::ETHER/ConfirmRelease", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "x_Dist_Zilla", "type" : "requires" } }, "name" : "@Author::ETHER/prereqs for @Author::ETHER", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "requires" } }, "name" : "DevelopRequires", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "MetaResources", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::Breaks", "name" : "Breaks", "version" : "0.004" }, { "class" : "Dist::Zilla::Plugin::Test::CheckBreaks", "config" : { "Dist::Zilla::Plugin::Test::CheckBreaks" : { "conflicts_module" : [ "Module::Runtime::Conflicts", "Moose::Conflicts" ], "no_forced_deps" : 0 }, "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000036", "version" : "0.006" } }, "name" : "Test::CheckBreaks", "version" : "0.019" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.013" }, { "class" : "Dist::Zilla::Plugin::VerifyPhases", "name" : "@Author::ETHER/PHASE VERIFICATION", "version" : "0.016" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.013" } }, "x_authority" : "cpan:SARTAK", "x_breaks" : { "MooseX::Storage" : "<= 0.46" }, "x_contributors" : [ "Karen Etheridge ", "Dave Rolsky ", "Jesse Luehrs ", "Oliver Charles ", "Yuval Kogman ", "Robert 'phaylon' Sedlacek ", "Florian Ragwitz ", "Mark Fowler ", "Chris Weyl ", "Csson ", "Andy Jack ", "Ricardo Signes ", "Todd Hepler " ], "x_generated_by_perl" : "v5.31.1", "x_serialization_backend" : "Cpanel::JSON::XS version 4.12", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later", "x_static_install" : 1, "x_use_unsafe_inc" : 0 } Makefile.PL100644000766000024 1036313513224542 20012 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11# This Makefile.PL for MooseX-Role-Parameterized was generated by # Dist::Zilla::Plugin::MakeMaker::Fallback 0.030 # and Dist::Zilla::Plugin::MakeMaker::Awesome 0.48. # Don't edit it but the dist.ini and plugins used to construct it. use strict; use warnings; use 5.008001; use ExtUtils::MakeMaker; BEGIN { my %configure_requires = ( 'ExtUtils::MakeMaker' => '0', 'Module::Build::Tiny' => '0.034', ); my %errors = map { eval "require $_; $_->VERSION($configure_requires{$_}); 1"; $_ => $@, } keys %configure_requires; if (grep { $_ } values %errors) { warn "Errors from configure prereqs:\n" . do { require Data::Dumper; Data::Dumper->new([ \%errors ])->Indent(2)->Terse(1)->Sortkeys(1)->Dump; }; } if (not $ENV{PERL_MM_FALLBACK_SILENCE_WARNING}) { warn <<'EOW'; *** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING *** If you're seeing this warning, your toolchain is really, really old* and you'll almost certainly have problems installing CPAN modules from this century. But never fear, dear user, for we have the technology to fix this! If you're using CPAN.pm to install things, then you can upgrade it using: cpan CPAN If you're using CPANPLUS to install things, then you can upgrade it using: cpanp CPANPLUS If you're using cpanminus, you shouldn't be seeing this message in the first place, so please file an issue on github. If you're using a packaging tool through a unix distribution, this issue should be reported to the package manager. If you're installing manually, please retrain your fingers to run Build.PL when present instead of Makefile.PL. This public service announcement was brought to you by the Perl Toolchain Gang, the irc.perl.org #toolchain IRC channel, and the number 42. ---- * Alternatively, you are doing something overly clever, in which case you should consider setting the 'prefer_installer' config option in CPAN.pm, or 'prefer_makefile' in CPANPLUS, to 'mb" and '0' respectively. You can also silence this warning for future installations by setting the PERL_MM_FALLBACK_SILENCE_WARNING environment variable. EOW sleep 10 if -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT)); } } # end BEGIN my %WriteMakefileArgs = ( "ABSTRACT" => "Moose roles with composition parameters", "AUTHOR" => "Shawn M Moore ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0, "Module::Build::Tiny" => "0.034" }, "DISTNAME" => "MooseX-Role-Parameterized", "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.008001", "NAME" => "MooseX::Role::Parameterized", "PL_FILES" => {}, "PREREQ_PM" => { "Carp" => 0, "Module::Runtime" => 0, "Moose" => "2.0300", "Moose::Exporter" => 0, "Moose::Meta::Role" => 0, "Moose::Role" => 0, "Moose::Util" => 0, "namespace::autoclean" => 0, "namespace::clean" => "0.19", "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "CPAN::Meta::Check" => "0.011", "CPAN::Meta::Requirements" => 0, "Data::Dumper" => 0, "File::Spec" => 0, "Module::Metadata" => 0, "Moose::Util::TypeConstraints" => 0, "Storable" => 0, "Test::Fatal" => 0, "Test::Moose" => 0, "Test::More" => "0.96", "Test::Needs" => 0, "lib" => 0, "overload" => 0 }, "VERSION" => "1.11", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "CPAN::Meta::Check" => "0.011", "CPAN::Meta::Requirements" => 0, "Carp" => 0, "Data::Dumper" => 0, "File::Spec" => 0, "Module::Metadata" => 0, "Module::Runtime" => 0, "Moose" => "2.0300", "Moose::Exporter" => 0, "Moose::Meta::Role" => 0, "Moose::Role" => 0, "Moose::Util" => 0, "Moose::Util::TypeConstraints" => 0, "Storable" => 0, "Test::Fatal" => 0, "Test::Moose" => 0, "Test::More" => "0.96", "Test::Needs" => 0, "lib" => 0, "namespace::autoclean" => 0, "namespace::clean" => "0.19", "overload" => 0, "strict" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION('6.63_03') } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); t000755000766000024 013513224542 16120 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11004-with.t100600000766000024 215613513224542 17715 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyItem::Role::Wearable; use Moose::Role; has is_worn => ( is => 'rw', isa => 'Bool', default => 0, ); sub equip { shift->is_worn(1) } sub remove { shift->is_worn(0) } }; do { package MyItem::Role::Equippable; use MooseX::Role::Parameterized; parameter slot => ( isa => 'Str', required => 1, ); role { my $p = shift; with 'MyItem::Role::Wearable'; method slot => sub { $p->slot }; }; }; do { package MyItem::Helmet; use Moose; with 'MyItem::Role::Equippable' => { slot => 'head', }; }; do { package MyItem::Belt; use Moose; with 'MyItem::Role::Equippable' => { slot => 'waist', }; }; can_ok('MyItem::Helmet', qw/is_worn equip remove slot/); can_ok('MyItem::Belt', qw/is_worn equip remove slot/); my $visored = MyItem::Helmet->new(is_worn => 1); ok($visored->is_worn); is($visored->slot, 'head'); my $utility = MyItem::Belt->new; ok(!$utility->is_worn); is($utility->slot, 'waist'); done_testing; 013-does.t100600000766000024 104213513224542 17665 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Moose; { package MyPRole; use MooseX::Role::Parameterized; role {}; } { package MyClass; use Moose; with 'MyPRole', } my $generated_role = MyClass->meta->roles->[0]->name; does_ok( 'MyClass', $generated_role, 'class does the generate role' ); does_ok( 'MyClass', 'MyPRole', 'class does the parameterized role' ); cmp_ok( $generated_role->meta->get_roles->[0]->name, 'eq', 'MyPRole', 'generated role does the parameterized role' ); done_testing; lib000755000766000024 013513224542 16666 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tBar.pm100644000766000024 34413513224542 20051 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/t/libpackage Bar; use MooseX::Role::Parameterized; parameter include_is_bar => ( isa => 'Bool', default => 1, ); role { my $p = shift; if ($p->include_is_bar) { method is_bar => sub { 1 }; } }; 1; CONTRIBUTING100644000766000024 1022013513224542 17662 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11 CONTRIBUTING Thank you for considering contributing to this distribution. This file contains instructions that will help you work with the source code. PLEASE NOTE that if you have any questions or difficulties, you can reach the maintainer(s) through the bug queue described later in this document (preferred), or by emailing the releaser directly. You are not required to follow any of the steps in this document to submit a patch or bug report; these are just recommendations, intended to help you (and help us help you faster). The distribution is managed with Dist::Zilla (https://metacpan.org/release/Dist-Zilla). This means than many of the usual files you might expect are not in the repository, but are generated at release time (e.g. Makefile.PL). However, you can run tests directly using the 'prove' tool: $ prove -l $ prove -lv t/some_test_file.t $ prove -lvr t/ In most cases, 'prove' is entirely sufficient for you to test any patches you have. You may need to satisfy some dependencies. The easiest way to satisfy dependencies is to install the last release -- this is available at https://metacpan.org/release/MooseX-Role-Parameterized If you use cpanminus, you can do it without downloading the tarball first: $ cpanm --reinstall --installdeps --with-recommends MooseX::Role::Parameterized Dist::Zilla is a very powerful authoring tool, but requires a number of author-specific plugins. If you would like to use it for contributing, install it from CPAN, then run one of the following commands, depending on your CPAN client: $ cpan `dzil authordeps --missing` or $ dzil authordeps --missing | cpanm You should then also install any additional requirements not needed by the dzil build but may be needed by tests or other development: $ cpan `dzil listdeps --author --missing` or $ dzil listdeps --author --missing | cpanm Or, you can use the 'dzil stale' command to install all requirements at once: $ cpan Dist::Zilla::App::Command::stale $ cpan `dzil stale --all` or $ cpanm Dist::Zilla::App::Command::stale $ dzil stale --all | cpanm You can also do this via cpanm directly: $ cpanm --reinstall --installdeps --with-develop --with-recommends MooseX::Role::Parameterized Once installed, here are some dzil commands you might try: $ dzil build $ dzil test $ dzil test --release $ dzil xtest $ dzil listdeps --json $ dzil build --notgz You can learn more about Dist::Zilla at http://dzil.org/. The code for this distribution is hosted at GitHub. The repository is: https://github.com/moose/MooseX-Role-Parameterized You can submit code changes by forking the repository, pushing your code changes to your clone, and then submitting a pull request. Please include a suitable end-user-oriented entry in the Changes file describing your change. Detailed instructions for doing that is available here: https://help.github.com/articles/creating-a-pull-request All pull requests for this distribution will be automatically tested on Linux by Travis at: https://travis-ci.com/moose/MooseX-Role-Parameterized Results will be visible in the pull request on GitHub. Follow the appropriate links for details when tests fail. Changes will not be mergeable until all tests pass. If you have found a bug, but do not have an accompanying patch to fix it, you can submit an issue report here: https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Role-Parameterized or via email: bug-MooseX-Role-Parameterized@rt.cpan.org There is also a mailing list available for users of this distribution, at http://lists.perl.org/list/moose.html There is also an irc channel available for users of this distribution, at irc://irc.perl.org/#moose If you send me a patch or pull request, your name and email address will be included in the documentation as a contributor (using the attribution on the commit or patch), unless you specifically request for it not to be. If you wish to be listed under a different name or address, you should submit a pull request to the .mailmap file to contain the correct mapping. This file was generated via Dist::Zilla::Plugin::GenerateFile::FromShareDir 0.014 from a template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.149. 003-apply.t100600000766000024 1002413513224542 20077 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; my %args; do { package MyRole::Storage; use MooseX::Role::Parameterized; use Moose::Util::TypeConstraints 'enum'; parameter format => ( isa => (enum ['Dumper', 'Storable']), required => 1, ); parameter freeze_method => ( isa => 'Str', lazy => 1, default => sub { "freeze_" . shift->format }, ); parameter thaw_method => ( isa => 'Str', lazy => 1, default => sub { "thaw_" . shift->format }, ); role { my $p = shift; %args = @_; my $format = $p->format; my ($freezer, $thawer); if ($format eq 'Dumper') { require Data::Dumper; $freezer = \&Data::Dumper::Dumper; $thawer = sub { eval "@_" }; } elsif ($format eq 'Storable') { require Storable; $freezer = \&Storable::nfreeze; $thawer = \&Storable::thaw; } else { die "Unknown format ($format)"; } method $p->freeze_method => $freezer; method $p->thaw_method => $thawer; }; }; do { package MyClass::Dumper; use Moose; with 'MyRole::Storage' => { format => 'Dumper', }; }; can_ok('MyClass::Dumper' => qw(freeze_Dumper thaw_Dumper)); cant_ok('MyClass::Dumper' => qw(freeze_Storable thaw_Storable)); is($args{consumer}, MyClass::Dumper->meta, 'Role block receives consumer'); is(MyClass::Dumper->meta->roles->[0]->genitor, MyRole::Storage->meta, 'genitor'); do { package MyClass::Storable; use Moose; with 'MyRole::Storage' => { format => 'Storable', }; }; can_ok('MyClass::Storable' => qw(freeze_Storable thaw_Storable)); cant_ok('MyClass::Storable' => qw(freeze_Dumper thaw_Dumper)); is($args{consumer}, MyClass::Storable->meta, 'Role block receives consumer'); do { package MyClass::DumperRenamed; use Moose; with 'MyRole::Storage' => { format => 'Dumper', freeze_method => 'save', thaw_method => 'load', }; }; can_ok('MyClass::DumperRenamed' => qw(save load)); cant_ok('MyClass::DumperRenamed' => qw(freeze_Dumper freeze_Storable thaw_Dumper thaw_Storable)); is($args{consumer}, MyClass::DumperRenamed->meta, 'Role block receives consumer'); do { package MyClass::Both; use Moose; with 'MyRole::Storage' => { format => 'Dumper' }; with 'MyRole::Storage' => { format => 'Storable' }; }; can_ok('MyClass::Both' => qw(freeze_Dumper freeze_Storable thaw_Dumper thaw_Storable)); is($args{consumer}, MyClass::Both->meta, 'Role block receives consumer'); do { package MyClass::Three; use Moose; with 'MyRole::Storage' => { format => 'Dumper' }; with 'MyRole::Storage' => { format => 'Storable' }; with 'MyRole::Storage' => { format => 'Storable', freeze_method => 'store', thaw_method => 'dump', }; }; can_ok('MyClass::Three' => qw(freeze_Dumper freeze_Storable thaw_Dumper thaw_Storable store dump)); is($args{consumer}, MyClass::Three->meta, 'Role block receives consumer'); like( exception { package MyClass::Error::Required; use Moose; with 'MyRole::Storage'; }, qr/^Attribute \(format\) is required/); like( exception { package MyClass::Error::Invalid; use Moose; with 'MyRole::Storage' => { format => 'YAML', }; }, qr/^Attribute \(format\) does not pass the type constraint/); like( exception { package MyRole::Sans::Block; use MooseX::Role::Parameterized; parameter 'foo'; package MyClass::Error::BlocklessRole; use Moose; with 'MyRole::Sans::Block' => {}; }, qr/^\QA role generator is required to apply parameterized roles (did you forget the 'role { ... }' block in your parameterized role 'MyRole::Sans::Block'?)\E/); sub cant_ok { local $Test::Builder::Level = $Test::Builder::Level + 1; my $instance = shift; for my $method (@_) { ok(!$instance->can($method), "$instance cannot $method"); } } done_testing; 016-trait.t100600000766000024 171113513224542 20064 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/t#!/usr/bin/env perl use strict; use warnings; use Test::More 0.88; do { package MyTrait::Label; use MooseX::Role::Parameterized; parameter default => ( is => 'rw', isa => 'Str', ); role { my $p = shift; has label => ( is => 'rw', isa => 'Str', default => $p->default, ); }; }; do { package MyClass::LabeledURL; use Moose; has url => ( is => 'ro', traits => [ 'MyTrait::Label' => { default => 'yay' }, ], ); }; do { package MyClass::LabeledURL::Redux; use Moose; has 'url' => ( is => 'ro', traits => [ 'MyTrait::Label' => { default => 'yay' }, ], label => 'overridden', ); }; is(MyClass::LabeledURL->meta->get_attribute('url')->label, 'yay'); is(MyClass::LabeledURL::Redux->meta->get_attribute('url')->label, 'overridden'); done_testing; 102-nested.t100600000766000024 242213513224542 20217 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; use lib 't/lib'; { package Foo; use MooseX::Role::Parameterized; parameter 'outer' => ( default => 'yep..', ); role { with 'Bar', { include_is_bar => 0 }; method is_foo => sub { 1 }; }; } { package Foo::Class; use Moose; ::is( ::exception { with 'Foo'; }, undef, 'Can consume the Foo role without providing parameters'); } { package Bar::Class; use Moose; ::is( ::exception { with 'Bar'; }, undef, 'Can consume the Bar role without providing parameters'); } my $foo = Foo::Class->meta->roles->[0]; ok($foo->has_method('is_foo'), 'Foo got the "is_foo" method'); ok(!$foo->has_method('is_bar'), 'Foo did not get the "is_bar" method from Bar'); my $bar = Bar::Class->meta->roles->[0]; ok($bar->has_method('is_bar'), 'Bar got the "is_bar" method'); ok(!$bar->has_method('is_foo'), 'Bar does not get "is_foo"'); ok(Foo->meta->has_parameter('outer'), 'Foo has outer param'); ok(Bar->meta->has_parameter('include_is_bar'), 'Bar has include_is_bar param'); ok(!Foo->meta->has_parameter('include_is_bar'), 'Foo does not have include_is_bar param'); ok(!Bar->meta->has_parameter('outer'), 'Bar does not have outer param'); done_testing; author000755000766000024 013513224542 17612 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xteol.t100644000766000024 375613513224542 20731 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19 use Test::More 0.88; use Test::EOL; my @files = ( 'lib/MooseX/Role/Parameterised.pm', 'lib/MooseX/Role/Parameterized.pm', 'lib/MooseX/Role/Parameterized/Extending.pod', 'lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm', 'lib/MooseX/Role/Parameterized/Meta/Trait/Parameterizable.pm', 'lib/MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm', 'lib/MooseX/Role/Parameterized/Parameters.pm', 'lib/MooseX/Role/Parameterized/Tutorial.pod', 't/00-report-prereqs.dd', 't/00-report-prereqs.t', 't/001-parameters.t', 't/002-role-block.t', 't/003-apply.t', 't/004-with.t', 't/005-with-parameterized.t', 't/006-requires.t', 't/007-excludes.t', 't/008-method-modifers.t', 't/009-override-super.t', 't/010-blessed-confess.t', 't/011-reference-parameters.t', 't/012-rename-role.t', 't/013-does.t', 't/014-compose-parameterizable.t', 't/015-compose-keywords.t', 't/016-trait.t', 't/017-current_metaclass.t', 't/018-parameter-roles.t', 't/020-metaclass-reinitialize.t', 't/021-parameter-trait.t', 't/022-export-p-trait.t', 't/023-metarole-import-params.t', 't/024-named-anonymous.t', 't/100-erroneous-keywords.t', 't/101-alias-excludes.t', 't/102-nested.t', 't/150-composite-role-application.t', 't/200-cooperative.t', 't/lib/Bar.pm', 't/zzz-check-breaks.t', 'xt/author/00-compile.t', 'xt/author/changes_has_content.t', 'xt/author/clean-namespaces.t', 'xt/author/eol.t', 'xt/author/kwalitee.t', 'xt/author/minimum-version.t', 'xt/author/mojibake.t', 'xt/author/no-tabs.t', 'xt/author/pod-coverage.t', 'xt/author/pod-syntax.t', 'xt/author/portability.t', 'xt/release/changes_has_content.t', 'xt/release/cpan-changes.t', 'xt/release/distmeta.t' ); eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files; done_testing; 006-requires.t100600000766000024 360513513224542 20603 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; do { package MyRole::Requires; use MooseX::Role::Parameterized; parameter requires => ( is => 'rw', isa => 'Str', ); role { my $p = shift; requires $p->requires; }; }; my @keep_roles_alive; sub requires_names { map { my $role = MyRole::Requires->meta->generate_role( parameters => { requires => $_, }, ); push @keep_roles_alive, $role; $role->name; } @_ } { my ($role_name) = requires_names('alpha'); like( exception { Moose::Meta::Class->create_anon_class( roles => [ $role_name ], ); }, qr/'$role_name' requires the method 'alpha' to be implemented by '[\w:]+'/); } is (exception { Moose::Meta::Class->create_anon_class( methods => { alpha => sub {}, }, roles => [ requires_names('alpha') ], ); }, undef); { my ($role1, $role2) = requires_names('alpha', 'beta'); like( exception { Moose::Meta::Class->create_anon_class( methods => { alpha => sub {}, }, roles => [ $role1, $role2 ], ); }, qr/'$role1\|$role2' requires the method 'beta' to be implemented by '[\w:]+'/); } { my ($role1, $role2) = requires_names('alpha', 'beta'); like( exception { Moose::Meta::Class->create_anon_class( methods => { beta => sub {}, }, roles => [ $role1, $role2 ], ); }, qr/'$role1\|$role2' requires the method 'alpha' to be implemented by '[\w:]+'/); } is (exception { Moose::Meta::Class->create_anon_class( methods => { alpha => sub {}, beta => sub {}, }, roles => [ requires_names('alpha', 'beta') ], ); }, undef); done_testing; 007-excludes.t100600000766000024 222013513224542 20551 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; do { package MyRole::Excluder; use MooseX::Role::Parameterized; parameter exclude => ( is => 'rw', isa => 'Str', ); role { my $p = shift; excludes $p->exclude; }; }; Moose::Meta::Role->create("Role::A"); Moose::Meta::Role->create("Role::B"); my @keep_roles_alive; sub excludes_roles { map { my $role = MyRole::Excluder->meta->generate_role( parameters => { exclude => $_, }, ); push @keep_roles_alive, $role; $role->name; } @_ } is (exception { Moose::Meta::Class->create_anon_class( roles => [ excludes_roles('Role::A') ], ); }, undef); { my ($role_name) = excludes_roles('Role::A'); like( exception { Moose::Meta::Class->create_anon_class( roles => [ 'Role::A', $role_name ], ); }, qr/^Conflict detected: Role $role_name excludes role 'Role::A'/); } is (exception { Moose::Meta::Class->create_anon_class( roles => [ 'Role::B', excludes_roles('Role::A') ], ); }, undef); done_testing; 001-parameters.t100644000766000024 367213513224542 21116 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; use MooseX::Role::Parameterized::Parameters; my $p = MooseX::Role::Parameterized::Parameters->new; can_ok($p => 'meta'); do { package MyRole::NoParameters; use MooseX::Role::Parameterized; }; my $parameters_metaclass = MyRole::NoParameters->meta->parameters_metaclass; is($parameters_metaclass->get_all_attributes, 0, "no parameters"); do { package MyRole::LengthParameter; use MooseX::Role::Parameterized; parameter length => ( isa => 'Int', required => 1, ); }; $parameters_metaclass = MyRole::LengthParameter->meta->parameters_metaclass; is($parameters_metaclass->get_all_attributes, 1, "exactly one parameter"); my $parameter = ($parameters_metaclass->get_all_attributes)[0]; is($parameter->name, 'length', "parameter name"); ok($parameter->is_required, "parameter is required"); ok(MyRole::LengthParameter->meta->has_parameter('length'), 'has_parameter'); ok(!MyRole::LengthParameter->meta->has_parameter('kjhef'), 'has_parameter'); like( exception { MyRole::LengthParameter->meta->construct_parameters; }, qr/^Attribute \(length\) is required/); $p = MyRole::LengthParameter->meta->construct_parameters( length => 5, ); is($p->length, 5, "correct length"); like( exception { $p->length(10); }, qr/^Cannot assign a value to a read-only accessor/); do { package MyRole::LengthParameter; use MooseX::Role::Parameterized; parameter ['first_name', 'last_name'] => ( is => 'rw', isa => 'Str', ); }; $parameters_metaclass = MyRole::LengthParameter->meta->parameters_metaclass; is($parameters_metaclass->get_all_attributes, 3, "three parameters"); for my $param_name ('first_name', 'last_name') { my $param = $parameters_metaclass->get_attribute($param_name); is($param->type_constraint, 'Str', "$param_name type constraint"); ok(!$param->is_required, "$param_name is optional"); } done_testing; 002-role-block.t100644000766000024 443313513224542 21001 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.96; my ($parameters, %args); do { package MyPerson; use MooseX::Role::Parameterized; parameter default_age => ( is => 'rw', isa => 'Int', required => 1, ); role { ($parameters, %args) = @_; has age => ( default => $parameters->default_age, ); method birthday => sub { my $self = shift; return 2000 - $self->age; }; }; }; ok(MyPerson->meta->has_role_generator, "MyPerson has a role generator"); subtest "generation of an anonymous role" => sub { my $role = MyPerson->meta->generate_role( parameters => { default_age => 7, }, ); isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role'); like($role->name, qr{ANON}, '...with an anonymous name'); is($role->parameters, $parameters, 'the generated role knows its parameters'); is($parameters->default_age, 7); is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on"); my $age_attr = $role->get_attribute('age'); is($age_attr->{default}, 7, "role's age attribute has the right default"); my $birthday_method = $role->get_method('birthday'); is($birthday_method->name, 'birthday', "method name"); is($birthday_method->package_name, $role->name, "package name"); }; subtest "generating a role with a provided name" => sub { my $role = MyPerson->meta->generate_role( package => 'RJBS::Was::Here', parameters => { default_age => 10, }, ); isa_ok($role, 'Moose::Meta::Role', 'generate_role created a role'); is($role->name, 'RJBS::Was::Here', '...with the name we expected'); is($role->parameters, $parameters, 'the generated role knows its parameters'); is($parameters->default_age, 10); is($args{operating_on}, $role, "we pass in the role metaclass that we're operating on"); my $age_attr = $role->get_attribute('age'); is($age_attr->{default}, 10, "role's age attribute has the right default"); my $birthday_method = $role->get_method('birthday'); is($birthday_method->name, 'birthday', "method name"); is($birthday_method->package_name, $role->name, "package name"); }; done_testing; 012-rename-role.t100600000766000024 56713513224542 21133 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyRole; use MooseX::Role::Parameterized ( role => { -as => 'parameterized_role' }, 'method', ); parameterized_role { method ok => sub {}; }; }; my $role = MyRole->meta->generate_role; ok($role->has_method('ok'), "renaming the role block export works"); done_testing; 200-cooperative.t100600000766000024 165113513224542 21257 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Needs { 'MooseX::Role::WithOverloading' => '0.14', }; do { package MyParameterizedRole; BEGIN { MooseX::Role::WithOverloading->import } use MooseX::Role::Parameterized; use overload q{""} => '_stringify'; parameter default => ( required => 1 ); role { my $p = shift; my %foo = @_; has foo => ( is => 'ro', isa => 'Str', default => $p->default(), ); }; sub _stringify { $_[0]->foo() } }; do { package MyClass; use Moose; with 'MyParameterizedRole' => { default => 'string' }; }; my $object = MyClass->new(); is( $object->foo(), 'string', 'MyClass object has foo attribute with default passed to parameterized role' ); is( "$object", 'string', 'MyClass object stringifies to value of foo attribute' ); done_testing(); no-tabs.t100644000766000024 372413513224542 21510 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15 use Test::More 0.88; use Test::NoTabs; my @files = ( 'lib/MooseX/Role/Parameterised.pm', 'lib/MooseX/Role/Parameterized.pm', 'lib/MooseX/Role/Parameterized/Extending.pod', 'lib/MooseX/Role/Parameterized/Meta/Role/Parameterized.pm', 'lib/MooseX/Role/Parameterized/Meta/Trait/Parameterizable.pm', 'lib/MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm', 'lib/MooseX/Role/Parameterized/Parameters.pm', 'lib/MooseX/Role/Parameterized/Tutorial.pod', 't/00-report-prereqs.dd', 't/00-report-prereqs.t', 't/001-parameters.t', 't/002-role-block.t', 't/003-apply.t', 't/004-with.t', 't/005-with-parameterized.t', 't/006-requires.t', 't/007-excludes.t', 't/008-method-modifers.t', 't/009-override-super.t', 't/010-blessed-confess.t', 't/011-reference-parameters.t', 't/012-rename-role.t', 't/013-does.t', 't/014-compose-parameterizable.t', 't/015-compose-keywords.t', 't/016-trait.t', 't/017-current_metaclass.t', 't/018-parameter-roles.t', 't/020-metaclass-reinitialize.t', 't/021-parameter-trait.t', 't/022-export-p-trait.t', 't/023-metarole-import-params.t', 't/024-named-anonymous.t', 't/100-erroneous-keywords.t', 't/101-alias-excludes.t', 't/102-nested.t', 't/150-composite-role-application.t', 't/200-cooperative.t', 't/lib/Bar.pm', 't/zzz-check-breaks.t', 'xt/author/00-compile.t', 'xt/author/changes_has_content.t', 'xt/author/clean-namespaces.t', 'xt/author/eol.t', 'xt/author/kwalitee.t', 'xt/author/minimum-version.t', 'xt/author/mojibake.t', 'xt/author/no-tabs.t', 'xt/author/pod-coverage.t', 'xt/author/pod-syntax.t', 'xt/author/portability.t', 'xt/release/changes_has_content.t', 'xt/release/cpan-changes.t', 'xt/release/distmeta.t' ); notabs_ok($_) foreach @files; done_testing; kwalitee.t100644000766000024 27513513224542 21730 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/author# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.12 use strict; use warnings; use Test::More 0.88; use Test::Kwalitee 1.21 'kwalitee_ok'; kwalitee_ok(); done_testing; mojibake.t100644000766000024 15113513224542 21675 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/author#!perl use strict; use warnings qw(all); use Test::More; use Test::Mojibake; all_files_encoding_ok(); zzz-check-breaks.t100644000766000024 235713513224542 21631 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::CheckBreaks 0.019 use Test::More tests => 3; SKIP: { eval { +require Module::Runtime::Conflicts; Module::Runtime::Conflicts->check_conflicts }; skip('no Module::Runtime::Conflicts module found', 1) if not $INC{'Module/Runtime/Conflicts.pm'}; diag $@ if $@; pass 'conflicts checked via Module::Runtime::Conflicts'; } SKIP: { eval { +require Moose::Conflicts; Moose::Conflicts->check_conflicts }; skip('no Moose::Conflicts module found', 1) if not $INC{'Moose/Conflicts.pm'}; diag $@ if $@; pass 'conflicts checked via Moose::Conflicts'; } # this data duplicates x_breaks in META.json my $breaks = { "MooseX::Storage" => "<= 0.46" }; use CPAN::Meta::Requirements; use CPAN::Meta::Check 0.011; my $reqs = CPAN::Meta::Requirements->new; $reqs->add_string_requirement($_, $breaks->{$_}) foreach keys %$breaks; our $result = CPAN::Meta::Check::check_requirements($reqs, 'conflicts'); if (my @breaks = grep { defined $result->{$_} } keys %$result) { diag 'Breakages found with MooseX-Role-Parameterized:'; diag "$result->{$_}" for sort @breaks; diag "\n", 'You should now update these modules!'; } pass 'checked x_breaks data'; release000755000766000024 013513224542 17730 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xtdistmeta.t100644000766000024 17213513224542 22047 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/release#!perl # This file was automatically generated by Dist::Zilla::Plugin::MetaTests. use Test::CPAN::Meta; meta_yaml_ok(); 00-report-prereqs.t100644000766000024 1364013513224542 21700 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/t#!perl use strict; use warnings; # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.027 use Test::More tests => 1; use Module::Metadata; use File::Spec; # from $version::LAX my $lax_version_re = qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )? | (?:\.[0-9]+) (?:_[0-9]+)? ) | (?: v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )? | (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)? ) )/x; # hide optional CPAN::Meta modules from prereq scanner # and check if they are available my $cpan_meta = "CPAN::Meta"; my $cpan_meta_pre = "CPAN::Meta::Prereqs"; my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic # Verify requirements? my $DO_VERIFY_PREREQS = 1; sub _max { my $max = shift; $max = ( $_ > $max ) ? $_ : $max for @_; return $max; } sub _merge_prereqs { my ($collector, $prereqs) = @_; # CPAN::Meta::Prereqs object if (ref $collector eq $cpan_meta_pre) { return $collector->with_merged_prereqs( CPAN::Meta::Prereqs->new( $prereqs ) ); } # Raw hashrefs for my $phase ( keys %$prereqs ) { for my $type ( keys %{ $prereqs->{$phase} } ) { for my $module ( keys %{ $prereqs->{$phase}{$type} } ) { $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module}; } } } return $collector; } my @include = qw( Encode File::Temp JSON::PP Module::Runtime Pod::Coverage Sub::Name YAML autodie Dist::CheckConflicts ); my @exclude = qw( ); # Add static prereqs to the included modules list my $static_prereqs = do './t/00-report-prereqs.dd'; # Merge all prereqs (either with ::Prereqs or a hashref) my $full_prereqs = _merge_prereqs( ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ), $static_prereqs ); # Add dynamic prereqs to the included modules list (if we can) my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; my $cpan_meta_error; if ( $source && $HAS_CPAN_META && (my $meta = eval { CPAN::Meta->load_file($source) } ) ) { $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs); } else { $cpan_meta_error = $@; # capture error from CPAN::Meta->load_file($source) $source = 'static metadata'; } my @full_reports; my @dep_errors; my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs; # Add static includes into a fake section for my $mod (@include) { $req_hash->{other}{modules}{$mod} = 0; } for my $phase ( qw(configure build test runtime develop other) ) { next unless $req_hash->{$phase}; next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING}); for my $type ( qw(requires recommends suggests conflicts modules) ) { next unless $req_hash->{$phase}{$type}; my $title = ucfirst($phase).' '.ucfirst($type); my @reports = [qw/Module Want Have/]; for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) { next if $mod eq 'perl'; next if grep { $_ eq $mod } @exclude; my $file = $mod; $file =~ s{::}{/}g; $file .= ".pm"; my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC; my $want = $req_hash->{$phase}{$type}{$mod}; $want = "undef" unless defined $want; $want = "any" if !$want && $want == 0; my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required"; if ($prefix) { my $have = Module::Metadata->new_from_file( File::Spec->catfile($prefix, $file) )->version; $have = "undef" unless defined $have; push @reports, [$mod, $want, $have]; if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) { if ( $have !~ /\A$lax_version_re\z/ ) { push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)"; } elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) { push @dep_errors, "$mod version '$have' is not in required range '$want'"; } } } else { push @reports, [$mod, $want, "missing"]; if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) { push @dep_errors, "$mod is not installed ($req_string)"; } } } if ( @reports ) { push @full_reports, "=== $title ===\n\n"; my $ml = _max( map { length $_->[0] } @reports ); my $wl = _max( map { length $_->[1] } @reports ); my $hl = _max( map { length $_->[2] } @reports ); if ($type eq 'modules') { splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports; } else { splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; } push @full_reports, "\n"; } } } if ( @full_reports ) { diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports; } if ( $cpan_meta_error || @dep_errors ) { diag "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n"; } if ( $cpan_meta_error ) { my ($orig_source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; diag "\nCPAN::Meta->load_file('$orig_source') failed with: $cpan_meta_error\n"; } if ( @dep_errors ) { diag join("\n", "\nThe following REQUIRED prerequisites were not satisfied:\n", @dep_errors, "\n" ); } pass; # vim: ts=4 sts=4 sw=4 et: 009-override-super.t100600000766000024 132313513224542 21715 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; my @calls; do { package MyRole::LogMethod; use MooseX::Role::Parameterized; parameter method => ( is => 'rw', isa => 'Str', required => 1, ); role { my $p = shift; override $p->method => sub { push @calls, "calling " . $p->method; super; push @calls, "called " . $p->method; }; }; }; do { package MyClass; use Moose; with 'MyRole::LogMethod' => { method => 'new', }; }; is_deeply([splice @calls], [], "no calls yet"); MyClass->new; is_deeply([splice @calls], ["calling new", "called new"], "instrumented new"); done_testing; 022-export-p-trait.t100600000766000024 213313513224542 21634 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; BEGIN { package MyTrait::Label; use MooseX::Role::Parameterized; parameter default => ( is => 'rw', isa => 'Str', ); role { my $p = shift; has label => ( is => 'rw', isa => 'Str', default => $p->default, ); }; }; BEGIN { package MyApp::MooseX::LabeledAttributes; use Moose::Exporter; $INC{'MyApp/MooseX/LabeledAttributes.pm'} = 1; Moose::Exporter->setup_import_methods( class_metaroles => { attribute => [ 'MyTrait::Label' => { default => 'no label' } ], }, ); } do { package MyClass::LabeledURL; use Moose; use MyApp::MooseX::LabeledAttributes; has name => ( is => 'ro', ); has url => ( is => 'ro', label => 'overridden', ); no Moose; no MyApp::MooseX::LabeledAttributes; }; my $meta = MyClass::LabeledURL->meta; is($meta->get_attribute('name')->label, 'no label'); is($meta->get_attribute('url')->label, 'overridden'); done_testing; 101-alias-excludes.t100600000766000024 177013513224542 21644 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; do { package MyRole; use MooseX::Role::Parameterized; ::is( ::exception { parameter 'alias'; }, undef); ::is( ::exception { parameter 'excludes'; }, undef); role { } }; do { package MyClass; use Moose; ::is( ::exception { with MyRole => { alias => 1, }; }, undef); ::is( ::exception { with MyRole => { excludes => 1, }; }, undef); }; do { package OrdinaryRole; use MooseX::Role::Parameterized; sub code { 'originally code' } sub other_code { 'originally other_code' } role { } }; do { package OrdinaryClass; use Moose; with OrdinaryRole => { -alias => { code => 'new_code' }, -excludes => [ 'other_code' ], }; }; ok(!OrdinaryClass->can('other_code')); is(OrdinaryClass->code, 'originally code'); is(OrdinaryClass->new_code, 'originally code'); done_testing; 00-compile.t100644000766000024 317513513224542 22012 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse 5.006; use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058 use Test::More 0.94; plan tests => 7; my @module_files = ( 'MooseX/Role/Parameterised.pm', 'MooseX/Role/Parameterized.pm', 'MooseX/Role/Parameterized/Meta/Role/Parameterized.pm', 'MooseX/Role/Parameterized/Meta/Trait/Parameterizable.pm', 'MooseX/Role/Parameterized/Meta/Trait/Parameterized.pm', 'MooseX/Role/Parameterized/Parameters.pm' ); # no fake home requested my @switches = ( -d 'blib' ? '-Mblib' : '-Ilib', ); use File::Spec; use IPC::Open3; use IO::Handle; open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; my @warnings; for my $lib (@module_files) { # see L my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-e', "require q[$lib]")) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } is(scalar(@warnings), 0, 'no warnings found') or diag 'got warnings: ', explain(\@warnings); BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing; pod-syntax.t100644000766000024 25213513224542 22224 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/author#!perl # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); 00-report-prereqs.dd100644000766000024 2510013513224542 22016 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tdo { my $x = { 'configure' => { 'requires' => { 'ExtUtils::MakeMaker' => '0', 'Module::Build::Tiny' => '0.034', 'perl' => '5.008001' } }, 'develop' => { 'recommends' => { 'Dist::Zilla::PluginBundle::Author::ETHER' => '0.149', 'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007' }, 'requires' => { 'Encode' => '0', 'File::Spec' => '0', 'IO::Handle' => '0', 'IPC::Open3' => '0', 'MooseX::Role::WithOverloading' => '0.14', 'Pod::Coverage::TrustPod' => '0', 'Test::CPAN::Changes' => '0.19', 'Test::CPAN::Meta' => '0', 'Test::CleanNamespaces' => '0.15', 'Test::EOL' => '0', 'Test::Kwalitee' => '1.21', 'Test::MinimumVersion' => '0', 'Test::Mojibake' => '0', 'Test::More' => '0.96', 'Test::NoTabs' => '0', 'Test::Pod' => '1.41', 'Test::Pod::Coverage' => '1.08', 'Test::Portability::Files' => '0' } }, 'runtime' => { 'requires' => { 'Carp' => '0', 'Module::Runtime' => '0', 'Moose' => '2.0300', 'Moose::Exporter' => '0', 'Moose::Meta::Role' => '0', 'Moose::Role' => '0', 'Moose::Util' => '0', 'namespace::autoclean' => '0', 'namespace::clean' => '0.19', 'perl' => '5.008001', 'strict' => '0', 'warnings' => '0' } }, 'test' => { 'recommends' => { 'CPAN::Meta' => '2.120900' }, 'requires' => { 'CPAN::Meta::Check' => '0.011', 'CPAN::Meta::Requirements' => '0', 'Data::Dumper' => '0', 'File::Spec' => '0', 'Module::Metadata' => '0', 'Moose::Util::TypeConstraints' => '0', 'Storable' => '0', 'Test::Fatal' => '0', 'Test::Moose' => '0', 'Test::More' => '0.96', 'Test::Needs' => '0', 'lib' => '0', 'overload' => '0', 'perl' => '5.008001' } }, 'x_Dist_Zilla' => { 'requires' => { 'Dist::Zilla' => '5', 'Dist::Zilla::Plugin::Authority' => '1.009', 'Dist::Zilla::Plugin::AutoMetaResources' => '0', 'Dist::Zilla::Plugin::AutoPrereqs' => '5.038', 'Dist::Zilla::Plugin::Breaks' => '0', 'Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional' => '0.004', 'Dist::Zilla::Plugin::CheckIssues' => '0', 'Dist::Zilla::Plugin::CheckMetaResources' => '0', 'Dist::Zilla::Plugin::CheckPrereqsIndexed' => '0.019', 'Dist::Zilla::Plugin::CheckSelfDependency' => '0', 'Dist::Zilla::Plugin::CheckStrictVersion' => '0', 'Dist::Zilla::Plugin::ConfirmRelease' => '0', 'Dist::Zilla::Plugin::CopyFilesFromRelease' => '0', 'Dist::Zilla::Plugin::EnsureLatestPerl' => '0', 'Dist::Zilla::Plugin::FileFinder::ByName' => '0', 'Dist::Zilla::Plugin::GenerateFile::FromShareDir' => '0', 'Dist::Zilla::Plugin::Git::Check' => '0', 'Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch' => '0.004', 'Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts' => '0', 'Dist::Zilla::Plugin::Git::Commit' => '2.020', 'Dist::Zilla::Plugin::Git::Contributors' => '0.029', 'Dist::Zilla::Plugin::Git::Describe' => '0.004', 'Dist::Zilla::Plugin::Git::GatherDir' => '2.016', 'Dist::Zilla::Plugin::Git::Push' => '0', 'Dist::Zilla::Plugin::Git::Remote::Check' => '0', 'Dist::Zilla::Plugin::Git::Tag' => '0', 'Dist::Zilla::Plugin::GitHub::Update' => '0.40', 'Dist::Zilla::Plugin::GithubMeta' => '0.54', 'Dist::Zilla::Plugin::InstallGuide' => '1.200005', 'Dist::Zilla::Plugin::Keywords' => '0.004', 'Dist::Zilla::Plugin::License' => '5.038', 'Dist::Zilla::Plugin::MakeMaker::Fallback' => '0.029', 'Dist::Zilla::Plugin::Manifest' => '0', 'Dist::Zilla::Plugin::MetaConfig' => '0', 'Dist::Zilla::Plugin::MetaJSON' => '0', 'Dist::Zilla::Plugin::MetaNoIndex' => '0', 'Dist::Zilla::Plugin::MetaProvides::Package' => '1.15000002', 'Dist::Zilla::Plugin::MetaResources' => '0', 'Dist::Zilla::Plugin::MetaTests' => '0', 'Dist::Zilla::Plugin::MetaYAML' => '0', 'Dist::Zilla::Plugin::MinimumPerl' => '1.006', 'Dist::Zilla::Plugin::ModuleBuildTiny::Fallback' => '0.018', 'Dist::Zilla::Plugin::MojibakeTests' => '0.8', 'Dist::Zilla::Plugin::NextRelease' => '5.033', 'Dist::Zilla::Plugin::PodCoverageTests' => '5.040', 'Dist::Zilla::Plugin::PodSyntaxTests' => '5.040', 'Dist::Zilla::Plugin::PodWeaver' => '4.005', 'Dist::Zilla::Plugin::Prereqs' => '0', 'Dist::Zilla::Plugin::Prereqs::AuthorDeps' => '0.006', 'Dist::Zilla::Plugin::PromptIfStale' => '0', 'Dist::Zilla::Plugin::Readme' => '0', 'Dist::Zilla::Plugin::ReadmeAnyFromPod' => '0.142180', 'Dist::Zilla::Plugin::RewriteVersion::Transitional' => '0.004', 'Dist::Zilla::Plugin::Run::AfterBuild' => '0.041', 'Dist::Zilla::Plugin::Run::AfterRelease' => '0.038', 'Dist::Zilla::Plugin::RunExtraTests' => '0.024', 'Dist::Zilla::Plugin::StaticInstall' => '0.005', 'Dist::Zilla::Plugin::Test::CPAN::Changes' => '0.012', 'Dist::Zilla::Plugin::Test::ChangesHasContent' => '0', 'Dist::Zilla::Plugin::Test::CheckBreaks' => '0.017', 'Dist::Zilla::Plugin::Test::CleanNamespaces' => '0.006', 'Dist::Zilla::Plugin::Test::Compile' => '2.039', 'Dist::Zilla::Plugin::Test::EOL' => '0.17', 'Dist::Zilla::Plugin::Test::Kwalitee' => '2.10', 'Dist::Zilla::Plugin::Test::MinimumVersion' => '2.000010', 'Dist::Zilla::Plugin::Test::NoTabs' => '0.08', 'Dist::Zilla::Plugin::Test::Portability' => '2.000007', 'Dist::Zilla::Plugin::Test::ReportPrereqs' => '0.022', 'Dist::Zilla::Plugin::TestRelease' => '0', 'Dist::Zilla::Plugin::UploadToCPAN' => '0', 'Dist::Zilla::Plugin::UseUnsafeInc' => '0', 'Dist::Zilla::PluginBundle::Author::ETHER' => '0.117', 'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007', 'Software::License::Perl_5' => '0' } } }; $x; }008-method-modifers.t100600000766000024 171413513224542 22033 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; my @calls; do { package MyRole::LogMethod; use MooseX::Role::Parameterized; parameter method => ( isa => 'Str', required => 1, ); role { my $p = shift; before $p->method => sub { push @calls, "calling " . $p->method }; after $p->method => sub { push @calls, "called " . $p->method }; around $p->method => sub { my $orig = shift; my $start = 0; # time $orig->(@_); my $end = 0; # time push @calls, "took " . ($end - $start) . " seconds"; }; }; }; do { package MyClass; use Moose; with 'MyRole::LogMethod' => { method => 'new', }; }; is_deeply([splice @calls], [], "no calls yet"); MyClass->new; is_deeply([splice @calls], ["calling new", "took 0 seconds", "called new"], "instrumented new"); done_testing; 010-blessed-confess.t100600000766000024 35213513224542 21772 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyRole; use MooseX::Role::Parameterized; ::is(\&confess, \&Carp::confess, 'confess'); ::is(\&blessed, \&Scalar::Util::blessed, 'blessed'); }; done_testing; 018-parameter-roles.t100600000766000024 200613513224542 22043 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88 skip_all => "Not implemented yet"; { package Test::Role; use MooseX::Role::Parameterized; parameter name => ( isa => "Str", is => "ro", required => 1, ); role { my $p = shift; method foo => sub { "hello " . $p->name }; has blech => ( isa => "Str", is => "ro", required => 1, ); }; package Test::Consumer; use MooseX::Role::Parameterized -parameter_roles => [ 'Test::Role' => { name => "foo" }, ]; role { my $p = shift; method parameters => sub { $p }; }; package Test::Class; use Moose; with 'Test::Consumer' => { blech => "yes" }; } my $obj = Test::Class->new; does_ok( $obj, "Test::Consumer" ); can_ok( $obj, "parameters" ); my $p = $obj->parameters; does_ok( $p, "Test::Role" ); can_ok( $p, "foo" ); can_ok( $p, "blech" ); is( $p->blech, "yes" ); is( $p->foo, "hello foo" ); done_testing; 021-parameter-trait.t100600000766000024 145313513224542 22041 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyTrait::Labeled; use Moose::Role; has label => ( is => 'ro', isa => 'Str', ); }; do { package P::Role; use MooseX::Role::Parameterized; parameter favorite => ( traits => ['MyTrait::Labeled'], label => 'FAVE', isa => 'Str', ); role { my $p = shift; method faves => sub { $p->meta->get_attribute('favorite')->label . ': ' . $p->favorite }; } }; do { package Class::P::d; use Moose; with 'P::Role' => { favorite => 'ether' }; }; do { package Other::Class::P::d; use Moose; with 'P::Role' => { favorite => 'karen' }; }; is(Class::P::d->faves, 'FAVE: ether'); is(Other::Class::P::d->faves, 'FAVE: karen'); done_testing; 024-named-anonymous.t100600000766000024 165013513224542 22054 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More; { package Test::Role; use MooseX::Role::Parameterized; parameter default_beer => ( isa => "Str", is => "ro", required => 1, ); role { my $p = shift; has beer => ( isa => "Str", is => "ro", default => $p->default_beer, ); }; package Test::Class; use Moose; with 'Test::Role' => { default_beer => "O'Doul's" }; package Test::Class2; use Moose; with 'Test::Role' => { default_beer => "Root" }; } like( ($_->new->meta->calculate_all_roles)[0]->name, qr/\ATest::Role::__ANON__::SERIAL::[0-9]+\z/, "Right looking role name for $_", ) for qw( Test::Class Test::Class2 ); isnt( (Test::Class->new->meta->calculate_all_roles)[0]->name, (Test::Class2->new->meta->calculate_all_roles)[0]->name, 'role names are unique' ); done_testing; portability.t100644000766000024 26713513224542 22466 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse strict; use warnings; use Test::More; eval 'use Test::Portability::Files'; plan skip_all => 'Test::Portability::Files required for testing portability' if $@; run_tests(); 015-compose-keywords.t100600000766000024 214213513224542 22251 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package OtherRole; use Moose::Role; }; do { package MyRole; use MooseX::Role::Parameterized; requires 'requirement'; excludes 'exclusion'; has attribute => (); method meth => sub {}; before meth => sub {}; after meth => sub {}; around meth => sub {}; sub regular_method {} override other_meth => sub { super }; with 'OtherRole'; role { } }; for my $meta (MyRole->meta, MyRole->meta->generate_role) { ok($meta->has_attribute('attribute'), 'has'); ok($meta->has_method('meth'), 'method'); ok($meta->has_method('regular_method'), 'sub'); is($meta->has_before_method_modifiers('meth'), 1, 'before'); is($meta->has_after_method_modifiers('meth'), 1, 'after'); is($meta->has_around_method_modifiers('meth'), 1, 'around'); is($meta->has_override_method_modifier('other_meth'), 1, 'override'); is($meta->does_role('OtherRole'), 1, 'with'); ok($meta->requires_method('requirement'), 'requires'); ok($meta->excludes_role('exclusion'), 'excludes'); } done_testing; pod-coverage.t100644000766000024 33413513224542 22472 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/author#!perl # This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests. use Test::Pod::Coverage 1.08; use Pod::Coverage::TrustPod; all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); 017-current_metaclass.t100600000766000024 217013513224542 22460 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package Labeled; use MooseX::Role::Parameterized; ::is(MooseX::Role::Parameterized->current_metaclass, undef, 'no metaclass yet'); parameter default => ( is => 'rw', isa => 'Str', ); ::is(MooseX::Role::Parameterized->current_metaclass, undef, 'no metaclass yet'); role { my $p = shift; my %args = @_; ::is(MooseX::Role::Parameterized->current_metaclass, $args{operating_on}, 'now we have a metaclass'); has label => ( is => 'rw', isa => 'Str', default => $p->default, ); ::is(MooseX::Role::Parameterized->current_metaclass, $args{operating_on}, 'now we have a metaclass'); }; ::is(MooseX::Role::Parameterized->current_metaclass, undef, 'no metaclass yet'); }; do { package Foo; use Moose; ::is(MooseX::Role::Parameterized->current_metaclass, undef, 'no metaclass yet'); with Labeled => { default => 'foo' }; ::is(MooseX::Role::Parameterized->current_metaclass, undef, 'metaclass is gone now'); }; done_testing; cpan-changes.t100644000766000024 34413513224542 22565 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/releaseuse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::CPAN::Changes 0.012 use Test::More 0.96 tests => 1; use Test::CPAN::Changes; subtest 'changes_ok' => sub { changes_file_ok('Changes'); }; 005-with-parameterized.t100600000766000024 335313513224542 22550 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyItem::Role::Wearable; use MooseX::Role::Parameterized; parameter is_worn_default => ( is => 'rw', isa => 'Bool', default => 1, ); role { my $p = shift; has is_worn => ( is => 'rw', isa => 'Bool', default => $p->is_worn_default, ); method equip => sub { shift->is_worn(1) }; method remove => sub { shift->is_worn(0) }; }; }; do { package MyItem::Role::Equippable; use MooseX::Role::Parameterized; parameter slot => ( isa => 'Str', required => 1, ); # XXX: UGH! We need some way of making this work I think.. parameter is_worn_default => ( is => 'rw', isa => 'Bool', default => 1, ); role { my $p = shift; with 'MyItem::Role::Wearable' => { is_worn_default => $p->is_worn_default, }; method slot => sub { $p->slot }; }; }; do { package MyItem::Helmet; use Moose; with 'MyItem::Role::Equippable' => { slot => 'head', is_worn_default => 0, }; }; do { package MyItem::Belt; use Moose; with 'MyItem::Role::Equippable' => { slot => 'waist', is_worn_default => 1, }; }; can_ok('MyItem::Helmet', qw/is_worn equip remove slot/); can_ok('MyItem::Belt', qw/is_worn equip remove slot/); my $feathered = MyItem::Helmet->new; ok(!$feathered->is_worn, "default for helmet is not worn"); is($feathered->slot, 'head'); my $chastity = MyItem::Belt->new; ok($chastity->is_worn, "default for belt is worn"); is($chastity->slot, 'waist'); done_testing; 100-erroneous-keywords.t100600000766000024 170013513224542 22617 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; use Test::Fatal; do { package MyRole::Storage; use MooseX::Role::Parameterized; ::like( ::exception { parameter() }, qr/^You must provide a name for the attribute/); role { ::like( ::exception { extends 'MyRole::Parameterized'; }, qr/^Roles do not support 'extends' \(you can use 'with' to specialize a role\)/); ::like( ::exception { inner() }, qr/^Roles cannot support 'inner'/); ::like( ::exception { augment() }, qr/^Roles cannot support 'augment'/); ::like( ::exception { parameter() }, qr/^'parameter' may not be used inside of the role block/); ::like( ::exception { role {} }, qr/^'role' may not be used inside of the role block/); }; }; Moose::Meta::Class->create_anon_class( roles => ['MyRole::Storage'], ); done_testing; minimum-version.t100644000766000024 15513513224542 23256 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse strict; use warnings; use Test::More; use Test::MinimumVersion; all_minimum_version_ok( qq{5.008003} ); 011-reference-parameters.t100600000766000024 261313513224542 23035 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyRole::Delegator; use MooseX::Role::Parameterized; parameter handles => ( is => 'rw', required => 1, ); role { my $p = shift; has attr => ( is => 'rw', isa => 'MyClass::WithMethods', handles => $p->handles, ); }; }; do { package MyClass::WithMethods; use Moose; sub foo { "foo" } sub bar { "bar" } sub baz { "baz" } }; do { package MyArrayConsumer; use Moose; with 'MyRole::Delegator' => { handles => ['foo', 'bar'], }; }; can_ok(MyArrayConsumer => 'foo', 'bar'); cant_ok(MyArrayConsumer => 'baz'); do { package MyRegexConsumer; use Moose; with 'MyRole::Delegator' => { handles => qr/^ba/, }; }; can_ok(MyRegexConsumer => 'bar', 'baz'); cant_ok(MyRegexConsumer => 'foo'); do { package MyHashConsumer; use Moose; with 'MyRole::Delegator' => { handles => { my_foo => 'foo', his_baz => 'baz', }, }; }; can_ok(MyHashConsumer => 'my_foo', 'his_baz'); cant_ok(MyHashConsumer => qw/foo bar baz/); sub cant_ok { local $Test::Builder::Level = $Test::Builder::Level + 1; my $instance = shift; for my $method (@_) { ok(!$instance->can($method), "$instance cannot $method"); } } done_testing; clean-namespaces.t100644000766000024 36113513224542 23316 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::CleanNamespaces 0.006 use Test::More 0.94; use Test::CleanNamespaces 0.15; subtest all_namespaces_clean => sub { all_namespaces_clean() }; done_testing; 020-metaclass-reinitialize.t100600000766000024 347713513224542 23411 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; BEGIN { require Moose; if (Moose->VERSION < 1.9900) { plan skip_all => q{this test isn't relevant on Moose 1.x}; } } { package Foo::Meta::Role::Attribute; use Moose::Role; has foo => (is => 'ro'); } { package Foo::Exporter; use Moose::Exporter; Moose::Exporter->setup_import_methods( role_metaroles => { applied_attribute => ['Foo::Meta::Role::Attribute'], }, ); } { package Foo::Role1; use MooseX::Role::Parameterized; role { my $p = shift; my %args = @_; Foo::Exporter->import({into => $args{operating_on}->name}); has foo => (is => 'ro', foo => 'bar'); }; } { package Foo1; use Moose; with 'Foo::Role1'; } { is( Foo1->meta->find_attribute_by_name('foo')->foo, 'bar', 'applied_attribute metaroles work when applied to generated role' ); } { package Foo::Role2; use MooseX::Role::Parameterized; Foo::Exporter->import; has foo => (is => 'ro', foo => 'bar'); role { my $p = shift; has bar => (is => 'ro'); }; } { package Foo2; use Moose; with 'Foo::Role2'; } { is(Foo2->meta->find_attribute_by_name('foo')->foo, 'bar', 'applied_attribute metaroles work when applied to parameterizable role'); } { package Foo::Role3; use MooseX::Role::Parameterized; has foo => (is => 'ro', foo => 'bar'); role { my $p = shift; has bar => (is => 'ro'); }; Foo::Exporter->import; } { package Foo3; use Moose; with 'Foo::Role3'; } { is(Foo3->meta->find_attribute_by_name('foo')->foo, 'bar', 'applied_attribute metaroles work when applied to parameterizable role after the role block has been defined'); } done_testing; 023-metarole-import-params.t100644000766000024 272313513224542 23354 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More skip_all => "Not implemented yet"; BEGIN { package MyTrait::Label; use MooseX::Role::Parameterized; parameter default => ( is => 'rw', isa => 'Str', ); role { my $p = shift; has label => ( is => 'rw', isa => 'Str', default => $p->default, ); }; }; BEGIN { package MyApp::MooseX::LabeledAttributes; use Moose::Exporter; $INC{'MyApp/MooseX/LabeledAttributes.pm'} = 1; # what is the secret sauce? } do { package MyClass::LabeledURL; use Moose; use MyApp::MooseX::LabeledAttributes default => 'no label'; has name => ( is => 'ro', ); has url => ( is => 'ro', label => 'overridden', ); no Moose; no MyApp::MooseX::LabeledAttributes; }; do { package MyClass::LabeledPost; use Moose; use MyApp::MooseX::LabeledAttributes default => 'TODO!'; has name => ( is => 'ro', ); has body => ( is => 'ro', label => 'nevermind...', ); no Moose; no MyApp::MooseX::LabeledAttributes; }; my $url_meta = MyClass::LabeledURL->meta; is($meta->get_attribute('name')->label, 'no label'); is($meta->get_attribute('url')->label, 'overridden'); my $post_meta = MyClass::LabeledPost->meta; is($meta->get_attribute('name')->label, 'TODO!'); is($meta->get_attribute('body')->label, 'nevermind...'); done_testing; 014-compose-parameterizable.t100600000766000024 106013513224542 23546 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyRole; use MooseX::Role::Parameterized; parameter attribute => ( isa => 'Str', ); sub meth { 1 } role { my $p = shift; has $p->attribute => ( is => 'ro', ); }; }; do { package MyClass; use Moose; with 'MyRole' => { attribute => 'attr', }; }; ok(MyClass->can('attr'), "the parameterized attribute was composed"); ok(MyClass->can('meth'), "the unparameterized method was composed"); done_testing; changes_has_content.t100644000766000024 103213513224542 24130 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/authoruse strict; use warnings; use Test::More; plan skip_all => 'xt/release/changes_has_content.t is missing' if not -e 'xt/release/changes_has_content.t'; # skip for master branch, only for travis if (($ENV{TRAVIS_PULL_REQUEST} || '') eq 'false') { chomp(my $branch_name = ($ENV{TRAVIS_BRANCH} || `git rev-parse --abbrev-ref HEAD`)); $TODO = 'Changes need not have content for this release yet if this is only the master branch' if ($branch_name || '') eq 'master'; } do './xt/release/changes_has_content.t'; die $@ if $@; Role000755000766000024 013513224542 20536 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseXParameterised.pm100644000766000024 235013513224542 24021 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Roleuse strict; use warnings; package MooseX::Role::Parameterised; # vim: set ts=8 sts=4 sw=4 tw=115 et : # ABSTRACT: Moose roles with composition parameters our $VERSION = '1.11'; __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterised - Moose roles with composition parameters =head1 VERSION version 1.11 =head1 SYNOPSIS See L; this module is just a stub to help the civilised Perl users find this distribution with search engines. :) =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Parameterized.pm100600000766000024 1653413513224542 24051 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Rolepackage MooseX::Role::Parameterized; # git description: v1.10-8-g9de4ac3 # ABSTRACT: Moose roles with composition parameters # KEYWORDS: moose extension parameter role arguments dynamic parameterised parameterizable parameterisable our $VERSION = '1.11'; use 5.008001; use Moose 2.0300 (); use Moose::Exporter; use Carp 'confess'; use Moose::Util 'find_meta'; use namespace::clean 0.19; use MooseX::Role::Parameterized::Meta::Trait::Parameterizable; our $CURRENT_METACLASS; sub current_metaclass { $CURRENT_METACLASS } my $meta_lookup = sub { my $for = shift; current_metaclass() || find_meta($for); }; Moose::Exporter->setup_import_methods( also => 'Moose::Role', with_caller => [ 'parameter', 'role' ], with_meta => [ 'method', 'with' ], meta_lookup => $meta_lookup, role_metaroles => { role => ['MooseX::Role::Parameterized::Meta::Trait::Parameterizable'], }, ); sub parameter { my $caller = shift; confess "'parameter' may not be used inside of the role block" if current_metaclass && current_metaclass->genitor->name eq $caller; my $meta = find_meta($caller); my $names = shift; $names = [$names] if !ref($names); for my $name (@$names) { $meta->add_parameter($name => ( is => 'ro', @_, )); } } sub role (&) { my $caller = shift; my $role_generator = shift; confess "'role' may not be used inside of the role block" if current_metaclass && current_metaclass->genitor->name eq $caller; find_meta($caller)->role_generator($role_generator); } sub method { my $meta = shift; my $name = shift; my $body = shift; my $method = $meta->method_metaclass->wrap( package_name => $meta->name, name => $name, body => $body, ); $meta->add_method($name => $method); } sub with { local $CURRENT_METACLASS = undef; Moose::Role::with(@_); } 1; __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized - Moose roles with composition parameters =head1 VERSION version 1.11 =head1 SYNOPSIS package Counter; use MooseX::Role::Parameterized; parameter name => ( isa => 'Str', required => 1, ); role { my $p = shift; my $name = $p->name; has $name => ( is => 'rw', isa => 'Int', default => 0, ); method "increment_$name" => sub { my $self = shift; $self->$name($self->$name + 1); }; method "reset_$name" => sub { my $self = shift; $self->$name(0); }; }; package MyGame::Weapon; use Moose; with Counter => { name => 'enchantment' }; package MyGame::Wand; use Moose; with Counter => { name => 'zapped' }; =head1 DESCRIPTION Your parameterized role consists of two new things: parameter declarations and a C block. Parameters are declared using the L keyword which very much resembles L. You can use any option that L accepts. The default value for the C option is C as that's a very common case. Use C<< is => 'bare' >> if you want no accessor. These parameters will get their values when the consuming class (or role) uses L. A parameter object will be constructed with these values, and passed to the C block. The C block then uses the usual L keywords to build up a role. You can shift off the parameter object to inspect what the consuming class provided as parameters. You use the parameters to customize your role however you wish. There are many possible implementations for parameterized roles (hopefully with a consistent enough API); I believe this to be the easiest and most flexible design. Coincidentally, Pugs originally had an eerily similar design. See L for some tips on how to extend this module. =head2 Why a parameters object? I've been asked several times "Why use a parameter I and not just a parameter I? That would eliminate the need to explicitly declare your parameters." The benefits of using an object are similar to the benefits of using Moose. You get an easy way to specify lazy defaults, type constraint, delegation, and so on. You get to use MooseX modules. =for Pod::Coverage current_metaclass method parameter role with =head1 L B If you're new here, please read L for a much gentler introduction. =for stopwords metaobject You also get the usual introspective and intercessory abilities that come standard with the metaobject protocol. Ambitious users should be able to add traits to the parameters metaclass to further customize behavior. Please let me know if you're doing anything viciously complicated with this extension. :) =head1 CAVEATS You must use this syntax to declare methods in the role block: C<< method NAME => sub { ... }; >>. This is due to a limitation in Perl. In return though you can use parameters I! =head1 SEE ALSO L L L L L L L =for stopwords Joose L - this extension ported to JavaScript's Joose =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 CONTRIBUTORS =for stopwords Karen Etheridge Dave Rolsky Jesse Luehrs Oliver Charles Yuval Kogman Robert 'phaylon' Sedlacek Florian Ragwitz Mark Fowler Chris Weyl Csson Andy Jack Ricardo Signes Todd Hepler =over 4 =item * Karen Etheridge =item * Dave Rolsky =item * Jesse Luehrs =item * Oliver Charles =item * Yuval Kogman =item * Robert 'phaylon' Sedlacek =item * Florian Ragwitz =item * Mark Fowler =item * Chris Weyl =item * Csson =item * Andy Jack =item * Ricardo Signes =item * Todd Hepler =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut changes_has_content.t100644000766000024 210013513224542 24243 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/xt/releaseuse Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; my $newver = '1.11'; my $trial_token = '-TRIAL'; my $encoding = 'UTF-8'; SKIP: { ok(-e $changes_file, "$changes_file file exists") or skip 'Changes is missing', 1; ok(_get_changes($newver), "$changes_file has content for $newver"); } done_testing; sub _get_changes { my $newver = shift; # parse changelog to find commit message open(my $fh, '<', $changes_file) or die "cannot open $changes_file: $!"; my $changelog = join('', <$fh>); if ($encoding) { require Encode; $changelog = Encode::decode($encoding, $changelog, Encode::FB_CROAK()); } close $fh; my @content = grep { /^$newver(?:$trial_token)?(?:\s+|$)/ ... /^\S/ } # from newver to un-indented split /\n/, $changelog; shift @content; # drop the version line # drop unindented last line and trailing blank lines pop @content while ( @content && $content[-1] =~ /^(?:\S|\s*$)/ ); # return number of non-blank lines return scalar @content; } 150-composite-role-application.t100600000766000024 452513513224542 24210 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/tuse strict; use warnings; use Test::More 0.88; do { package MyCompositeRoleA; use MooseX::Role::Parameterized; parameter attribute => ( isa => 'Str', required => 1, ); role { my $p = shift; has $p->attribute => ( is => 'rw', ); }; }; do { package MyCompositeRoleB; use MooseX::Role::Parameterized; parameter accessor => ( isa => 'Str', required => 1, ); role { my $p = shift; has $p->accessor => ( is => 'rw', isa => 'Int', ); }; }; do { package MyDoubleConsumer; use Moose; with MyCompositeRoleA => { attribute => 'foo' }, MyCompositeRoleB => { accessor => 'bar' }; }; ok(MyDoubleConsumer->can('foo'), 'first role in composite applied successfully'); ok(MyDoubleConsumer->can('bar'), 'second role in composite applied successfully'); do { package MyExtendingRole; use MooseX::Role::Parameterized; parameter foo => ( isa => 'Int', ); role { my $p = shift; with 'MyCompositeRoleA', { attribute => 'bar' }; has foo => ( is => 'rw', default => sub { $p->foo }, ); }; }; do { package MyExtendedConsumer; use Moose; with MyCompositeRoleA => { attribute => 'baz' }, MyExtendingRole => { foo => 23 }; }; ok(MyExtendedConsumer->can('baz'), 'role composed directly applied successfully'); ok(MyExtendedConsumer->can('bar'), 'role composed through other role applied successfully'); is(eval { MyExtendedConsumer->new->foo }, 23, 'role composing other role applied successfully'); do { package MyRoleProxy; use MooseX::Role::Parameterized; parameter rolename => (isa => "Str"); parameter roleparams => (isa => "HashRef"); role { my $p = shift; with $p->rolename, $p->roleparams; }; }; do { package MyProxyConsumer; use Moose; with( MyRoleProxy => { rolename => 'MyCompositeRoleA', roleparams => { attribute => 'baz' }, }, MyCompositeRoleB => { accessor => 'qux', }, ); }; ok(MyProxyConsumer->can('baz'), 'proxied role got applied successfully'); ok(MyProxyConsumer->can('qux'), 'other role besides proxied one got applied successfully'); done_testing; Parameterized000755000766000024 013513224542 23332 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/RoleTutorial.pod100600000766000024 1725413513224542 26022 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized# PODNAME: MooseX::Role::Parameterized::Tutorial # ABSTRACT: why and how __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized::Tutorial - why and how =head1 VERSION version 1.11 =head1 MOTIVATION Roles are composable units of behavior. They are useful for factoring out functionality common to many classes from any part of your class hierarchy. See L for an introduction to L. While combining roles affords you a great deal of flexibility, individual roles have very little in the way of configurability. Core Moose provides C<-alias> for renaming methods and C<-excludes> for ignoring methods. These options are primarily for resolving role conflicts. Depending on how much of a purist you are, these options are I for resolving role conflicts. See L for more about C<-alias> and C<-excludes>. Because roles serve many different masters, they usually provide only the least common denominator of functionality. To empower roles further, more configurability than C<-alias> and C<-excludes> is required. Perhaps your role needs to know which method to call when it is done processing. Or what default value to use for its C attribute. Parameterized roles offer a solution to these (and other) kinds of problems. =head1 USAGE =head2 C The syntax of a class consuming a parameterized role has not changed from the standard C. You pass in parameters just like you pass in C<-alias> and C<-excludes> to ordinary roles (though your custom parameters do not get hyphens, since these are not core Moose composition parameters): with 'MyRole::InstrumentMethod' => { method_name => 'dbh_do', log_to => 'query.log', }; You can still combine parameterized roles. You just need to specify parameters immediately after the role they belong to: with ( 'My::Parameterized::Role' => { needs_better_example => 1, }, 'My::Other::Role', ); We, like Moose itself, use L to make sure that a list of role names and associated parameters is handled correctly. =head2 C Inside your parameterized role, you specify a set of parameters. This is exactly like specifying the attributes of a class. Instead of L you use the keyword C, but your parameters can use any options to C. parameter 'delegation' => ( isa => 'HashRef|ArrayRef|RegexpRef', predicate => 'has_delegation', ); You do have to declare what parameters you accept, just like you have to declare what attributes you accept for regular Moose objects. One departure from C is that we create a reader accessor for you by default. In other words, we assume C<< is => 'ro' >>. We create this reader for convenience because generally the parameterized role is the only consumer of the parameters object, so data hiding is not as important than in the general case of L. If you do not want an accessor, you can use C<< is => 'bare' >>. =head2 C C takes a block of code that will be used to generate your role with its parameters bound. Here is where you declare components that depend on parameters. You can declare attributes, methods, modifiers, etc. The first argument to the C is an object containing the parameters specified by C. You can access the parameters just like regular attributes on that object. Each time you compose this parameterized role, the C block will be executed. It will receive a new parameter object and produce an entirely new role. That's the whole point, after all. Due to limitations inherent in Perl, you must declare methods with C<< method name => sub { ... } >> instead of the usual C. Your methods may, of course, close over the parameter object. This means that your methods may use parameters however they wish! =head1 USES Ideally these will become fully-explained examples in something resembling L. But for now, only a brain dump. =over 4 =item Configure a role's attributes You can rename methods with core Moose, but now you can rename attributes. You can now also choose type, default value, whether it's required, B, etc. parameter traits => ( isa => 'ArrayRef', default => sub { [] }, ); parameter type => ( isa => 'Str', default => 'Any', ); role { my $p = shift; has action => ( traits => $p->traits, isa => $p->type, ... ); }; =item Inform a role of your class' attributes and methods Core roles can only require methods with specific names chosen by the role. Now your roles can demand that the class specifies a method name you wish the role to instrument, or which attributes to dump to a file. parameter instrument_method => ( isa => 'Str', required => 1, ); role { my $p = shift; around $p->instrument_method => sub { ... }; }; =item Arbitrary execution choices Your role may be able to provide configuration in how the role's methods operate. For example, you can tell the role whether to save intermediate states. parameter save_intermediate => ( isa => 'Bool', default => 0, ); role { my $p = shift; method process => sub { ... if ($p->save_intermediate) { ... } ... }; }; =item Deciding a backend Your role may be able to freeze and thaw your instances using L, L, L. Which backend to use can be a parameter. parameter format => ( isa => (enum ['Storable', 'YAML', 'JSON']), default => 'Storable', ); role { my $p = shift; if ($p->format eq 'Storable') { method freeze => \&Storable::freeze; method thaw => \&Storable::thaw; } elsif ($p->format eq 'YAML') { method freeze => \&YAML::Dump; method thaw => \&YAML::Load; } ... }; =item Additional validation Ordinary roles can require that its consumers have a particular list of method names. Since parameterized roles have direct access to its consumer, you can inspect it and throw errors if the consumer does not meet your needs. role { my $p = shift; my %args = @_; my $consumer = $args{consumer}; $consumer->find_attribute_by_name('stack') or confess "You must have a 'stack' attribute"; my $push = $consumer->find_method_by_name('push') or confess "You must have a 'push' method"; my $params = $push->parsed_signature->positional_params->params; @$params == 1 or confess "Your push method must take a single parameter"; $params->[0]->sigil eq '$' or confess "Your push parameter must be a scalar"; ... }; =back =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Extending.pod100644000766000024 572113513224542 26130 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized# PODNAME: MooseX::Role::Parameterized::Extending # ABSTRACT: extending MooseX::Role::Parameterized roles __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized::Extending - extending MooseX::Role::Parameterized roles =head1 VERSION version 1.11 =head1 DESCRIPTION There are heaps of useful modules in the C namespace that you can use to make your roles more powerful. However, they do not always work out of the box with L, but it's fairly straight-forward to achieve the functionality you desire. L was designed to be as extensible as the rest of L, and as such it is possible to apply custom traits to both the parameterizable role or the ordinary roles they generate. In this example, we will look at applying the fake trait C to a parameterizable role. First we need to define a new metaclass for our parameterizable role. package MyApp::Meta::Role::Parameterizable; use Moose; extends 'MooseX::Role::Parameterized::Meta::Role::Parameterizable'; with 'MooseX::MagicRole'; This is a class (observe that it uses L, not L) which extends the class which governs parameterizable roles. L is the metaclass that packages using L receive by default. Note that the class we are extending, L>|MooseX::Role::Parameterized::Meta::Role::Parameterizable>, is entirely distinct from the similarly-named class which governs the ordinary roles that parameterized roles generate. An instance of L>|MooseX::Role::Parameterized> represents a role with its parameters already bound. Now we can take advantage of our new subclass by specifying that we want to use C as our metaclass when importing L: package MyApp::Role; use MooseX::Role::Parameterized -metaclass => 'MyApp::Meta::Role::Parameterizable'; role { ... } And there you go! C now has the C trait applied. =head1 NAME =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Parameters.pm100644000766000024 271713513224542 26142 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterizedpackage MooseX::Role::Parameterized::Parameters; # ABSTRACT: base class for parameters our $VERSION = '1.11'; use Moose; __PACKAGE__->meta->make_immutable; no Moose; 1; __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized::Parameters - base class for parameters =head1 VERSION version 1.11 =head1 DESCRIPTION This is the base class for parameter objects. Currently empty, but I reserve the right to add things here. Each parameterizable role gets their own anonymous subclass of this; L actually operates on these anonymous subclasses. Each parameterized role gets their own instance of the anonymous subclass (owned by the parameterizable role). =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Role000755000766000024 013513224542 25121 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized/MetaParameterized.pm100644000766000024 264213513224542 30417 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized/Meta/Rolepackage MooseX::Role::Parameterized::Meta::Role::Parameterized; # ABSTRACT: metaclass for parameterized roles our $VERSION = '1.11'; use Moose; extends 'Moose::Meta::Role'; with 'MooseX::Role::Parameterized::Meta::Trait::Parameterized'; __PACKAGE__->meta->make_immutable; no Moose; 1; __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized::Meta::Role::Parameterized - metaclass for parameterized roles =head1 VERSION version 1.11 =head1 DESCRIPTION This is the metaclass for parameterized roles; that is, parameterizable roles with their parameters bound. See L which has all the guts. =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Trait000755000766000024 013513224542 25303 5ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized/MetaParameterized.pm100644000766000024 512113513224542 30574 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized/Meta/Traitpackage MooseX::Role::Parameterized::Meta::Trait::Parameterized; # ABSTRACT: trait for parameterized roles our $VERSION = '1.11'; use Moose::Role; use MooseX::Role::Parameterized::Parameters; use Moose::Util 'find_meta'; use namespace::autoclean; has genitor => ( is => 'ro', does => 'MooseX::Role::Parameterized::Meta::Trait::Parameterizable', required => 1, ); has parameters => ( is => 'rw', isa => 'MooseX::Role::Parameterized::Parameters', ); around reinitialize => sub { my $orig = shift; my $class = shift; my ($pkg) = @_; my $meta = blessed($pkg) ? $pkg : find_meta($pkg); my $genitor = $meta->genitor; my $parameters = $meta->parameters; my $new = $class->$orig( @_, (defined($genitor) ? (genitor => $genitor) : ()), (defined($parameters) ? (parameters => $parameters) : ()), ); # in case the role metaclass was reinitialized $MooseX::Role::Parameterized::CURRENT_METACLASS = $new; return $new; }; 1; __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized::Meta::Trait::Parameterized - trait for parameterized roles =head1 VERSION version 1.11 =head1 DESCRIPTION This is the trait for parameterized roles; that is, parameterizable roles with their parameters bound. All this actually provides is a place to store the L object as well as the L object that generated this role object. =head1 ATTRIBUTES =for stopwords genitor metaobject =head2 genitor Returns the L metaobject that generated this role. =head2 parameters Returns the L object that represents the specific parameter values for this parameterized role. =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Parameterizable.pm100600000766000024 1557413513224542 31134 0ustar00etherstaff000000000000MooseX-Role-Parameterized-1.11/lib/MooseX/Role/Parameterized/Meta/Traitpackage MooseX::Role::Parameterized::Meta::Trait::Parameterizable; # ABSTRACT: trait for parameterizable roles our $VERSION = '1.11'; use Moose::Role; use MooseX::Role::Parameterized::Meta::Role::Parameterized; use MooseX::Role::Parameterized::Parameters; use Module::Runtime 'use_module'; use namespace::autoclean; has parameterized_role_metaclass => ( is => 'ro', isa => 'ClassName', default => 'MooseX::Role::Parameterized::Meta::Role::Parameterized', ); has parameters_class => ( is => 'ro', isa => 'ClassName', default => 'MooseX::Role::Parameterized::Parameters', ); has parameters_metaclass => ( is => 'rw', isa => 'Moose::Meta::Class', lazy => 1, builder => '_build_parameters_metaclass', handles => { has_parameter => 'has_attribute', add_parameter => 'add_attribute', construct_parameters => 'new_object', }, predicate => '_has_parameters_metaclass', ); has role_generator => ( is => 'rw', isa => 'CodeRef', predicate => 'has_role_generator', ); sub _build_parameters_metaclass { my $self = shift; return $self->parameters_class->meta->create_anon_class( superclasses => [$self->parameters_class], ); } my $package_counter = 0; sub generate_role { my $self = shift; my %args = @_; my $parameters = blessed($args{parameters}) ? $args{parameters} : $self->construct_parameters(%{ $args{parameters} }); confess "A role generator is required to apply parameterized roles (did you forget the 'role { ... }' block in your parameterized role '".$self->name."'?)" unless $self->has_role_generator; my $parameterized_role_metaclass = $self->parameterized_role_metaclass; use_module($parameterized_role_metaclass); my $package = $args{package}; unless ($package) { $package_counter++; $package = $self->name . '::__ANON__::SERIAL::' . $package_counter; } my $role = $parameterized_role_metaclass->create( $package, genitor => $self, parameters => $parameters, ); local $MooseX::Role::Parameterized::CURRENT_METACLASS = $role; # The generate_role method is being called directly by things like # MooseX::ClassCompositor. We don't want to force such modules to pass # this arg so we default to something sane. my $orig_apply = $args{orig_apply} || Moose::Meta::Role->can('apply'); $self->$orig_apply($role); $self->role_generator->($parameters, operating_on => $role, consumer => $args{consumer}, ); # don't just return $role here, because it might have been changed when # metaroles are applied return $MooseX::Role::Parameterized::CURRENT_METACLASS; } sub _role_for_combination { my $self = shift; my $parameters = shift; return $self->generate_role( parameters => $parameters, ); } around apply => sub { my $orig = shift; my $self = shift; my $consumer = shift; my %args = @_; my $role = $self->generate_role( consumer => $consumer, parameters => \%args, orig_apply => $orig, ); $role->apply($consumer, %args); }; around reinitialize => sub { my $orig = shift; my $class = shift; my ($pkg) = @_; my $meta = blessed($pkg) ? $pkg : find_meta($pkg); my $meta_meta = $meta->meta; my %p; if ( $meta_meta->can('does_role') && $meta_meta->does_role(__PACKAGE__) ) { %p = map { $_ => $meta->$_ } qw( parameterized_role_metaclass parameters_class ); $p{parameters_metaclass} = $meta->parameters_metaclass if $meta->_has_parameters_metaclass; $p{role_generator} = $meta->role_generator if $meta->has_role_generator; } my $new = $class->$orig( @_, %p, ); return $new; }; 1; __END__ =pod =encoding UTF-8 =head1 NAME MooseX::Role::Parameterized::Meta::Trait::Parameterizable - trait for parameterizable roles =head1 VERSION version 1.11 =head1 DESCRIPTION This is the trait that is applied to the metaclass for parameterizable roles, roles that have their parameters currently unbound. These are the roles that you use L, but instead of composing the parameterizable role, we construct a new parameterized role (L) and use that new parameterized role instead. =head1 ATTRIBUTES =head2 parameterized_role_metaclass The name of the class that will be used to construct the parameterized role. =head2 parameters_class The name of the class that will be used to construct the parameters object. =head2 parameters_metaclass A metaclass representing this role's parameters. It will be an anonymous subclass of L. Each call to L adds an attribute to this metaclass. When this role is consumed, the parameters object will be instantiated using this metaclass. =head2 role_generator A code reference that is used to generate a role based on the parameters provided by the consumer. The user usually specifies it using the L keyword. =head1 METHODS =head2 add_parameter $name, %options Delegates to L on the L object. =head2 construct_parameters %arguments Creates a new L object using metaclass L. The arguments are those specified by the consumer as parameter values. =head2 generate_role %arguments This method generates and returns a new instance of L. It can take any combination of three named arguments: =over 4 =item parameters A hashref of parameters for the role, same as would be passed in at a "with" statement. =item package A package name that, if present, we will use for the generated role; if not, we generate an anonymous role. =item consumer =for stopwords metaobject A consumer metaobject, if available. =back =head2 apply Overrides L to automatically generate the parameterized role. =head1 SUPPORT Bugs may be submitted through L (or L). There is also a mailing list available for users of this distribution, at L. There is also an irc channel available for users of this distribution, at L on C|irc://irc.perl.org/#moose>. =head1 AUTHOR Shawn M Moore =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2008 by Shawn M Moore. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut