Pod-Weaver-4.018/000755 000765 000024 00000000000 14063402522 013600 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/LICENSE000644 000765 000024 00000043663 14063402522 014621 0ustar00rjbsstaff000000 000000 This software is copyright (c) 2021 by Ricardo SIGNES. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2021 by Ricardo SIGNES. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/Changes000644 000765 000024 00000016556 14063402522 015110 0ustar00rjbsstaff000000 000000 Revision history for Pod-Weaver 4.018 2021-06-19 10:55:10-04:00 America/New_York - update author contact info - use postfix dereferencing, since we already require v5.20.0 - add perl support section to docs 4.017 2021-04-17 17:51:31-04:00 America/New_York - no changes from previous trial release 4.016 2021-04-06 22:22:59-04:00 America/New_York (TRIAL RELEASE) - GenerateSection by David Miguel Susano Pinto has been bundled with Pod::Weaver. Although it has been fairly heavily edited, it should be entirely compatible with previous versions. Thanks, David! 4.015 2016-10-14 20:48:13-04:00 America/New_York - fix bugs introduced in 4.014 that would cause [Bugs] and [Legal] to run even when they should've skipped 4.014 2016-09-18 22:25:51-04:00 America/New_York - make links in [Bugs] use L<> (thanks, David Zurborg!) - added debug level logging to the weaver, plugins, and section. GitHub #42. (thanks, Dave Rolsky) 4.013 2016-04-24 23:19:14+01:00 Europe/London - use text for PPI, not octet 4.012 2015-05-05 21:01:33-04:00 America/New_York - avoid breaking up words when wrapping text in [Bugs] 4.011 2015-03-17 07:48:54-04:00 America/New_York - add "header" attributes to more sections, to change the =head1 headert ext (thanks, David Wheeler) 4.010 2014-12-30 22:02:58-05:00 America/New_York - use of Moose::Autobox has been dropped (thanks Karen Etheridge!) 4.009 2014-12-02 23:00:37-05:00 America/New_York - when a Collect-worthy header exists (like =head1 METHODS) use it, rather than making a new one *and* leaving the old one around (thanks, Christian Walde) 4.008 2014-11-12 09:37:13-05:00 America/New_York - handle UTF-8 data in PODNAME and ABSTRACT (thanks, Blabos de Blebe) - Explain Section::Region naming, nonpod, and flattening (thanks, Kent Fredric) 4.007 2014-10-27 22:21:55-04:00 America/New_York - immutabilize ALL THE THINGS! 4.006 2014-01-07 20:12:37-05:00 America/New_York - update tests to pass octets to ->read_string, as is proper 4.005 2013-12-21 15:01:46-0500 America/New_York - updated tests for the new (fixed, consistent) string behavior in Mixin::Linewise 4.004 2013-11-05 21:50:13 America/New_York - allow multi-line formats for VERSION plugin (thanks, Alex Peters) - ...including the %T-prefix for lines only included in trial releases - look for PODNAME more consistently (thanks, Chris Weyl) - put license filename in F<> formatting (thanks, Alex Peters) 4.003 2013-11-02 22:58:43 America/New_York - note that [@Default] contains [-SingleEncoding] (thanks, Caleb Cushing) 4.002 2013-11-02 11:37:04 America/New_York [ THIS MIGHT BREAK YOUR CODE ] - stable release of previous v4 changes 4.001 2013-10-20 10:50:50 America/New_York (TRIAL RELEASE) [ THIS MIGHT BREAK YOUR CODE ] - SingleEncoding now accepts found =encodings as long as they match, unless the plugin's encoding attribute was set explicitly 4.000 2013-10-19 17:20:59 America/New_York (TRIAL RELEASE) [ THIS MIGHT BREAK YOUR CODE ] - the SingleEncoding plugin to force one consistent =encoding - ...is now enabled, for UTF-8, in the default configuration 3.101640 2013-09-17 08:57:41 Asia/Tokyo - fix repository links! argh, oops 3.101639 2013-09-17 08:56:05 Asia/Tokyo - documentation fix: mention that =func exists in the default configuration (thanks, Joshua Keroes!) - removed use of deprecated Class::MOP::load_class (thanks, Karen Etheridge) 3.101638 2012-08-03 20:42:44 America/New_York - add more helpful information to the "no document name" error (thanks, Leto Labs, LLC!) 3.101637 2012-06-07 22:18:55 America/New_York - add header_command attribute to the Collect section (thanks, Christopher J. Madsen) 3.101636 2012-05-04 21:28:10 America/New_York - break the content-generating code in the Version section into its own method (thanks, Chris Weyl) 3.101635 2012-02-07 22:03:26 America/New_York - restore the full-document scan for ABSTRACT if not found in a comment token (thanks, David Golden) 3.101634 2011-10-31 22:56:36 America/New_York - throw a (helpful?) exception when %m is used in a version format, but no package was found in the file - the Legal plugin can now be given the filename in which the dist's full license can be found (thanks, APOCAL!) 3.101633 2011-09-19 15:48:16 America/New_York - speed up performance by changing how we use PPI (thanks, Dave Rolsky) 3.101632 2010-10-19 07:49:32 America/New_York - add missing DateTime prereq 3.101631 2010-10-14 23:00:19 America/New_York - Name section now looks for a PODNAME comment if no package is found (hanekomu) - Added a Bugs section (thanks, David Golden) - Version, Region, and Generic are all more configurable (thanks, Apocalypse) 3.101630 2010-06-12 14:42:26 America/New_York - Author section now emits a normal para or bulleted list (Florian Ragwitz) 3.101460 2010-05-26 22:36:13 America/New_York - compat with Config::MVP::Reader v2 3.101450 2010-05-25 18:38:44 America/New_York - compat with Config::MVP::Reader v1 3.101270 2010-05-07 21:36:45 America/New_York - allow an explicit header arg to Generic 3.100710 2010-03-12 10:03:42 America/New_York - further logging improvements; now uses Log::Dispatchouli explicitly 3.100680 2010-03-09 23:38:30 America/New_York - improve logging delegation to interoperate with recent DZ changes 3.100650 2010-03-06 23:21:19 America/New_York - expect a Log::Dispatchouli-like logger - added a means to tweak the configuration loaded during new - log the file in which errors occur more often 3.100310 2010-01-31 15:32:00 America/New_York - add =func/FUNCTIONS to match =method and =attr - require newer Pod::Elemental (to avoid Moose incompat) 3.093530 2009-12-19 22:52:47 America/New_York - add the -Transformer plugin to allow pass-through for arbitrary Pod::Elemental::Transformers 3.093130 2009-11-09 - add Config::MVP::Reader::INI to prereq 3.093120 2009-11-08 - fix broken prereq (Config::MVP) 3.093001 2009-10-27 - create @Default and use it to set up the new_with_default_config 3.093000 2009-10-27 - plugins for common preparation: -H1Nester, -EnsurePod5, @CorePrep "-" as prefix now denotes a non-Section plugin - tweak weaving phases and methods to add Dialect 3.092990 2009-10-26 - Pod::Weaver::Config and tests for config-from-ini 3.092972 2009-10-24 - no code changes; Pod robuilt 3.092971 2009-10-24 - fixes to make the NAME section "just work" 3.092970 2009-10-24 - total rewrite 1.003 2008-10-?? - use $doc->serialize instead of "$doc" to work with here-docs 1.002 2008-10-13 - add missing prereq (PPI) 1.001 2008-10-12 - fix prereq for testing 1.000 2008-10-12 - first release (at the Pittsburgh Perl Workshop) Pod-Weaver-4.018/MANIFEST000644 000765 000024 00000004060 14063402522 014731 0ustar00rjbsstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.021. Changes LICENSE MANIFEST META.json META.yml Makefile.PL README dist.ini lib/Pod/Weaver.pm lib/Pod/Weaver/Config.pm lib/Pod/Weaver/Config/Assembler.pm lib/Pod/Weaver/Config/Finder.pm lib/Pod/Weaver/Plugin/EnsurePod5.pm lib/Pod/Weaver/Plugin/H1Nester.pm lib/Pod/Weaver/Plugin/SingleEncoding.pm lib/Pod/Weaver/Plugin/Transformer.pm lib/Pod/Weaver/PluginBundle/CorePrep.pm lib/Pod/Weaver/PluginBundle/Default.pm lib/Pod/Weaver/Role/Dialect.pm lib/Pod/Weaver/Role/Finalizer.pm lib/Pod/Weaver/Role/Plugin.pm lib/Pod/Weaver/Role/Preparer.pm lib/Pod/Weaver/Role/Section.pm lib/Pod/Weaver/Role/StringFromComment.pm lib/Pod/Weaver/Role/Transformer.pm lib/Pod/Weaver/Section/Authors.pm lib/Pod/Weaver/Section/Bugs.pm lib/Pod/Weaver/Section/Collect.pm lib/Pod/Weaver/Section/GenerateSection.pm lib/Pod/Weaver/Section/Generic.pm lib/Pod/Weaver/Section/Leftovers.pm lib/Pod/Weaver/Section/Legal.pm lib/Pod/Weaver/Section/Name.pm lib/Pod/Weaver/Section/Region.pm lib/Pod/Weaver/Section/Version.pm t/00-report-prereqs.dd t/00-report-prereqs.t t/basic.t t/eg/basic.in.pod t/eg/basic.out.pod t/eg/encoding.in.pod t/eg/encoding.out.pod t/eg/legal_t1.in.pod t/eg/legal_t1.out.pod t/eg/legal_t2.in.pod t/eg/legal_t2.out.pod t/eg/region_t1.in.pod t/eg/region_t1.out.pod t/eg/region_t2.in.pod t/eg/region_t2.out.pod t/eg/region_t3.in.pod t/eg/region_t3.out.pod t/eg/region_t4.in.pod t/eg/region_t4.out.pod t/eg/version_t1.in.pod t/eg/version_t1.out.pod t/eg/version_t2.in.pod t/eg/version_t2.out.pod t/eg/version_t3.in.pod t/eg/version_t3.out.pod t/eg/version_t4.in.pod t/eg/version_t4.out.pod t/eg/version_t5.in.pod t/eg/version_t5.out.pod t/eg/version_t6-trial.out.pod t/eg/version_t6.in.pod t/eg/version_t6.out.pod t/eg/version_without_package.in.pod t/eg/version_without_package.out.pod t/eg/weaver.ini t/encoding.t t/generate-section.t t/ini-config.t t/legal_section.t t/region_options.t t/required_region.t t/required_section.t t/version_options.t t/version_without_package.t xt/author/pod-syntax.t xt/release/changes_has_content.t Pod-Weaver-4.018/t/000755 000765 000024 00000000000 14063402522 014043 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/xt/000755 000765 000024 00000000000 14063402522 014233 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/README000644 000765 000024 00000000573 14063402522 014465 0ustar00rjbsstaff000000 000000 This archive contains the distribution Pod-Weaver, version 4.018: weave together a Pod document from an outline This software is copyright (c) 2021 by Ricardo SIGNES. 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.021. Pod-Weaver-4.018/META.yml000644 000765 000024 00000033601 14063402522 015054 0ustar00rjbsstaff000000 000000 --- abstract: 'weave together a Pod document from an outline' author: - 'Ricardo SIGNES ' build_requires: ExtUtils::MakeMaker: '0' File::Spec: '0' PPI: '0' Software::License::Artistic_1_0: '0' Software::License::Perl_5: '0' Test::Differences: '0' Test::More: '0.96' configure_requires: ExtUtils::MakeMaker: '6.78' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.021, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Pod-Weaver requires: Config::MVP: '2' Config::MVP::Assembler: '0' Config::MVP::Assembler::WithBundles: '0' Config::MVP::Reader::Finder: '0' Config::MVP::Reader::INI: '0' DateTime: '0' File::Spec: '0' List::MoreUtils: '0' List::Util: '1.33' Log::Dispatchouli: '1.100710' Mixin::Linewise::Readers: '0.103' Module::Runtime: '0' Moose: '0' Moose::Role: '0' Moose::Util::TypeConstraints: '0' Params::Util: '0' Pod::Elemental: '0.100220' Pod::Elemental::Document: '0' Pod::Elemental::Element::Nested: '0' Pod::Elemental::Element::Pod5::Command: '0' Pod::Elemental::Element::Pod5::Ordinary: '0' Pod::Elemental::Element::Pod5::Region: '0' Pod::Elemental::Element::Pod5::Verbatim: '0' Pod::Elemental::Selectors: '0' Pod::Elemental::Transformer::Gatherer: '0' Pod::Elemental::Transformer::Nester: '0' Pod::Elemental::Transformer::Pod5: '0' Pod::Elemental::Types: '0' String::Flogger: '1' String::Formatter: '0.100680' String::RewritePrefix: '0' Text::Template: '0' Text::Wrap: '0' experimental: '0' feature: '0' namespace::autoclean: '0' perl: v5.20.0 strict: '0' utf8: '0' warnings: '0' resources: bugtracker: https://github.com/rjbs/Pod-Weaver/issues homepage: https://github.com/rjbs/Pod-Weaver repository: https://github.com/rjbs/Pod-Weaver.git version: '4.018' x_Dist_Zilla: perl: version: '5.034000' plugins: - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: runtime type: requires name: Prereqs version: '6.021' - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: [] exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@RJBS/Git::GatherDir' version: '2.047' - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@RJBS/CheckPrereqsIndexed' version: '0.020' - class: Dist::Zilla::Plugin::CheckExtraTests name: '@RJBS/CheckExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 0 check_all_prereqs: 0 modules: - Dist::Zilla::PluginBundle::RJBS phase: build run_under_travis: 0 skip: [] name: '@RJBS/RJBS-Outdated' version: '0.057' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 0 modules: [] phase: release run_under_travis: 0 skip: - Dist::Zilla::Plugin::RJBSMisc name: '@RJBS/CPAN-Outdated' version: '0.057' - class: Dist::Zilla::Plugin::PruneCruft name: '@RJBS/@Filter/PruneCruft' version: '6.021' - class: Dist::Zilla::Plugin::ManifestSkip name: '@RJBS/@Filter/ManifestSkip' version: '6.021' - class: Dist::Zilla::Plugin::MetaYAML name: '@RJBS/@Filter/MetaYAML' version: '6.021' - class: Dist::Zilla::Plugin::License name: '@RJBS/@Filter/License' version: '6.021' - class: Dist::Zilla::Plugin::Readme name: '@RJBS/@Filter/Readme' version: '6.021' - class: Dist::Zilla::Plugin::ExecDir name: '@RJBS/@Filter/ExecDir' version: '6.021' - class: Dist::Zilla::Plugin::ShareDir name: '@RJBS/@Filter/ShareDir' version: '6.021' - class: Dist::Zilla::Plugin::Manifest name: '@RJBS/@Filter/Manifest' version: '6.021' - class: Dist::Zilla::Plugin::TestRelease name: '@RJBS/@Filter/TestRelease' version: '6.021' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@RJBS/@Filter/ConfirmRelease' version: '6.021' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@RJBS/@Filter/UploadToCPAN' version: '6.021' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@RJBS/MakeMaker' version: '6.021' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@RJBS/AutoPrereqs' version: '6.021' - class: Dist::Zilla::Plugin::Git::NextVersion config: Dist::Zilla::Plugin::Git::NextVersion: first_version: '0.001' version_by_branch: 1 version_regexp: (?^:^([0-9]+\.[0-9]+)$) Dist::Zilla::Role::Git::Repo: git_version: '2.30.1 (Apple Git-130)' repo_root: . name: '@RJBS/Git::NextVersion' version: '2.047' - class: Dist::Zilla::Plugin::PkgVersion name: '@RJBS/PkgVersion' version: '6.021' - class: Dist::Zilla::Plugin::MetaConfig name: '@RJBS/MetaConfig' version: '6.021' - class: Dist::Zilla::Plugin::MetaJSON name: '@RJBS/MetaJSON' version: '6.021' - class: Dist::Zilla::Plugin::NextRelease name: '@RJBS/NextRelease' version: '6.021' - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@RJBS/Test::ChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@RJBS/PodSyntaxTests' version: '6.021' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@RJBS/Test::ReportPrereqs' version: '0.028' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@RJBS/TestMoreWithSubtests' version: '6.021' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: config_plugins: - '@RJBS' finder: - ':InstallModules' - ':ExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@CorePrep/EnsurePod5' version: '4.018' - class: Pod::Weaver::Plugin::H1Nester name: '@CorePrep/H1Nester' version: '4.018' - class: Pod::Weaver::Plugin::SingleEncoding name: '@RJBS/SingleEncoding' version: '4.018' - class: Pod::Weaver::Section::Name name: '@RJBS/Name' version: '4.018' - class: Pod::Weaver::Section::Version name: '@RJBS/Version' version: '4.018' - class: Pod::Weaver::Section::Region name: '@RJBS/Prelude' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Synopsis' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Description' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Overview' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Stability' version: '4.018' - class: Pod::Weaver::Section::GenerateSection name: '@RJBS/PerlSupport' version: '4.018' - class: Pod::Weaver::Section::Collect name: Attributes version: '4.018' - class: Pod::Weaver::Section::Collect name: Methods version: '4.018' - class: Pod::Weaver::Section::Collect name: Functions version: '4.018' - class: Pod::Weaver::Section::Leftovers name: '@RJBS/Leftovers' version: '4.018' - class: Pod::Weaver::Section::Region name: '@RJBS/postlude' version: '4.018' - class: Pod::Weaver::Section::Authors name: '@RJBS/Authors' version: '4.018' - class: Pod::Weaver::Section::Contributors name: '@RJBS/Contributors' version: '0.009' - class: Pod::Weaver::Section::Legal name: '@RJBS/Legal' version: '4.018' - class: Pod::Weaver::Plugin::Transformer name: '@RJBS/List' version: '4.018' name: '@RJBS/PodWeaver' version: '4.008' - class: Dist::Zilla::Plugin::RJBSMisc name: '@RJBS/RJBSMisc' version: '5.019' - class: Dist::Zilla::Plugin::GithubMeta name: '@RJBS/GithubMeta' version: '0.58' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: '2.30.1 (Apple Git-130)' repo_root: . name: '@RJBS/@Git/Check' version: '2.047' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: v%V%n%n%c signoff: '0' Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: '2.30.1 (Apple Git-130)' repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Commit' version: '2.047' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: '4.018' tag_format: '%v' tag_message: v%V Dist::Zilla::Role::Git::Repo: git_version: '2.30.1 (Apple Git-130)' repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Tag' version: '2.047' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - 'github :' remotes_must_exist: 0 Dist::Zilla::Role::Git::Repo: git_version: '2.30.1 (Apple Git-130)' repo_root: . name: '@RJBS/@Git/Push' version: '2.047' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: git_version: '2.30.1 (Apple Git-130)' include_authors: 0 include_releaser: 1 order_by: name paths: [] name: '@RJBS/Git::Contributors' version: '0.036' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.021' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.021' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' version: '6.021' x_contributors: - 'Alex Peters ' - 'Apocalypse ' - 'Blabos de Blebe ' - 'Caleb Cushing ' - 'Christian Walde ' - 'Christopher J. Madsen ' - 'Chris Weyl ' - 'Dave Houston ' - 'Dave Rolsky ' - 'David E. Wheeler ' - 'David Golden ' - 'David Miguel Susano Pinto ' - 'David Zurborg ' - 'Doug Bell ' - 'Florian Ragwitz ' - 'Jonathan "Duke" Leto ' - 'Joshua Keroes ' - 'Karen Etheridge ' - 'Kent Fredric ' - 'Kivanc Yazan ' - 'Marcel Gruenauer ' - 'Randy Stauner ' - 'Sam Graham ' - 'Shlomi Fish ' x_generated_by_perl: v5.34.0 x_rjbs_perl_support: standard x_serialization_backend: 'YAML::Tiny version 1.73' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' Pod-Weaver-4.018/lib/000755 000765 000024 00000000000 14063402522 014346 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/Makefile.PL000644 000765 000024 00000007542 14063402522 015562 0ustar00rjbsstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.021. use strict; use warnings; use 5.020000; use ExtUtils::MakeMaker 6.78; my %WriteMakefileArgs = ( "ABSTRACT" => "weave together a Pod document from an outline", "AUTHOR" => "Ricardo SIGNES ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.78" }, "DISTNAME" => "Pod-Weaver", "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.020000", "NAME" => "Pod::Weaver", "PREREQ_PM" => { "Config::MVP" => 2, "Config::MVP::Assembler" => 0, "Config::MVP::Assembler::WithBundles" => 0, "Config::MVP::Reader::Finder" => 0, "Config::MVP::Reader::INI" => 0, "DateTime" => 0, "File::Spec" => 0, "List::MoreUtils" => 0, "List::Util" => "1.33", "Log::Dispatchouli" => "1.100710", "Mixin::Linewise::Readers" => "0.103", "Module::Runtime" => 0, "Moose" => 0, "Moose::Role" => 0, "Moose::Util::TypeConstraints" => 0, "Params::Util" => 0, "Pod::Elemental" => "0.100220", "Pod::Elemental::Document" => 0, "Pod::Elemental::Element::Nested" => 0, "Pod::Elemental::Element::Pod5::Command" => 0, "Pod::Elemental::Element::Pod5::Ordinary" => 0, "Pod::Elemental::Element::Pod5::Region" => 0, "Pod::Elemental::Element::Pod5::Verbatim" => 0, "Pod::Elemental::Selectors" => 0, "Pod::Elemental::Transformer::Gatherer" => 0, "Pod::Elemental::Transformer::Nester" => 0, "Pod::Elemental::Transformer::Pod5" => 0, "Pod::Elemental::Types" => 0, "String::Flogger" => 1, "String::Formatter" => "0.100680", "String::RewritePrefix" => 0, "Text::Template" => 0, "Text::Wrap" => 0, "experimental" => 0, "feature" => 0, "namespace::autoclean" => 0, "strict" => 0, "utf8" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "PPI" => 0, "Software::License::Artistic_1_0" => 0, "Software::License::Perl_5" => 0, "Test::Differences" => 0, "Test::More" => "0.96" }, "VERSION" => "4.018", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "Config::MVP" => 2, "Config::MVP::Assembler" => 0, "Config::MVP::Assembler::WithBundles" => 0, "Config::MVP::Reader::Finder" => 0, "Config::MVP::Reader::INI" => 0, "DateTime" => 0, "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "List::MoreUtils" => 0, "List::Util" => "1.33", "Log::Dispatchouli" => "1.100710", "Mixin::Linewise::Readers" => "0.103", "Module::Runtime" => 0, "Moose" => 0, "Moose::Role" => 0, "Moose::Util::TypeConstraints" => 0, "PPI" => 0, "Params::Util" => 0, "Pod::Elemental" => "0.100220", "Pod::Elemental::Document" => 0, "Pod::Elemental::Element::Nested" => 0, "Pod::Elemental::Element::Pod5::Command" => 0, "Pod::Elemental::Element::Pod5::Ordinary" => 0, "Pod::Elemental::Element::Pod5::Region" => 0, "Pod::Elemental::Element::Pod5::Verbatim" => 0, "Pod::Elemental::Selectors" => 0, "Pod::Elemental::Transformer::Gatherer" => 0, "Pod::Elemental::Transformer::Nester" => 0, "Pod::Elemental::Transformer::Pod5" => 0, "Pod::Elemental::Types" => 0, "Software::License::Artistic_1_0" => 0, "Software::License::Perl_5" => 0, "String::Flogger" => 1, "String::Formatter" => "0.100680", "String::RewritePrefix" => 0, "Test::Differences" => 0, "Test::More" => "0.96", "Text::Template" => 0, "Text::Wrap" => 0, "experimental" => 0, "feature" => 0, "namespace::autoclean" => 0, "strict" => 0, "utf8" => 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); Pod-Weaver-4.018/META.json000644 000765 000024 00000052232 14063402522 015225 0ustar00rjbsstaff000000 000000 { "abstract" : "weave together a Pod document from an outline", "author" : [ "Ricardo SIGNES " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.021, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Pod-Weaver", "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.78" } }, "develop" : { "requires" : { "Encode" : "0", "Test::More" : "0", "Test::Pod" : "1.41" } }, "runtime" : { "requires" : { "Config::MVP" : "2", "Config::MVP::Assembler" : "0", "Config::MVP::Assembler::WithBundles" : "0", "Config::MVP::Reader::Finder" : "0", "Config::MVP::Reader::INI" : "0", "DateTime" : "0", "File::Spec" : "0", "List::MoreUtils" : "0", "List::Util" : "1.33", "Log::Dispatchouli" : "1.100710", "Mixin::Linewise::Readers" : "0.103", "Module::Runtime" : "0", "Moose" : "0", "Moose::Role" : "0", "Moose::Util::TypeConstraints" : "0", "Params::Util" : "0", "Pod::Elemental" : "0.100220", "Pod::Elemental::Document" : "0", "Pod::Elemental::Element::Nested" : "0", "Pod::Elemental::Element::Pod5::Command" : "0", "Pod::Elemental::Element::Pod5::Ordinary" : "0", "Pod::Elemental::Element::Pod5::Region" : "0", "Pod::Elemental::Element::Pod5::Verbatim" : "0", "Pod::Elemental::Selectors" : "0", "Pod::Elemental::Transformer::Gatherer" : "0", "Pod::Elemental::Transformer::Nester" : "0", "Pod::Elemental::Transformer::Pod5" : "0", "Pod::Elemental::Types" : "0", "String::Flogger" : "1", "String::Formatter" : "0.100680", "String::RewritePrefix" : "0", "Text::Template" : "0", "Text::Wrap" : "0", "experimental" : "0", "feature" : "0", "namespace::autoclean" : "0", "perl" : "v5.20.0", "strict" : "0", "utf8" : "0", "warnings" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "ExtUtils::MakeMaker" : "0", "File::Spec" : "0", "PPI" : "0", "Software::License::Artistic_1_0" : "0", "Software::License::Perl_5" : "0", "Test::Differences" : "0", "Test::More" : "0.96" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/rjbs/Pod-Weaver/issues" }, "homepage" : "https://github.com/rjbs/Pod-Weaver", "repository" : { "type" : "git", "url" : "https://github.com/rjbs/Pod-Weaver.git", "web" : "https://github.com/rjbs/Pod-Weaver" } }, "version" : "4.018", "x_Dist_Zilla" : { "perl" : { "version" : "5.034000" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "runtime", "type" : "requires" } }, "name" : "Prereqs", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@RJBS/Git::GatherDir", "version" : "2.047" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@RJBS/CheckPrereqsIndexed", "version" : "0.020" }, { "class" : "Dist::Zilla::Plugin::CheckExtraTests", "name" : "@RJBS/CheckExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 0, "check_all_prereqs" : 0, "modules" : [ "Dist::Zilla::PluginBundle::RJBS" ], "phase" : "build", "run_under_travis" : 0, "skip" : [] } }, "name" : "@RJBS/RJBS-Outdated", "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 0, "modules" : [], "phase" : "release", "run_under_travis" : 0, "skip" : [ "Dist::Zilla::Plugin::RJBSMisc" ] } }, "name" : "@RJBS/CPAN-Outdated", "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@RJBS/@Filter/PruneCruft", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@RJBS/@Filter/ManifestSkip", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@RJBS/@Filter/MetaYAML", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@RJBS/@Filter/License", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@RJBS/@Filter/Readme", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@RJBS/@Filter/ExecDir", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@RJBS/@Filter/ShareDir", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@RJBS/@Filter/Manifest", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@RJBS/@Filter/TestRelease", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@RJBS/@Filter/ConfirmRelease", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@RJBS/@Filter/UploadToCPAN", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@RJBS/MakeMaker", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@RJBS/AutoPrereqs", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "config" : { "Dist::Zilla::Plugin::Git::NextVersion" : { "first_version" : "0.001", "version_by_branch" : 1, "version_regexp" : "(?^:^([0-9]+\\.[0-9]+)$)" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.30.1 (Apple Git-130)", "repo_root" : "." } }, "name" : "@RJBS/Git::NextVersion", "version" : "2.047" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@RJBS/PkgVersion", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@RJBS/MetaConfig", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@RJBS/MetaJSON", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@RJBS/NextRelease", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@RJBS/Test::ChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@RJBS/PodSyntaxTests", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@RJBS/Test::ReportPrereqs", "version" : "0.028" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@RJBS/TestMoreWithSubtests", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "config_plugins" : [ "@RJBS" ], "finder" : [ ":InstallModules", ":ExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@CorePrep/EnsurePod5", "version" : "4.018" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@CorePrep/H1Nester", "version" : "4.018" }, { "class" : "Pod::Weaver::Plugin::SingleEncoding", "name" : "@RJBS/SingleEncoding", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@RJBS/Name", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Version", "name" : "@RJBS/Version", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@RJBS/Prelude", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Synopsis", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Description", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Overview", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Stability", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@RJBS/PerlSupport", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Attributes", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Methods", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Functions", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "@RJBS/Leftovers", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@RJBS/postlude", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "@RJBS/Authors", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "@RJBS/Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "@RJBS/Legal", "version" : "4.018" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@RJBS/List", "version" : "4.018" } ] } }, "name" : "@RJBS/PodWeaver", "version" : "4.008" }, { "class" : "Dist::Zilla::Plugin::RJBSMisc", "name" : "@RJBS/RJBSMisc", "version" : "5.019" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@RJBS/GithubMeta", "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.30.1 (Apple Git-130)", "repo_root" : "." } }, "name" : "@RJBS/@Git/Check", "version" : "2.047" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "v%V%n%n%c", "signoff" : 0 }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.30.1 (Apple Git-130)", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@RJBS/@Git/Commit", "version" : "2.047" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "4.018", "tag_format" : "%v", "tag_message" : "v%V" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.30.1 (Apple Git-130)", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@RJBS/@Git/Tag", "version" : "2.047" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "github :" ], "remotes_must_exist" : 0 }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.30.1 (Apple Git-130)", "repo_root" : "." } }, "name" : "@RJBS/@Git/Push", "version" : "2.047" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "git_version" : "2.30.1 (Apple Git-130)", "include_authors" : 0, "include_releaser" : 1, "order_by" : "name", "paths" : [] } }, "name" : "@RJBS/Git::Contributors", "version" : "0.036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.021" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.021" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.021" } }, "x_contributors" : [ "Alex Peters ", "Apocalypse ", "Blabos de Blebe ", "Caleb Cushing ", "Christian Walde ", "Christopher J. Madsen ", "Chris Weyl ", "Dave Houston ", "Dave Rolsky ", "David E. Wheeler ", "David Golden ", "David Miguel Susano Pinto ", "David Zurborg ", "Doug Bell ", "Florian Ragwitz ", "Jonathan \"Duke\" Leto ", "Joshua Keroes ", "Karen Etheridge ", "Kent Fredric ", "Kivanc Yazan ", "Marcel Gruenauer ", "Randy Stauner ", "Sam Graham ", "Shlomi Fish " ], "x_generated_by_perl" : "v5.34.0", "x_rjbs_perl_support" : "standard", "x_serialization_backend" : "Cpanel::JSON::XS version 4.26", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later" } Pod-Weaver-4.018/dist.ini000644 000765 000024 00000000426 14063402522 015246 0ustar00rjbsstaff000000 000000 name = Pod-Weaver author = Ricardo SIGNES license = Perl_5 copyright_holder = Ricardo SIGNES [Prereqs] Config::MVP::Reader::INI = 0 ; to make testing simpler Mixin::Linewise::Readers = 0.103 ; fixed string semantics [@RJBS] perl-support = standard Pod-Weaver-4.018/lib/Pod/000755 000765 000024 00000000000 14063402522 015070 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver.pm000644 000765 000024 00000025237 14063402522 016670 0ustar00rjbsstaff000000 000000 package Pod::Weaver 4.018; # ABSTRACT: weave together a Pod document from an outline use Moose; use namespace::autoclean; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 SYNOPSIS #pod #pod my $weaver = Pod::Weaver->new_with_default_config; #pod #pod my $document = $weaver->weave_document({ #pod pod_document => $pod_elemental_document, #pod ppi_document => $ppi_document, #pod #pod license => $software_license, #pod version => $version_string, #pod authors => \@author_names, #pod }) #pod #pod =head1 DESCRIPTION #pod #pod Pod::Weaver is a system for building Pod documents from templates. It doesn't #pod perform simple text substitution, but instead builds a #pod Pod::Elemental::Document. Its plugins sketch out a series of sections #pod that will be produced based on an existing Pod document or other provided #pod information. #pod #pod =cut use File::Spec; use Log::Dispatchouli 1.100710; # proxy use Pod::Elemental 0.100220; use Pod::Elemental::Document; use Pod::Weaver::Config::Finder; use Pod::Weaver::Role::Plugin; use String::Flogger 1; #pod =attr logger #pod #pod This attribute stores the logger, which must provide a log method. The #pod weaver's log method delegates to the logger's log method. #pod #pod =cut has logger => ( is => 'ro', lazy => 1, default => sub { Log::Dispatchouli->new({ ident => 'Pod::Weaver', to_stdout => 1, log_pid => 0, }); }, handles => [ qw(log log_fatal log_debug) ] ); #pod =attr plugins #pod #pod This attribute is an arrayref of objects that can perform the #pod L role. In general, its contents are found through #pod the C> method. #pod #pod =cut has plugins => ( is => 'ro', isa => 'ArrayRef[Pod::Weaver::Role::Plugin]', required => 1, lazy => 1, init_arg => undef, default => sub { [] }, ); #pod =method plugins_with #pod #pod my $plugins_array_ref = $weaver->plugins_with('-Section'); #pod #pod This method will return an arrayref of plugins that perform the given role, in #pod the order of their registration. If the role name begins with a hyphen, the #pod method will prepend C. #pod #pod =cut sub plugins_with { my ($self, $role) = @_; $role =~ s/^-/Pod::Weaver::Role::/; my @plugins = grep { $_->does($role) } $self->plugins->@*; return \@plugins; } #pod =method weave_document #pod #pod my $document = $weaver->weave_document(\%input); #pod #pod This is the most important method in Pod::Weaver. Given a set of input #pod parameters, it will weave a new document. Different section plugins will #pod expect different input parameters to be present, but some common ones include: #pod #pod pod_document - a Pod::Elemental::Document for the original Pod document #pod ppi_document - a PPI document for the source of the module being documented #pod license - a Software::License object for the source module's license #pod version - a version (string) to use in produced documentation #pod #pod The C should have gone through a L, and should probably have had #pod its C<=head1> elements L. #pod #pod The method will return a new Pod::Elemental::Document. The input documents may #pod be destructively altered during the weaving process. If they should be #pod untouched, pass in copies. #pod #pod =cut sub weave_document { my ($self, $input) = @_; my $document = Pod::Elemental::Document->new; for ($self->plugins_with(-Preparer)->@*) { $_->prepare_input($input); } for ($self->plugins_with(-Dialect)->@*) { $_->translate_dialect($input->{pod_document}); } for ($self->plugins_with(-Transformer)->@*) { $_->transform_document($input->{pod_document}); } for ($self->plugins_with(-Section)->@*) { $_->weave_section($document, $input); } for ($self->plugins_with(-Finalizer)->@*) { $_->finalize_document($document, $input); } return $document; } #pod =method new_with_default_config #pod #pod This method returns a new Pod::Weaver with a stock configuration by using only #pod L. #pod #pod =cut sub new_with_default_config { my ($class, $arg) = @_; my $assembler = Pod::Weaver::Config::Assembler->new; my $root = $assembler->section_class->new({ name => '_' }); $assembler->sequence->add_section($root); $assembler->change_section('@Default'); $assembler->end_section; return $class->new_from_config_sequence($assembler->sequence, $arg); } sub new_from_config { my ($class, $arg, $new_arg) = @_; my $root = $arg->{root} || '.'; my $name = File::Spec->catfile($root, 'weaver'); my ($sequence) = Pod::Weaver::Config::Finder->new->read_config($name); return $class->new_from_config_sequence($sequence, $new_arg); } sub new_from_config_sequence { my ($class, $seq, $arg) = @_; $arg ||= {}; my $merge = $arg->{root_config} || {}; confess("config must be a Config::MVP::Sequence") unless $seq and $seq->isa('Config::MVP::Sequence'); my $core_config = $seq->section_named('_')->payload; my $self = $class->new({ %$merge, %$core_config, }); for my $section ($seq->sections) { next if $section->name eq '_'; my ($name, $plugin_class, $arg) = ( $section->name, $section->package, $section->payload, ); $self->log_debug("initializing plugin $name ($plugin_class)"); confess "arguments attempted to override 'plugin_name'" if defined $arg->{plugin_name}; confess "arguments attempted to override 'weaver'" if defined $arg->{weaver}; push $self->plugins->@*, $plugin_class->new({ %$arg, plugin_name => $name, weaver => $self, }); } return $self; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver - weave together a Pod document from an outline =head1 VERSION version 4.018 =head1 SYNOPSIS my $weaver = Pod::Weaver->new_with_default_config; my $document = $weaver->weave_document({ pod_document => $pod_elemental_document, ppi_document => $ppi_document, license => $software_license, version => $version_string, authors => \@author_names, }) =head1 DESCRIPTION Pod::Weaver is a system for building Pod documents from templates. It doesn't perform simple text substitution, but instead builds a Pod::Elemental::Document. Its plugins sketch out a series of sections that will be produced based on an existing Pod document or other provided information. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 logger This attribute stores the logger, which must provide a log method. The weaver's log method delegates to the logger's log method. =head2 plugins This attribute is an arrayref of objects that can perform the L role. In general, its contents are found through the C> method. =head1 METHODS =head2 plugins_with my $plugins_array_ref = $weaver->plugins_with('-Section'); This method will return an arrayref of plugins that perform the given role, in the order of their registration. If the role name begins with a hyphen, the method will prepend C. =head2 weave_document my $document = $weaver->weave_document(\%input); This is the most important method in Pod::Weaver. Given a set of input parameters, it will weave a new document. Different section plugins will expect different input parameters to be present, but some common ones include: pod_document - a Pod::Elemental::Document for the original Pod document ppi_document - a PPI document for the source of the module being documented license - a Software::License object for the source module's license version - a version (string) to use in produced documentation The C should have gone through a L, and should probably have had its C<=head1> elements L. The method will return a new Pod::Elemental::Document. The input documents may be destructively altered during the weaving process. If they should be untouched, pass in copies. =head2 new_with_default_config This method returns a new Pod::Weaver with a stock configuration by using only L. =head1 AUTHOR Ricardo SIGNES =head1 CONTRIBUTORS =for stopwords Alex Peters Apocalypse Blabos de Blebe Caleb Cushing Christian Walde Christopher J. Madsen Chris Weyl Dave Houston Rolsky David E. Wheeler Golden Miguel Susano Pinto Zurborg Doug Bell Florian Ragwitz Jonathan "Duke" Leto Joshua Keroes Karen Etheridge Kent Fredric Kivanc Yazan Marcel Gruenauer Randy Stauner Sam Graham Shlomi Fish =over 4 =item * Alex Peters =item * Apocalypse =item * Blabos de Blebe =item * Caleb Cushing =item * Christian Walde =item * Christopher J. Madsen =item * Chris Weyl =item * Dave Houston =item * Dave Rolsky =item * David E. Wheeler =item * David Golden =item * David Miguel Susano Pinto =item * David Zurborg =item * Doug Bell =item * Florian Ragwitz =item * Jonathan "Duke" Leto =item * Joshua Keroes =item * Karen Etheridge =item * Kent Fredric =item * Kivanc Yazan =item * Marcel Gruenauer =item * Randy Stauner =item * Sam Graham =item * Shlomi Fish =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/000755 000765 000024 00000000000 14063402522 016321 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver/Role/000755 000765 000024 00000000000 14063402522 017222 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver/Section/000755 000765 000024 00000000000 14063402522 017725 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver/Config.pm000644 000765 000024 00000004306 14063402522 020067 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Config 4.018; # ABSTRACT: stored configuration loader role use Moose::Role; use Config::MVP 2; use Pod::Weaver::Config::Assembler; use namespace::autoclean; #pod =head1 DESCRIPTION #pod #pod The config role provides some helpers for writing a configuration loader using #pod the L system to load and validate its configuration. #pod #pod =attr assembler #pod #pod The L attribute must be a Config::MVP::Assembler, has a sensible #pod default that will handle the standard needs of a config loader. Namely, it #pod will be pre-loaded with a starting section for root configuration. #pod #pod =cut sub build_assembler { my $assembler = Pod::Weaver::Config::Assembler->new; my $root = $assembler->section_class->new({ name => '_', }); $assembler->sequence->add_section($root); return $assembler; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Config - stored configuration loader role =head1 VERSION version 4.018 =head1 DESCRIPTION The config role provides some helpers for writing a configuration loader using the L system to load and validate its configuration. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 assembler The L attribute must be a Config::MVP::Assembler, has a sensible default that will handle the standard needs of a config loader. Namely, it will be pre-loaded with a starting section for root configuration. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Config/000755 000765 000024 00000000000 14063402522 017526 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver/Plugin/000755 000765 000024 00000000000 14063402522 017557 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver/PluginBundle/000755 000765 000024 00000000000 14063402522 020711 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/lib/Pod/Weaver/PluginBundle/CorePrep.pm000644 000765 000024 00000003037 14063402522 022771 0ustar00rjbsstaff000000 000000 use strict; use warnings; package Pod::Weaver::PluginBundle::CorePrep 4.018; # ABSTRACT: a bundle for the most commonly-needed prep work for a pod document # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use Pod::Weaver::Plugin::H1Nester; sub mvp_bundle_config { return ( [ '@CorePrep/EnsurePod5', 'Pod::Weaver::Plugin::EnsurePod5', {} ], # dialects should run here [ '@CorePrep/H1Nester', 'Pod::Weaver::Plugin::H1Nester', {} ], ); } 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::PluginBundle::CorePrep - a bundle for the most commonly-needed prep work for a pod document =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/PluginBundle/Default.pm000644 000765 000024 00000007325 14063402522 022642 0ustar00rjbsstaff000000 000000 use strict; use warnings; package Pod::Weaver::PluginBundle::Default 4.018; # ABSTRACT: a bundle for the most commonly-needed prep work for a pod document # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod This is the bundle used by default (specifically by Pod::Weaver's #pod C method). It may change over time, but should remain #pod fairly conservative and straightforward. #pod #pod It is nearly equivalent to the following: #pod #pod [@CorePrep] #pod #pod [-SingleEncoding] #pod #pod [Name] #pod [Version] #pod #pod [Region / prelude] #pod #pod [Generic / SYNOPSIS] #pod [Generic / DESCRIPTION] #pod [Generic / OVERVIEW] #pod #pod [Collect / ATTRIBUTES] #pod command = attr #pod #pod [Collect / METHODS] #pod command = method #pod #pod [Collect / FUNCTIONS] #pod command = func #pod #pod [Leftovers] #pod #pod [Region / postlude] #pod #pod [Authors] #pod [Legal] #pod #pod =cut use namespace::autoclean; use Pod::Weaver::Config::Assembler; sub _exp { Pod::Weaver::Config::Assembler->expand_package($_[0]) } sub mvp_bundle_config { return ( [ '@Default/CorePrep', _exp('@CorePrep'), {} ], [ '@Default/SingleEncoding', _exp('-SingleEncoding'), {} ], [ '@Default/Name', _exp('Name'), {} ], [ '@Default/Version', _exp('Version'), {} ], [ '@Default/prelude', _exp('Region'), { region_name => 'prelude' } ], [ 'SYNOPSIS', _exp('Generic'), {} ], [ 'DESCRIPTION', _exp('Generic'), {} ], [ 'OVERVIEW', _exp('Generic'), {} ], [ 'ATTRIBUTES', _exp('Collect'), { command => 'attr' } ], [ 'METHODS', _exp('Collect'), { command => 'method' } ], [ 'FUNCTIONS', _exp('Collect'), { command => 'func' } ], [ '@Default/Leftovers', _exp('Leftovers'), {} ], [ '@Default/postlude', _exp('Region'), { region_name => 'postlude' } ], [ '@Default/Authors', _exp('Authors'), {} ], [ '@Default/Legal', _exp('Legal'), {} ], ) } 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::PluginBundle::Default - a bundle for the most commonly-needed prep work for a pod document =head1 VERSION version 4.018 =head1 OVERVIEW This is the bundle used by default (specifically by Pod::Weaver's C method). It may change over time, but should remain fairly conservative and straightforward. It is nearly equivalent to the following: [@CorePrep] [-SingleEncoding] [Name] [Version] [Region / prelude] [Generic / SYNOPSIS] [Generic / DESCRIPTION] [Generic / OVERVIEW] [Collect / ATTRIBUTES] command = attr [Collect / METHODS] command = method [Collect / FUNCTIONS] command = func [Leftovers] [Region / postlude] [Authors] [Legal] =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Plugin/SingleEncoding.pm000644 000765 000024 00000010461 14063402522 023007 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Plugin::SingleEncoding 4.018; # ABSTRACT: ensure that there is exactly one =encoding of known value use Moose; with( 'Pod::Weaver::Role::Dialect', 'Pod::Weaver::Role::Finalizer', ); # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use namespace::autoclean; use Pod::Elemental::Selectors -all; #pod =head1 OVERVIEW #pod #pod The SingleEncoding plugin is a Dialect and a Finalizer. #pod #pod During dialect translation, it will look for C<=encoding> directives. If it #pod finds them, it will ensure that they all agree on one encoding and remove them. #pod #pod During document finalization, it will insert an C<=encoding> directive at the #pod top of the output, using the encoding previously detected. If no encoding was #pod detected, the plugin's C attribute will be used instead. That #pod defaults to UTF-8. #pod #pod If you want to reject any C<=encoding> directive that doesn't match your #pod expectations, set the C attribute by hand. #pod #pod No actual validation of the encoding is done. Pod::Weaver, after all, deals in #pod text rather than bytes. #pod #pod =cut has encoding => ( reader => 'encoding', writer => '_set_encoding', isa => 'Str', lazy => 1, default => 'UTF-8', predicate => '_has_encoding', ); sub translate_dialect { my ($self, $document) = @_; my $want; $want = $self->encoding if $self->_has_encoding; if ($want) { $self->log_debug("enforcing encoding of $want in all pod"); } my $childs = $document->children; my $is_enc = s_command([ qw(encoding) ]); for (reverse 0 .. $#$childs) { next unless $is_enc->( $childs->[ $_ ] ); my $have = $childs->[$_]->content; $have =~ s/\s+\z//; if (defined $want) { my $ok = lc $have eq lc $want || lc $have eq 'utf8' && lc $want eq 'utf-8'; confess "expected only $want encoding but found $have" unless $ok; } else { $have = 'UTF-8' if lc $have eq 'utf8'; $self->_set_encoding($have); $want = $have; } splice @$childs, $_, 1; } return; } sub finalize_document { my ($self, $document, $input) = @_; my $encoding = Pod::Elemental::Element::Pod5::Command->new({ command => 'encoding', content => $self->encoding, }); my $childs = $document->children; my $is_pod = s_command([ qw(pod) ]); # ?? for (0 .. $#$childs) { next if $is_pod->( $childs->[ $_ ] ); $self->log_debug('setting =encoding to ' . $self->encoding); splice @$childs, $_, 0, $encoding; last; } return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Plugin::SingleEncoding - ensure that there is exactly one =encoding of known value =head1 VERSION version 4.018 =head1 OVERVIEW The SingleEncoding plugin is a Dialect and a Finalizer. During dialect translation, it will look for C<=encoding> directives. If it finds them, it will ensure that they all agree on one encoding and remove them. During document finalization, it will insert an C<=encoding> directive at the top of the output, using the encoding previously detected. If no encoding was detected, the plugin's C attribute will be used instead. That defaults to UTF-8. If you want to reject any C<=encoding> directive that doesn't match your expectations, set the C attribute by hand. No actual validation of the encoding is done. Pod::Weaver, after all, deals in text rather than bytes. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Plugin/EnsurePod5.pm000644 000765 000024 00000005203 14063402522 022106 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Plugin::EnsurePod5 4.018; # ABSTRACT: ensure that the Pod5 translator has been run on this document use Moose; with 'Pod::Weaver::Role::Preparer'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use namespace::autoclean; use Pod::Elemental::Transformer::Pod5; #pod =head1 OVERVIEW #pod #pod This plugin is very, very simple: it runs the Pod5 transformer on the input #pod document and removes any leftover whitespace-only Nonpod elements. If #pod non-whitespace-only Nonpod elements are found, an exception is raised. #pod #pod =cut sub _strip_nonpod { my ($self, $node) = @_; # XXX: This is really stupid. -- rjbs, 2009-10-24 foreach my $i (reverse 0 .. $node->children->$#*) { my $para = $node->children->[$i]; if ($para->isa('Pod::Elemental::Element::Pod5::Nonpod')) { if ($para->content !~ /\S/) { splice $node->children->@*, $i, 1 } else { confess "can't cope with a Nonpod element with non-whitespace content"; } } elsif ($para->does('Pod::Elemental::Node')) { $self->_strip_nonpod($para); } } } sub prepare_input { my ($self, $input) = @_; my $pod_document = $input->{pod_document}; Pod::Elemental::Transformer::Pod5->new->transform_node($pod_document); $self->_strip_nonpod($pod_document); return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Plugin::EnsurePod5 - ensure that the Pod5 translator has been run on this document =head1 VERSION version 4.018 =head1 OVERVIEW This plugin is very, very simple: it runs the Pod5 transformer on the input document and removes any leftover whitespace-only Nonpod elements. If non-whitespace-only Nonpod elements are found, an exception is raised. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Plugin/H1Nester.pm000644 000765 000024 00000004142 14063402522 021547 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Plugin::H1Nester 4.018; # ABSTRACT: structure the input pod document into head1-grouped sections use Moose; with 'Pod::Weaver::Role::Transformer'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use namespace::autoclean; use Pod::Elemental::Selectors -all; use Pod::Elemental::Transformer::Nester; #pod =head1 OVERVIEW #pod #pod This plugin is very, very simple: it uses the #pod L to restructure the document under its #pod C<=head1> elements. #pod #pod =cut sub transform_document { my ($self, $document) = @_; my $nester = Pod::Elemental::Transformer::Nester->new({ top_selector => s_command([ qw(head1) ]), content_selectors => [ s_flat, s_command( [ qw(head2 head3 head4 over item back) ]), ], }); $nester->transform_node($document); return; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Plugin::H1Nester - structure the input pod document into head1-grouped sections =head1 VERSION version 4.018 =head1 OVERVIEW This plugin is very, very simple: it uses the L to restructure the document under its C<=head1> elements. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Plugin/Transformer.pm000644 000765 000024 00000006475 14063402522 022433 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Plugin::Transformer 4.018; # ABSTRACT: apply arbitrary transformers use Moose; with 'Pod::Weaver::Role::Dialect'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use namespace::autoclean; use Module::Runtime qw(use_module); use List::MoreUtils qw(part); use String::RewritePrefix; #pod =head1 OVERVIEW #pod #pod This plugin acts as a L that applies an arbitrary #pod L to your input document. It is configured like #pod this: #pod #pod [-Transformer / Lists] #pod transformer = List #pod format_name = outline #pod #pod This will end up creating a transformer like this: #pod #pod my $xform = Pod::Elemental::Transformer::List->new({ #pod format_name => 'outline', #pod }); #pod #pod and that transformer will then be handed the entire input Pod document. #pod #pod =cut has transformer => (is => 'ro', required => 1); sub BUILDARGS { my ($class, @arg) = @_; my %copy = ref $arg[0] ? $arg[0]->%* : @arg; my @part = part { /\A\./ ? 0 : 1 } keys %copy; my %class_args = map { s/\A\.//; $_ => $copy{ ".$_" } } $part[0]->@*; my %xform_args = map { $_ => $copy{ $_ } } $part[1]->@*; my $xform_class = String::RewritePrefix->rewrite( { '' => 'Pod::Elemental::Transformer::', '=' => '' }, delete $xform_args{transformer}, ); use_module($xform_class); my $plugin_name = delete $xform_args{plugin_name}; my $weaver = delete $xform_args{weaver}; my $xform = $xform_class->new(\%xform_args); return { %class_args, plugin_name => $plugin_name, weaver => $weaver, transformer => $xform, } } sub translate_dialect { my ($self, $pod_document) = @_; $self->log_debug('applying transform'); $self->transformer->transform_node( $pod_document ); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Plugin::Transformer - apply arbitrary transformers =head1 VERSION version 4.018 =head1 OVERVIEW This plugin acts as a L that applies an arbitrary L to your input document. It is configured like this: [-Transformer / Lists] transformer = List format_name = outline This will end up creating a transformer like this: my $xform = Pod::Elemental::Transformer::List->new({ format_name => 'outline', }); and that transformer will then be handed the entire input Pod document. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Config/Finder.pm000644 000765 000024 00000002343 14063402522 021275 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Config::Finder 4.018; # ABSTRACT: the reader for weaver.ini files use Moose; extends 'Config::MVP::Reader::Finder'; with 'Pod::Weaver::Config'; use namespace::autoclean; sub default_search_path { return qw(Pod::Weaver::Config Config::MVP::Reader); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Config::Finder - the reader for weaver.ini files =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Config/Assembler.pm000644 000765 000024 00000002757 14063402522 022014 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Config::Assembler 4.018; # ABSTRACT: Pod::Weaver-specific subclass of Config::MVP::Assembler use Moose; extends 'Config::MVP::Assembler'; with 'Config::MVP::Assembler::WithBundles'; use String::RewritePrefix; use namespace::autoclean; sub expand_package { my $str = $_[1]; return scalar String::RewritePrefix->rewrite( { '' => 'Pod::Weaver::Section::', '-' => 'Pod::Weaver::Plugin::', '@' => 'Pod::Weaver::PluginBundle::', '=' => '', }, $str, ); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Config::Assembler - Pod::Weaver-specific subclass of Config::MVP::Assembler =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Collect.pm000644 000765 000024 00000013336 14063402522 021656 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Collect 4.018; # ABSTRACT: a section that gathers up specific commands use Moose; with 'Pod::Weaver::Role::Section', 'Pod::Weaver::Role::Transformer'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod Given the configuration: #pod #pod [Collect / METHODS] #pod command = method #pod #pod This plugin will start off by gathering and nesting any C<=method> commands #pod found in the C. Those commands, along with their nestable #pod content, will be collected under a C<=head1 METHODS> header and placed in the #pod correct location in the output stream. Their order will be preserved as it was #pod in the source document. #pod #pod =cut use Pod::Elemental::Element::Pod5::Region; use Pod::Elemental::Selectors -all; use List::Util 1.33 'any'; #pod =attr command #pod #pod The command that will be collected (e.g. C or C). #pod (required) #pod #pod =attr new_command #pod #pod The command to be used in the output instead of the collected command. #pod (default: C) #pod #pod =attr header_command #pod #pod The section command for the section to be added. #pod (default: C) #pod #pod =attr header #pod #pod The title of the section to be added. #pod (default: the plugin name) #pod #pod =cut has command => ( is => 'ro', isa => 'Str', required => 1, ); has new_command => ( is => 'ro', isa => 'Str', required => 1, default => 'head2', ); has header_command => ( is => 'ro', isa => 'Str', required => 1, default => 'head1', ); has header => ( is => 'ro', isa => 'Str', lazy => 1, required => 1, default => sub { $_[0]->plugin_name }, ); use Pod::Elemental::Transformer::Gatherer; use Pod::Elemental::Transformer::Nester; has __used_container => (is => 'rw'); sub transform_document { my ($self, $document) = @_; my $command = $self->command; my $selector = s_command($command); my $children = $document->children; unless (any { $selector->($_) } @$children) { $self->log_debug("no $command commands in pod to collect"); return; } $self->log_debug("transforming $command commands into standard pod"); my $nester = Pod::Elemental::Transformer::Nester->new({ top_selector => $selector, content_selectors => [ s_command([ qw(head3 head4 over item back) ]), s_flat, ], }); # try and find array position of suitable host my ( $container_id ) = grep { my $c = $children->[$_]; $c->isa("Pod::Elemental::Element::Nested") and $c->command eq $self->header_command and $c->content eq $self->header; } 0 .. $#$children; my $container = $container_id ? splice @$children, $container_id, 1 # excise host : Pod::Elemental::Element::Nested->new({ # synthesize new host command => $self->header_command, content => $self->header, }); $self->__used_container($container); my $gatherer = Pod::Elemental::Transformer::Gatherer->new({ gather_selector => $selector, container => $container, }); $nester->transform_node($document); my @children = $container->children->@*; # rescue children $gatherer->transform_node($document); # insert host at position of first adopt-child and inject it with adopt-children foreach my $child ($container->children->@*) { $child->command( $self->new_command ) if $child->command eq $command; } unshift $container->children->@*, @children; # give original children back to host } sub weave_section { my ($self, $document, $input) = @_; return unless $self->__used_container; my $in_node = $input->{pod_document}->children; my @found = grep { my ($i, $para) = ($_, $in_node->[$_]); ($para == $self->__used_container) && $self->__used_container->children->@*; } (0 .. $#$in_node); push $document->children->@*, map { splice @$in_node, $_, 1 } reverse @found; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Collect - a section that gathers up specific commands =head1 VERSION version 4.018 =head1 OVERVIEW Given the configuration: [Collect / METHODS] command = method This plugin will start off by gathering and nesting any C<=method> commands found in the C. Those commands, along with their nestable content, will be collected under a C<=head1 METHODS> header and placed in the correct location in the output stream. Their order will be preserved as it was in the source document. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 command The command that will be collected (e.g. C or C). (required) =head2 new_command The command to be used in the output instead of the collected command. (default: C) =head2 header_command The section command for the section to be added. (default: C) =head2 header The title of the section to be added. (default: the plugin name) =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Legal.pm000644 000765 000024 00000007336 14063402522 021320 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Legal 4.018; # ABSTRACT: a section for the copyright and license use Moose; with 'Pod::Weaver::Role::Section'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod This section plugin will produce a hunk of Pod giving the copyright and license #pod information for the document, like this: #pod #pod =head1 COPYRIGHT AND LICENSE #pod #pod This document is copyright (C) 1991, Ricardo Signes. #pod #pod This document is available under the blah blah blah. #pod #pod This plugin will do nothing if no C input parameter is available. The #pod C is expected to be a L object. #pod #pod =cut #pod =attr license_file #pod #pod Specify the name of the license file and an extra line of text will be added #pod telling users to check the file for the full text of the license. #pod #pod Defaults to none. #pod #pod =attr header #pod #pod The title of the header to be added. #pod (default: "COPYRIGHT AND LICENSE") #pod #pod =cut has header => ( is => 'ro', isa => 'Str', default => 'COPYRIGHT AND LICENSE', ); has license_file => ( is => 'ro', isa => 'Str', predicate => '_has_license_file', ); sub weave_section { my ($self, $document, $input) = @_; unless ($input->{license}) { $self->log_debug('no license specified, not adding a ' . $self->header . ' section'); return; } my $notice = $input->{license}->notice; chomp $notice; if ( $self->_has_license_file ) { $notice .= "\n\nThe full text of the license can be found in the\nF<"; $notice .= $self->license_file . "> file included with this distribution."; } $self->log_debug('adding ' . $self->header . ' section'); push $document->children->@*, Pod::Elemental::Element::Nested->new({ command => 'head1', content => $self->header, children => [ Pod::Elemental::Element::Pod5::Ordinary->new({ content => $notice }), ], }); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Legal - a section for the copyright and license =head1 VERSION version 4.018 =head1 OVERVIEW This section plugin will produce a hunk of Pod giving the copyright and license information for the document, like this: =head1 COPYRIGHT AND LICENSE This document is copyright (C) 1991, Ricardo Signes. This document is available under the blah blah blah. This plugin will do nothing if no C input parameter is available. The C is expected to be a L object. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 license_file Specify the name of the license file and an extra line of text will be added telling users to check the file for the full text of the license. Defaults to none. =head2 header The title of the header to be added. (default: "COPYRIGHT AND LICENSE") =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Version.pm000644 000765 000024 00000022112 14063402522 021706 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Version 4.018; # ABSTRACT: add a VERSION pod section use Moose; with 'Pod::Weaver::Role::Section', 'Pod::Weaver::Role::StringFromComment'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use Module::Runtime qw(use_module); use namespace::autoclean; #pod =head1 OVERVIEW #pod #pod This section plugin will produce a hunk of Pod meant to indicate the version of #pod the document being viewed, like this: #pod #pod =head1 VERSION #pod #pod version 1.234 #pod #pod It will do nothing if there is no C entry in the input. #pod #pod =attr header #pod #pod The title of the header to be added. #pod (default: "VERSION") #pod #pod =cut has header => ( is => 'ro', isa => 'Str', default => 'VERSION', ); use DateTime; use Moose::Util::TypeConstraints; my $MARKER; BEGIN { $MARKER = "\x{2316}" } use String::Formatter 0.100680 stringf => { -as => '_format_version', input_processor => 'require_single_input', string_replacer => 'method_replace', codes => { v => sub { $_[0]->{version} }, V => sub { $_[0]->{version} . ($_[0]->{is_trial} ? (defined $_[1] ? $_[1] : '-TRIAL') : '') }, d => sub { use_module( 'DateTime', '0.44' ); # CLDR fixes DateTime->from_epoch(epoch => $^T, time_zone => $_[0]->{self}->time_zone) ->format_cldr($_[1]), }, r => sub { $_[0]->{zilla}->name }, m => sub { return $_[0]->{module} if defined $_[0]->{module}; $_[0]->{self}->log_fatal([ "%%m format used for Version section, but no package declaration found in %s", $_[0]->{filename}, ]); }, T => sub { $MARKER }, n => sub { "\n" }, s => sub { q{ } }, t => sub { "\t" }, }, }; # Needed by Config::MVP. sub mvp_multivalue_args { 'format' } #pod =attr format #pod #pod The string to use when generating the version string. #pod #pod Default: version %v #pod #pod The following variables are available: #pod #pod =begin :list #pod #pod * v - the version #pod #pod * V - the version, suffixed by "-TRIAL" if a trial release #pod #pod * d - the CLDR format for L #pod #pod * n - a newline #pod #pod * t - a tab #pod #pod * s - a space #pod #pod * r - the name of the dist, present only if you use L to generate #pod the POD! #pod #pod * m - the name of the module, present only if L parsed the document and it #pod contained a package declaration! #pod #pod * T - special: at the beginning of the line, followed by any amount of #pod whitespace, indicates that the line should only be included in trial #pod releases; otherwise, results in a fatal error #pod #pod =end :list #pod #pod If multiple strings are supplied as an array ref, a line of POD is #pod produced for each string. Each line will be separated by a newline. #pod This is useful for splitting longer text across multiple lines in a #pod C file, for example: #pod #pod ; weaver.ini #pod [Version] #pod format = version %v #pod format = #pod format = This module's version numbers follow the conventions described at #pod format = L. #pod format = %T #pod format = %T This is a trial release! #pod #pod =cut subtype 'Pod::Weaver::Section::Version::_Format', as 'ArrayRef[Str]'; coerce 'Pod::Weaver::Section::Version::_Format', from 'Str', via { [ $_ ] }; has format => ( is => 'ro', isa => 'Pod::Weaver::Section::Version::_Format', coerce => 1, default => 'version %v', ); #pod =attr is_verbatim #pod #pod A boolean value specifying whether the version paragraph should be verbatim or not. #pod #pod Default: false #pod #pod =cut has is_verbatim => ( is => 'ro', isa => 'Bool', default => 0, ); #pod =attr time_zone #pod #pod The timezone to use when using L for the format. #pod #pod Default: local #pod #pod =cut has time_zone => ( is => 'ro', isa => 'Str', # should be more validated later -- apocal default => 'local', ); #pod =method build_content #pod #pod my @pod_elements = $section->build_content(\%input); #pod #pod This method is passed the same C<\%input> that goes to the C #pod method, and should return a list of pod elements to insert. #pod #pod In almost all cases, this method is used internally, but could be usefully #pod overridden in a subclass. #pod #pod =cut sub build_content { my ($self, $input) = @_; return unless $input->{version}; my %args = ( self => $self, version => $input->{version}, filename => $input->{filename}, ); $args{zilla} = $input->{zilla} if exists $input->{zilla}; $args{is_trial} = exists $input->{is_trial} ? $input->{is_trial} : $args{zilla} ? $args{zilla}->is_trial : undef; if ( exists $input->{ppi_document} ) { my $pkg_node = $input->{ppi_document}->find_first('PPI::Statement::Package'); $args{module} = $pkg_node ? $pkg_node->namespace : $self->_extract_comment_content($input->{ppi_document}, 'PODNAME') ; } my $content = q{}; LINE: for my $format ($self->format->@*) { my $line = _format_version($format, \%args); next if $line =~ s/^$MARKER\s*// and ! $args{is_trial}; Carp::croak("%T format used inside line") if $line =~ /$MARKER/; $content .= "$line\n"; } if ( $self->is_verbatim ) { $content = Pod::Elemental::Element::Pod5::Verbatim->new({ content => " $content", }); } else { $content = Pod::Elemental::Element::Pod5::Ordinary->new({ content => $content, }); } return ($content); } sub weave_section { my ($self, $document, $input) = @_; return unless $input->{version}; my @content = $self->build_content($input); $self->log_debug('adding ' . $self->header . ' section to pod'); push $document->children->@*, Pod::Elemental::Element::Nested->new({ command => 'head1', content => $self->header, children => \@content, }); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Version - add a VERSION pod section =head1 VERSION version 4.018 =head1 OVERVIEW This section plugin will produce a hunk of Pod meant to indicate the version of the document being viewed, like this: =head1 VERSION version 1.234 It will do nothing if there is no C entry in the input. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 header The title of the header to be added. (default: "VERSION") =head2 format The string to use when generating the version string. Default: version %v The following variables are available: =over 4 =item * v - the version =item * V - the version, suffixed by "-TRIAL" if a trial release =item * d - the CLDR format for L =item * n - a newline =item * t - a tab =item * s - a space =item * r - the name of the dist, present only if you use L to generate the POD! =item * m - the name of the module, present only if L parsed the document and it contained a package declaration! =item * T - special: at the beginning of the line, followed by any amount of whitespace, indicates that the line should only be included in trial releases; otherwise, results in a fatal error =back If multiple strings are supplied as an array ref, a line of POD is produced for each string. Each line will be separated by a newline. This is useful for splitting longer text across multiple lines in a C file, for example: ; weaver.ini [Version] format = version %v format = format = This module's version numbers follow the conventions described at format = L. format = %T format = %T This is a trial release! =head2 is_verbatim A boolean value specifying whether the version paragraph should be verbatim or not. Default: false =head2 time_zone The timezone to use when using L for the format. Default: local =head1 METHODS =head2 build_content my @pod_elements = $section->build_content(\%input); This method is passed the same C<\%input> that goes to the C method, and should return a list of pod elements to insert. In almost all cases, this method is used internally, but could be usefully overridden in a subclass. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Generic.pm000644 000765 000024 00000010656 14063402522 021647 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Generic 4.018; # ABSTRACT: a generic section, found by lifting sections use Moose; with 'Pod::Weaver::Role::Section'; use v5.20.0; use experimental 'postderef'; # this experiment succeeded -- rjbs, 2021-04-02 #pod =head1 OVERVIEW #pod #pod This section will find and include a located hunk of Pod. In general, it will #pod find a C<=head1> command with a content of the plugin's name. #pod #pod In other words, if your configuration include: #pod #pod [Generic] #pod header = OVERVIEW #pod #pod ...then this weaver will look for "=head1 OVERVIEW" and include it at the #pod appropriate location in your output. #pod #pod Since you'll probably want to use Generic several times, and that will require #pod giving each use a unique name, you can omit C
if you provide a #pod plugin name, and it will default to the plugin name. In other words, the #pod configuration above could be specified just as: #pod #pod [Generic / OVERVIEW] #pod #pod If the C attribute is given, and true, then an exception will be #pod raised if this section can't be found. #pod #pod =cut use Pod::Elemental::Element::Pod5::Region; use Pod::Elemental::Selectors -all; #pod =attr required #pod #pod A boolean value specifying whether this section is required to be present or not. Defaults #pod to false. #pod #pod If it's enabled and the section can't be found an exception will be raised. #pod #pod =cut has required => ( is => 'ro', isa => 'Bool', default => 0, ); #pod =attr header #pod #pod The name of this section. Defaults to the plugin name. #pod #pod =cut has header => ( is => 'ro', isa => 'Str', lazy => 1, default => sub { $_[0]->plugin_name }, ); has selector => ( is => 'ro', isa => 'CodeRef', lazy => 1, default => sub { my ($self) = @_; return sub { return unless s_command(head1 => $_[0]); return unless $_[0]->content eq $self->header; }; }, ); sub weave_section { my ($self, $document, $input) = @_; my $in_node = $input->{pod_document}->children; my @found = grep { $self->selector->($in_node->[$_]); } (0 .. $#$in_node); confess "Couldn't find required Generic section for " . $self->header . " in file " . (defined $input->{filename} ? $input->{filename} : '') if $self->required and not @found; $self->log_debug('adding ' . $self->header . ' back into pod'); push $document->children->@*, map { splice @$in_node, $_, 1 } reverse @found; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Generic - a generic section, found by lifting sections =head1 VERSION version 4.018 =head1 OVERVIEW This section will find and include a located hunk of Pod. In general, it will find a C<=head1> command with a content of the plugin's name. In other words, if your configuration include: [Generic] header = OVERVIEW ...then this weaver will look for "=head1 OVERVIEW" and include it at the appropriate location in your output. Since you'll probably want to use Generic several times, and that will require giving each use a unique name, you can omit C
if you provide a plugin name, and it will default to the plugin name. In other words, the configuration above could be specified just as: [Generic / OVERVIEW] If the C attribute is given, and true, then an exception will be raised if this section can't be found. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 required A boolean value specifying whether this section is required to be present or not. Defaults to false. If it's enabled and the section can't be found an exception will be raised. =head2 header The name of this section. Defaults to the plugin name. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Region.pm000644 000765 000024 00000014560 14063402522 021514 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Region 4.018; # ABSTRACT: find a region and put its contents in place where desired use Moose; with 'Pod::Weaver::Role::Section'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod This section will find and include a located hunk of Pod. In general, it will #pod find a region with the specified name, such as: #pod #pod =begin :myfoo #pod #pod =head1 More Pod Here #pod #pod =end :myfoo #pod #pod In other words, if your configuration include: #pod #pod [Region] #pod region_name = myfoo #pod #pod ...then this weaver will look for "=begin :myfoo" ( and "=for :myfoo" and... ) and include #pod it at the appropriate location in your output. #pod #pod Since you'll probably want to use Region several times, and that will require #pod giving each use a unique name, you can omit C if you provide a #pod plugin name, and it will default to the plugin name. In other words, the #pod configuration above could be specified just as: #pod #pod [Region / myfoo] #pod #pod If the C attribute is given, and true, then an exception will be #pod raised if this region can't be found. #pod #pod =cut use Pod::Elemental::Element::Pod5::Region; use Pod::Elemental::Selectors -all; use Pod::Elemental::Types qw(FormatName); #pod =attr required #pod #pod A boolean value specifying whether this region is required to be present or not. Defaults #pod to false. #pod #pod If it's enabled and the region can't be found an exception will be raised. #pod #pod =cut has required => ( is => 'ro', isa => 'Bool', default => 0, ); #pod =attr region_name #pod #pod The name of this region. Defaults to the plugin name. #pod #pod =cut has region_name => ( is => 'ro', isa => FormatName, lazy => 1, required => 1, default => sub { $_[0]->plugin_name }, ); #pod =attr allow_nonpod #pod #pod A boolean value specifying whether nonpod regions are allowed or not. Defaults to false. #pod #pod C regions are regions I a C<:> prefix as explained in #pod L<< perlpodspec|perlpodspec/About Data Paragraphs and "=begin/=end" Regions >> #pod #pod # region_name = myregion #pod # is_pod = false #pod =begin myregion #pod #pod # region_name = myregion #pod # is_pod = true #pod =begin :myregion #pod #pod =cut has allow_nonpod => ( is => 'ro', isa => 'Bool', default => 0, ); #pod =attr flatten #pod #pod A boolean value specifying whether the region's contents should be flattened or not. Defaults to true. #pod #pod #unflattened #pod =begin :myregion #pod #pod =head1 #pod #pod =end :myregion #pod #pod #flattened #pod =head1 #pod #pod =cut has flatten => ( is => 'ro', isa => 'Bool', default => 1, ); sub weave_section { my ($self, $document, $input) = @_; my @to_insert; my $idc = $input->{pod_document}->children; IDX: for (my $i = 0; $i < @$idc; $i++) { next unless my $para = $idc->[ $i ]; next unless $para->isa('Pod::Elemental::Element::Pod5::Region') and $para->format_name eq $self->region_name; next if !$self->allow_nonpod and !$para->is_pod; if ( $self->flatten ) { push @to_insert, $para->children->@*; } else { push @to_insert, $para; } splice @$idc, $i, 1; redo IDX; } confess "Couldn't find required Region for " . $self->region_name . " in file " . (defined $input->{filename} ? $input->{filename} : '') if $self->required and not @to_insert; my $verb = $self->flatten ? 'flattening' : 'inserting'; $self->log_debug($verb . q{ } . $self->region_name . ' into pod'); push $document->children->@*, @to_insert; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Region - find a region and put its contents in place where desired =head1 VERSION version 4.018 =head1 OVERVIEW This section will find and include a located hunk of Pod. In general, it will find a region with the specified name, such as: =begin :myfoo =head1 More Pod Here =end :myfoo In other words, if your configuration include: [Region] region_name = myfoo ...then this weaver will look for "=begin :myfoo" ( and "=for :myfoo" and... ) and include it at the appropriate location in your output. Since you'll probably want to use Region several times, and that will require giving each use a unique name, you can omit C if you provide a plugin name, and it will default to the plugin name. In other words, the configuration above could be specified just as: [Region / myfoo] If the C attribute is given, and true, then an exception will be raised if this region can't be found. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 required A boolean value specifying whether this region is required to be present or not. Defaults to false. If it's enabled and the region can't be found an exception will be raised. =head2 region_name The name of this region. Defaults to the plugin name. =head2 allow_nonpod A boolean value specifying whether nonpod regions are allowed or not. Defaults to false. C regions are regions I a C<:> prefix as explained in L<< perlpodspec|perlpodspec/About Data Paragraphs and "=begin/=end" Regions >> # region_name = myregion # is_pod = false =begin myregion # region_name = myregion # is_pod = true =begin :myregion =head2 flatten A boolean value specifying whether the region's contents should be flattened or not. Defaults to true. #unflattened =begin :myregion =head1 =end :myregion #flattened =head1 =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Leftovers.pm000644 000765 000024 00000006316 14063402522 022242 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Leftovers 4.018; # ABSTRACT: a place to put everything that nothing else used use Moose; with 'Pod::Weaver::Role::Section', 'Pod::Weaver::Role::Finalizer'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod This section plugin is used to designate where in the output sequence all #pod unused parts of the input C should be placed. #pod #pod Other section plugins are expected to remove from the input Pod document any #pod sections that are consumed. At the end of all section weaving, the Leftovers #pod section will inject any leftover input Pod into its position in the output #pod document. #pod #pod =cut use Pod::Elemental::Element::Pod5::Region; use Pod::Elemental::Types qw(FormatName); has _marker => ( is => 'ro', isa => FormatName, init_arg => undef, default => sub { my ($self) = @_; my $str = sprintf '%s_%s', ref($self), 0+$self; $str =~ s/\W/_/g; return $str; } ); sub weave_section { my ($self, $document, $input) = @_; my $placeholder = Pod::Elemental::Element::Pod5::Region->new({ is_pod => 0, format_name => $self->_marker, content => '', }); push $document->children->@*, $placeholder; } sub finalize_document { my ($self, $document, $input) = @_; my $children = $input->{pod_document}->children; $input->{pod_document}->children([]); INDEX: for my $i (0 .. $document->children->$#*) { my $para = $document->children->[$i]; next unless $para->isa('Pod::Elemental::Element::Pod5::Region') and $para->format_name eq $self->_marker; $self->log_debug('splicing leftovers back into pod'); splice $document->children->@*, $i, 1, @$children; last INDEX; } } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Leftovers - a place to put everything that nothing else used =head1 VERSION version 4.018 =head1 OVERVIEW This section plugin is used to designate where in the output sequence all unused parts of the input C should be placed. Other section plugins are expected to remove from the input Pod document any sections that are consumed. At the end of all section weaving, the Leftovers section will inject any leftover input Pod into its position in the output document. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Bugs.pm000644 000765 000024 00000013400 14063402522 021161 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Bugs 4.018; # ABSTRACT: a section for bugtracker info use Moose; use Text::Wrap (); with 'Pod::Weaver::Role::Section'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod This section plugin will produce a hunk of Pod giving bug reporting #pod information for the document, like this: #pod #pod =head1 BUGS #pod #pod Please report any bugs or feature requests on the bugtracker website #pod http://rt.cpan.org/Dist/Display.html?Queue=Pod-Weaver #pod #pod When submitting a bug or request, please include a test-file or a #pod patch to an existing test-file that illustrates the bug or desired #pod feature. #pod #pod This plugin requires a C parameter containing a hash reference of #pod L distribution metadata and at least one of one of the #pod parameters C or C defined in #pod C<< $meta->{resources}{bugtracker} >>. #pod #pod =head2 Using Pod::Weaver::Section::Bugs with Dist::Zilla #pod #pod When the PodWeaver plugin is used, the C parameter comes from the #pod dist's distmeta data. Since this section is skipped when no bugtracker data is #pod in the distmeta, you'll need to make sure it's there. A number of plugins set #pod this data up automatically. To manually configure your bugtracker data, you #pod can add something like the following to C: #pod #pod [MetaResources] #pod bugtracker.web = http://rt.cpan.org/NoAuth/Bugs.html?Dist=Pod-Weaver-Example #pod bugtracker.mailto = bug-pod-weaver-example@rt.cpan.org #pod #pod ; Perhaps add repository stuff here: #pod repository.url = #pod repository.web = #pod repository.type = #pod #pod [PodWeaver] #pod #pod =attr header #pod #pod The title of the header to be added. #pod (default: "BUGS") #pod #pod =cut has header => ( is => 'ro', isa => 'Str', default => 'BUGS', ); sub weave_section { my ($self, $document, $input) = @_; unless (exists $input->{distmeta}{resources}{bugtracker}) { $self->log_debug('skipping section because there is no resources.bugtracker'); return; } my $bugtracker = $input->{distmeta}{resources}{bugtracker}; my ($web, $mailto) = $bugtracker->@{ qw(web mailto) }; unless (defined $web || defined $mailto) { $self->log_debug('skipping section because there is no web or mailto key under resources.bugtracker'); return; } my $text = "Please report any bugs or feature requests "; my $name = $self->header; if (defined $web) { $self->log_debug("including $web as bugtracker in $name section"); $text .= "on the bugtracker website L<$web>"; $text .= defined $mailto ? " or " : "\n"; } if (defined $mailto) { $self->log_debug("including $mailto as bugtracker in $name section"); $text .= "by email to L<$mailto|mailto:$mailto>\.\n"; } local $Text::Wrap::huge = 'overflow'; $text = Text::Wrap::wrap(q{}, q{}, $text); $text .= <<'HERE'; When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. HERE push $document->children->@*, Pod::Elemental::Element::Nested->new({ command => 'head1', content => $name, children => [ Pod::Elemental::Element::Pod5::Ordinary->new({ content => $text }), ], }); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Bugs - a section for bugtracker info =head1 VERSION version 4.018 =head1 OVERVIEW This section plugin will produce a hunk of Pod giving bug reporting information for the document, like this: =head1 BUGS Please report any bugs or feature requests on the bugtracker website http://rt.cpan.org/Dist/Display.html?Queue=Pod-Weaver When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. This plugin requires a C parameter containing a hash reference of L distribution metadata and at least one of one of the parameters C or C defined in C<< $meta->{resources}{bugtracker} >>. =head2 Using Pod::Weaver::Section::Bugs with Dist::Zilla When the PodWeaver plugin is used, the C parameter comes from the dist's distmeta data. Since this section is skipped when no bugtracker data is in the distmeta, you'll need to make sure it's there. A number of plugins set this data up automatically. To manually configure your bugtracker data, you can add something like the following to C: [MetaResources] bugtracker.web = http://rt.cpan.org/NoAuth/Bugs.html?Dist=Pod-Weaver-Example bugtracker.mailto = bug-pod-weaver-example@rt.cpan.org ; Perhaps add repository stuff here: repository.url = repository.web = repository.type = [PodWeaver] =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 header The title of the header to be added. (default: "BUGS") =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Authors.pm000644 000765 000024 00000006726 14063402522 021723 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Authors 4.018; # ABSTRACT: a section listing authors use Moose; with 'Pod::Weaver::Role::Section'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use Pod::Elemental::Element::Nested; use Pod::Elemental::Element::Pod5::Verbatim; #pod =head1 OVERVIEW #pod #pod This section adds a listing of the documents authors. It expects a C #pod input parameter to be an arrayref of strings. If no C parameter is #pod given, it will do nothing. Otherwise, it produces a hunk like this: #pod #pod =head1 AUTHORS #pod #pod Author One #pod Author Two #pod #pod =attr header #pod #pod The title of the header to be added. #pod (default: "AUTHOR" or "AUTHORS") #pod #pod =cut has header => ( is => 'ro', isa => 'Maybe[Str]', ); sub weave_section { my ($self, $document, $input) = @_; return unless $input->{authors}; my $multiple_authors = $input->{authors}->@* > 1; # I think I might like to have header be a callback or something, so that you # can get pluralization for your own custom header. -- rjbs, 2015-03-17 my $name = $self->header || ($multiple_authors ? 'AUTHORS' : 'AUTHOR'); $self->log_debug("adding $name section"); $self->log_debug("author = $_") for $input->{authors}->@*; my $authors = [ map { Pod::Elemental::Element::Pod5::Ordinary->new({ content => $_, }), } $input->{authors}->@* ]; $authors = [ Pod::Elemental::Element::Pod5::Command->new({ command => 'over', content => '4', }), ( map { Pod::Elemental::Element::Pod5::Command->new({ command => 'item', content => '*', }), $_, } @$authors ), Pod::Elemental::Element::Pod5::Command->new({ command => 'back', content => '', }), ] if $multiple_authors; push $document->children->@*, Pod::Elemental::Element::Nested->new({ type => 'command', command => 'head1', content => $name, children => $authors, }); } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Authors - a section listing authors =head1 VERSION version 4.018 =head1 OVERVIEW This section adds a listing of the documents authors. It expects a C input parameter to be an arrayref of strings. If no C parameter is given, it will do nothing. Otherwise, it produces a hunk like this: =head1 AUTHORS Author One Author Two =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 header The title of the header to be added. (default: "AUTHOR" or "AUTHORS") =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/Name.pm000644 000765 000024 00000011054 14063402522 021144 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::Name 4.018; # ABSTRACT: add a NAME section with abstract (for your Perl module) use Moose; with 'Pod::Weaver::Role::Section', 'Pod::Weaver::Role::StringFromComment'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE #pod =head1 OVERVIEW #pod #pod This section plugin will produce a hunk of Pod giving the name of the document #pod as well as an abstract, like this: #pod #pod =head1 NAME #pod #pod Some::Document - a document for some #pod #pod It will determine the name and abstract by inspecting the C which #pod must be given. It looks for comments in the form: #pod #pod #pod # ABSTRACT: a document for some #pod # PODNAME: Some::Package::Name #pod #pod If no C comment is present, but a package declaration can be found, #pod the package name will be used as the document name. #pod #pod =attr header #pod #pod The title of the header to be added. #pod (default: "NAME") #pod #pod =cut has header => ( is => 'ro', isa => 'Str', default => 'NAME', ); use Pod::Elemental::Element::Pod5::Command; use Pod::Elemental::Element::Pod5::Ordinary; use Pod::Elemental::Element::Nested; sub _get_docname_via_statement { my ($self, $ppi_document) = @_; my $pkg_node = $ppi_document->find_first('PPI::Statement::Package'); return unless $pkg_node; return $pkg_node->namespace; } sub _get_docname_via_comment { my ($self, $ppi_document) = @_; return $self->_extract_comment_content($ppi_document, 'PODNAME'); } sub _get_docname { my ($self, $input) = @_; my $ppi_document = $input->{ppi_document}; my $docname = $self->_get_docname_via_comment($ppi_document) || $self->_get_docname_via_statement($ppi_document); return $docname; } sub _get_abstract { my ($self, $input) = @_; my $comment = $self->_extract_comment_content($input->{ppi_document}, 'ABSTRACT'); return $comment if $comment; # If that failed, fall back to searching the whole document my ($abstract) = $input->{ppi_document}->serialize =~ /^\s*#+\s*ABSTRACT:\s*(.+)$/m; return $abstract; } sub weave_section { my ($self, $document, $input) = @_; my $filename = $input->{filename} || 'file'; my $docname = $self->_get_docname($input); my $abstract = $self->_get_abstract($input); Carp::croak sprintf "couldn't determine document name for %s\nAdd something like this to %s:\n# PODNAME: bobby_tables.pl", $filename, $filename unless $docname; $self->log([ "couldn't find abstract in %s", $filename ]) unless $abstract; my $name = $docname; $name .= " - $abstract" if $abstract; $self->log_debug(qq{setting NAME to "$name"}); my $name_para = Pod::Elemental::Element::Nested->new({ command => 'head1', content => $self->header, children => [ Pod::Elemental::Element::Pod5::Ordinary->new({ content => $name }), ], }); push $document->children->@*, $name_para; } __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::Name - add a NAME section with abstract (for your Perl module) =head1 VERSION version 4.018 =head1 OVERVIEW This section plugin will produce a hunk of Pod giving the name of the document as well as an abstract, like this: =head1 NAME Some::Document - a document for some It will determine the name and abstract by inspecting the C which must be given. It looks for comments in the form: # ABSTRACT: a document for some # PODNAME: Some::Package::Name If no C comment is present, but a package declaration can be found, the package name will be used as the document name. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 header The title of the header to be added. (default: "NAME") =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Section/GenerateSection.pm000644 000765 000024 00000022444 14063402522 023350 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Section::GenerateSection 4.018; # ABSTRACT: add pod section from an interpolated piece of text use Moose; with 'Pod::Weaver::Role::Section'; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use Pod::Elemental::Element::Nested; use Pod::Elemental::Element::Pod5::Ordinary; use Text::Template; use namespace::autoclean; #pod =head1 SYNOPSIS #pod #pod In your F #pod #pod [GenerateSection] #pod title = HOMEPAGE #pod text = This is the POD for distribution {{$name}}. Check out what we have #pod text = been up to at {{$homepage}} #pod #pod The title value can be omited if passed as the plugin name: #pod #pod [GenerateSection / HOMEPAGE] #pod #pod =head1 DESCRIPTION #pod #pod This plugin allows the creation of simple text sections, with or without the #pod use of Text::Template for templated text. #pod #pod The C parameters become the lines of the template. #pod #pod The values of text are concatenated and variable names with matching values on #pod the distribution are interpolated. Specifying the heading level allows one to #pod write down a rather long section of POD text without need for extra files. For #pod example: #pod #pod [GenerateSection / FEEDBACK] #pod head = 1 #pod [GenerateSection / Reporting bugs] #pod head = 2 #pod text = Please report bugs when you find them. While we do have a mailing #pod text = list, please use the bug tracker at {{$bugtracker_web}} #pod text = to report bugs #pod [GenerateSection / Homegape] #pod head = 2 #pod text = Also, come check out our other projects at #pod text = {{$homepage}} #pod #pod =head1 TEMPLATE RENDERING #pod #pod When rendering as a template, the variables C<$plugin>, C<$dist>, and #pod C<$distmeta> will be provided, set to the GenerateSection plugin, #pod C object, and the distribution metadata hash respectively. For #pod convenience, the following variables are also set: #pod #pod =for :list #pod * C<< $name >> #pod * C<< $version >> #pod * C<< $homepage >> #pod * C<< $repository_web >> #pod * C<< $repository_url >> #pod * C<< $bugtracker_web >> #pod * C<< $bugtracker_email >> #pod #pod =attr text #pod #pod The text to be added to the section. Multiple values are allowed and will be #pod concatenated. Certain sequences on the text will be replaced (see below). #pod #pod =cut sub mvp_multivalue_args { return qw(text) } has text => ( is => 'ro', isa => 'ArrayRef', lazy => 1, default => sub { [] }, ); #pod =attr head #pod #pod This is the I to use in the C<=headX> that's created. If it's C<0> then no #pod heading is added. It defaults to C<1>. #pod #pod =cut has head => ( is => 'ro', isa => 'Int', lazy => 1, default => 1, ); #pod =attr title #pod #pod The title for this section. If none is given, the plugin's name is used. #pod #pod =cut has title => ( is => 'ro', isa => 'Str', lazy => 1, default => sub { $_[0]->plugin_name }, ); #pod =attr main_module_only #pod #pod If true, this attribute indicates that only the main module's Pod should be #pod altered. By default, it is false. #pod #pod =cut has main_module_only => ( is => 'ro', isa => 'Bool', lazy => 1, default => 0, ); #pod =attr #pod #pod If true, the text is treated as a L template and rendered. #pod This attribute B. #pod #pod =cut has is_template => ( is => 'ro', isa => 'Bool', lazy => 1, default => 1, ); sub weave_section { my ($self, $document, $input) = @_; if ($self->main_module_only) { return if $input->{zilla}->main_module->name ne $input->{filename}; } my $text = join ("\n", $self->text->@*); if ($self->is_template) { my %stash; if ($input->{zilla}) { %stash = ( dist => \($input->{zilla}), distmeta => \($input->{distmeta}), plugin => \($self), name => $input->{distmeta}{name}, version => $input->{distmeta}{version}, homepage => $input->{distmeta}{resources}{homepage}, repository_web => $input->{distmeta}{resources}{repository}{web}, repository_url => $input->{distmeta}{resources}{repository}{url}, bugtracker_web => $input->{distmeta}{resources}{bugtracker}{web}, bugtracker_email => $input->{distmeta}{resources}{bugtracker}{mailto}, ); } $text = $self->fill_in_string($text, \%stash); } my $element = Pod::Elemental::Element::Pod5::Ordinary->new({ content => $text }); if ($self->head) { $element = Pod::Elemental::Element::Nested->new({ command => "head" . $self->head, content => $self->title, children => [ $element ], }); } push $document->children->@*, $element; } # BEGIN CODE IMPORTED FROM Dist::Zilla::Role::TextTemplate #pod =attr delim #pod #pod If given, this must be an arrayref with two elements. These will be the #pod opening and closing delimiters of template variable sections. By default they #pod are C<{{> and C<}}>. #pod #pod =cut has delim => ( is => 'ro', isa => 'ArrayRef', lazy => 1, init_arg => undef, default => sub { [ qw( {{ }} ) ] }, ); sub fill_in_string { my ($self, $string, $stash, $arg) = @_; $self->log_fatal("Cannot use undef as a template string") unless defined $string; my $tmpl = Text::Template->new( TYPE => 'STRING', SOURCE => $string, DELIMITERS => $self->delim, BROKEN => sub { my %hash = @_; die $hash{error}; }, %$arg, ); $self->log_fatal("Could not create a Text::Template object from:\n$string") unless $tmpl; my $content = $tmpl->fill_in(%$arg, HASH => $stash); $self->log_fatal("Filling in the template returned undef for:\n$string") unless defined $content; return $content; } # END CODE IMPORTED FROM Dist::Zilla::Role::TextTemplate __PACKAGE__->meta->make_immutable; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Section::GenerateSection - add pod section from an interpolated piece of text =head1 VERSION version 4.018 =head1 SYNOPSIS In your F [GenerateSection] title = HOMEPAGE text = This is the POD for distribution {{$name}}. Check out what we have text = been up to at {{$homepage}} The title value can be omited if passed as the plugin name: [GenerateSection / HOMEPAGE] =head1 DESCRIPTION This plugin allows the creation of simple text sections, with or without the use of Text::Template for templated text. The C parameters become the lines of the template. The values of text are concatenated and variable names with matching values on the distribution are interpolated. Specifying the heading level allows one to write down a rather long section of POD text without need for extra files. For example: [GenerateSection / FEEDBACK] head = 1 [GenerateSection / Reporting bugs] head = 2 text = Please report bugs when you find them. While we do have a mailing text = list, please use the bug tracker at {{$bugtracker_web}} text = to report bugs [GenerateSection / Homegape] head = 2 text = Also, come check out our other projects at text = {{$homepage}} =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 text The text to be added to the section. Multiple values are allowed and will be concatenated. Certain sequences on the text will be replaced (see below). =head2 head This is the I to use in the C<=headX> that's created. If it's C<0> then no heading is added. It defaults to C<1>. =head2 title The title for this section. If none is given, the plugin's name is used. =head2 main_module_only If true, this attribute indicates that only the main module's Pod should be altered. By default, it is false. =head2 If true, the text is treated as a L template and rendered. This attribute B. =head2 delim If given, this must be an arrayref with two elements. These will be the opening and closing delimiters of template variable sections. By default they are C<{{> and C<}}>. =head1 TEMPLATE RENDERING When rendering as a template, the variables C<$plugin>, C<$dist>, and C<$distmeta> will be provided, set to the GenerateSection plugin, C object, and the distribution metadata hash respectively. For convenience, the following variables are also set: =over 4 =item * C<< $name >> =item * C<< $version >> =item * C<< $homepage >> =item * C<< $repository_web >> =item * C<< $repository_url >> =item * C<< $bugtracker_web >> =item * C<< $bugtracker_email >> =back =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/Preparer.pm000644 000765 000024 00000003377 14063402522 021352 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::Preparer 4.018; # ABSTRACT: something that mucks about with the input before weaving begins use Moose::Role; with 'Pod::Weaver::Role::Plugin'; use namespace::autoclean; #pod =head1 IMPLEMENTING #pod #pod The Preparer role indicates that a plugin will be used to pre-process the input #pod hashref before weaving begins. The plugin must provide a C #pod method which will be called with the input hashref. It is expected to modify #pod the input in place. #pod #pod =cut requires 'prepare_input'; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::Preparer - something that mucks about with the input before weaving begins =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 IMPLEMENTING The Preparer role indicates that a plugin will be used to pre-process the input hashref before weaving begins. The plugin must provide a C method which will be called with the input hashref. It is expected to modify the input in place. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/Finalizer.pm000644 000765 000024 00000003521 14063402522 021504 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::Finalizer 4.018; # ABSTRACT: something that goes back and finishes up after main weaving is over use Moose::Role; with 'Pod::Weaver::Role::Plugin'; use namespace::autoclean; #pod =head1 IMPLEMENTING #pod #pod The Finalizer role indicates that a plugin will be used to post-process the #pod output document hashref after section weaving is completed. The plugin must #pod provide a C method which will be called as follows: #pod #pod $finalizer_plugin->finalize_document($document, \%input); #pod #pod =cut requires 'finalize_document'; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::Finalizer - something that goes back and finishes up after main weaving is over =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 IMPLEMENTING The Finalizer role indicates that a plugin will be used to post-process the output document hashref after section weaving is completed. The plugin must provide a C method which will be called as follows: $finalizer_plugin->finalize_document($document, \%input); =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/StringFromComment.pm000644 000765 000024 00000007415 14063402522 023204 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::StringFromComment 4.018; # ABSTRACT: Extract a string from a specially formatted comment use Moose::Role; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use namespace::autoclean; #pod =head1 OVERVIEW #pod #pod This role assists L by #pod allowing them to pull strings from the source comments formatted like: #pod #pod # KEYNAME: Some string... #pod #pod This is probably the most familiar to people using lines like the following to #pod allow the L to determine a module's #pod abstract: #pod #pod # ABSTRACT: Provides the HypnoToad with mind-control powers #pod #pod It will extract these strings by inspecting the C which #pod must be given. #pod #pod =head1 PRIVATE METHODS #pod #pod This role supplies only methods meant to be used internally by its consumer. #pod #pod =head2 _extract_comment_content($ppi_doc, $key) #pod #pod Given a key, try to find a comment matching C<# $key:> in the C<$ppi_document> #pod and return everything but the prefix. #pod #pod e.g., given a document with a comment in it of the form: #pod #pod # ABSTRACT: Yada yada... #pod #pod ...and this is called... #pod #pod $self->_extract_comment_content($ppi, 'ABSTRACT') #pod #pod ...it returns to us: #pod #pod Yada yada... #pod #pod =cut sub _extract_comment_content { my ($self, $ppi_document, $key) = @_; my $regex = qr/^\s*#+\s*$key:\s*(.+)$/m; my $content; my $finder = sub { my $node = $_[1]; return 0 unless $node->isa('PPI::Token::Comment'); if ( $node->content =~ $regex ) { $content = $1; return 1; } return 0; }; $ppi_document->find_first($finder); return $content; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::StringFromComment - Extract a string from a specially formatted comment =head1 VERSION version 4.018 =head1 OVERVIEW This role assists L by allowing them to pull strings from the source comments formatted like: # KEYNAME: Some string... This is probably the most familiar to people using lines like the following to allow the L to determine a module's abstract: # ABSTRACT: Provides the HypnoToad with mind-control powers It will extract these strings by inspecting the C which must be given. =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 PRIVATE METHODS This role supplies only methods meant to be used internally by its consumer. =head2 _extract_comment_content($ppi_doc, $key) Given a key, try to find a comment matching C<# $key:> in the C<$ppi_document> and return everything but the prefix. e.g., given a document with a comment in it of the form: # ABSTRACT: Yada yada... ...and this is called... $self->_extract_comment_content($ppi, 'ABSTRACT') ...it returns to us: Yada yada... =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/Dialect.pm000644 000765 000024 00000003475 14063402522 021136 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::Dialect 4.018; # ABSTRACT: something that translates Pod subdialects to standard Pod5 use Moose::Role; with 'Pod::Weaver::Role::Plugin'; use namespace::autoclean; #pod =head1 IMPLEMENTING #pod #pod The Dialect role indicates that a plugin will be used to pre-process the input #pod Pod document before weaving begins. The plugin must provide a #pod C method which will be called with the input hashref's #pod C entry. It is expected to modify the document in place. #pod #pod =cut requires 'translate_dialect'; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::Dialect - something that translates Pod subdialects to standard Pod5 =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 IMPLEMENTING The Dialect role indicates that a plugin will be used to pre-process the input Pod document before weaving begins. The plugin must provide a C method which will be called with the input hashref's C entry. It is expected to modify the document in place. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/Section.pm000644 000765 000024 00000003740 14063402522 021170 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::Section 4.018; # ABSTRACT: a plugin that will get a section into a woven document use Moose::Role; with 'Pod::Weaver::Role::Plugin'; use namespace::autoclean; #pod =head1 IMPLEMENTING #pod #pod This role is used by plugins that will append sections to the output document. #pod They must provide a method, C which will be invoked like this: #pod #pod $section_plugin->weave_section($output_document, \%input); #pod #pod They are expected to append their output to the output document, but they are #pod free to behave differently if it's needed to do something really cool. #pod #pod =cut requires 'weave_section'; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::Section - a plugin that will get a section into a woven document =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 IMPLEMENTING This role is used by plugins that will append sections to the output document. They must provide a method, C which will be invoked like this: $section_plugin->weave_section($output_document, \%input); They are expected to append their output to the output document, but they are free to behave differently if it's needed to do something really cool. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/Plugin.pm000644 000765 000024 00000004741 14063402522 021024 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::Plugin 4.018; # ABSTRACT: a Pod::Weaver plugin use Moose::Role; # BEGIN BOILERPLATE use v5.20.0; use warnings; use utf8; no feature 'switch'; use experimental qw(postderef postderef_qq); # This experiment gets mainlined. # END BOILERPLATE use Params::Util qw(_HASHLIKE); use namespace::autoclean; #pod =head1 IMPLEMENTING #pod #pod This is the most basic role that all plugins must perform. #pod #pod =attr plugin_name #pod #pod This name must be unique among all other plugins loaded into a weaver. In #pod general, this will be set up by the configuration reader. #pod #pod =cut has plugin_name => ( is => 'ro', isa => 'Str', required => 1, ); #pod =attr weaver #pod #pod This is the Pod::Weaver object into which the plugin was loaded. In general, #pod this will be set up when the weaver is instantiated from config. #pod #pod =cut has weaver => ( is => 'ro', isa => 'Pod::Weaver', required => 1, weak_ref => 1, ); has logger => ( is => 'ro', lazy => 1, handles => [ qw(log log_debug log_fatal) ], default => sub { $_[0]->weaver->logger->proxy({ proxy_prefix => '[' . $_[0]->plugin_name . '] ', }); }, ); 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::Plugin - a Pod::Weaver plugin =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 ATTRIBUTES =head2 plugin_name This name must be unique among all other plugins loaded into a weaver. In general, this will be set up by the configuration reader. =head2 weaver This is the Pod::Weaver object into which the plugin was loaded. In general, this will be set up when the weaver is instantiated from config. =head1 IMPLEMENTING This is the most basic role that all plugins must perform. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/lib/Pod/Weaver/Role/Transformer.pm000644 000765 000024 00000003430 14063402522 022062 0ustar00rjbsstaff000000 000000 package Pod::Weaver::Role::Transformer 4.018; # ABSTRACT: something that restructures a Pod5 document use Moose::Role; with 'Pod::Weaver::Role::Plugin'; use namespace::autoclean; #pod =head1 IMPLEMENTING #pod #pod The Transformer role indicates that a plugin will be used to pre-process the input #pod hashref's Pod document before weaving begins. The plugin must provide a #pod C method which will be called with the input Pod document. #pod It is expected to modify the input in place. #pod #pod =cut requires 'transform_document'; 1; __END__ =pod =encoding UTF-8 =head1 NAME Pod::Weaver::Role::Transformer - something that restructures a Pod5 document =head1 VERSION version 4.018 =head1 PERL VERSION SUPPORT This module has the same support period as perl itself: it supports the two most recent versions of perl. (That is, if the most recently released version is v5.40, then this module should work on both v5.40 and v5.38.) Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =head1 IMPLEMENTING The Transformer role indicates that a plugin will be used to pre-process the input hashref's Pod document before weaving begins. The plugin must provide a C method which will be called with the input Pod document. It is expected to modify the input in place. =head1 AUTHOR Ricardo SIGNES =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2021 by Ricardo SIGNES. 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 Pod-Weaver-4.018/xt/author/000755 000765 000024 00000000000 14063402522 015535 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/xt/release/000755 000765 000024 00000000000 14063402522 015653 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/xt/release/changes_has_content.t000644 000765 000024 00000002101 14063402522 022027 0ustar00rjbsstaff000000 000000 use Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; my $newver = '4.018'; 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; } Pod-Weaver-4.018/xt/author/pod-syntax.t000644 000765 000024 00000000252 14063402522 020027 0ustar00rjbsstaff000000 000000 #!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(); Pod-Weaver-4.018/t/legal_section.t000644 000765 000024 00000003474 14063402522 017050 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Weaver; use Software::License::Perl_5; # Test various combinations of options for Section::Legal do_weave( configer( ), 'legal_t1' ); do_weave( configer( license_file => 'LICENSE' ), 'legal_t2' ); sub configer { my %opts = @_; # TODO Hmpf, is there an easier way for this? --APOCAL my $assembler = Pod::Weaver::Config::Assembler->new; $assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) ); $assembler->change_section('@CorePrep'); $assembler->change_section('Name'); $assembler->change_section('Leftovers'); $assembler->change_section('Legal'); foreach my $k ( keys %opts ) { $assembler->add_value( $k => $opts{ $k } ); } return Pod::Weaver->new_from_config_sequence( $assembler->sequence ); } my $perl_document; sub do_weave { my( $weaver, $filename ) = @_; my $in_pod = do { local $/; open my $fh, '<:encoding(UTF-8)', "t/eg/$filename.in.pod"; <$fh> }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', "t/eg/$filename.out.pod"; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); $perl_document = do { local $/; } if ! defined $perl_document; my $ppi_document = PPI::Document->new(\$perl_document); my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, license => Software::License::Perl_5->new({ holder => 'RJBS', year => '2010', }), }); # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( $woven->as_pod_string, $expected, "exactly the pod string we wanted after weaving for $filename!", ); } done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/version_without_package.t000644 000765 000024 00000003377 14063402522 021165 0ustar00rjbsstaff000000 000000 # Mostly lifted from version_options.t but with different data section. use strict; use warnings; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Weaver; do_weave( configer( ), 'version_without_package' ); do_weave( configer( format => "%t%v%t-%t%m", is_verbatim => 1 ), 'version_t4'); sub configer { my %opts = @_; # TODO Hmpf, is there an easier way for this? --APOCAL my $assembler = Pod::Weaver::Config::Assembler->new; $assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) ); $assembler->change_section('@CorePrep'); $assembler->change_section('Name'); $assembler->change_section('Version'); foreach my $k ( keys %opts ) { $assembler->add_value( $k => $opts{ $k } ); } $assembler->change_section('Leftovers'); return Pod::Weaver->new_from_config_sequence( $assembler->sequence ); } my $perl_document; sub do_weave { my( $weaver, $filename ) = @_; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', "t/eg/$filename.in.pod"; <$fh> }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', "t/eg/$filename.out.pod"; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); $perl_document = do { local $/; } if ! defined $perl_document; my $ppi_document = PPI::Document->new(\$perl_document); my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', }); # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( $woven->as_pod_string, $expected, "exactly the pod string we wanted after weaving for $filename!", ); } done_testing; __DATA__ # ABSTRACT: abstract text # PODNAME: Module::Name my $this = 'a test'; Pod-Weaver-4.018/t/generate-section.t000644 000765 000024 00000007115 14063402522 017470 0ustar00rjbsstaff000000 000000 #!perl use strict; use warnings; use utf8; use Test::More; use Pod::Elemental; use Pod::Weaver; use Pod::Weaver::Config::Assembler; use PPI; sub make_weaver { my ($config) = @_; my $assembler = Pod::Weaver::Config::Assembler->new; my $root = $assembler->section_class->new({ name => '_' }); $assembler->sequence->add_section($root); $assembler->change_section('GenerateSection'); # XXX This is junky. -- rjbs, 2021-04-05 for my $key (keys %$config) { if ($key eq 'text') { my @lines = split /\n/, $config->{$key}; $assembler->add_value($key => $_) for @lines; } else { $assembler->add_value($key => $config->{$key}); } } $assembler->end_section; return Pod::Weaver->new_from_config_sequence($assembler->sequence, {}); } sub weave_ok { my ($section_config, $extra_input, $expect) = @_; my $in_pod = q{}; my $document = Pod::Elemental->read_string($in_pod); # wants octets my $ppi_document = PPI::Document->new(\""); my $weaver = make_weaver($section_config); my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, %$extra_input, }); my $pod_string = $woven->as_pod_string; local $Test::Builder::Level = $Test::Builder::Level + 1; if (ref $expect) { return like($pod_string, $expect, "woven document is okay"); } $pod_string =~ s/\A=pod\v+//; return is( $pod_string, $expect, "woven document contains expected substring", ); } weave_ok( { title => 'Header Title' }, {}, "=head1 Header Title\n\n=cut\n", ); weave_ok( { title => 'Whatever', text => 'This is package {{$name}} v{{$version}}', }, { zilla => 1, # to trigger zilla-like operation distmeta => { name => "Foo", version => "1.2.3" }, }, "=head1 Whatever\n\nThis is package Foo v1.2.3\n\n=cut\n", ); { my $template = <<'END'; Name {{$name}} v{{$version}} Homepage {{$homepage}} repo web {{$repository_web}} repo url {{$repository_url}} bugtracker url {{$bugtracker_web}} bugtracker email {{$bugtracker_email}} END my $expect = <<'END'; =head1 Gorp Name Foo-Bar v0.010 Homepage https://foo-bar.xyz/ repo web https://hg.xyz.com/hgweb/pro repo url https://there.com/dude/project bugtracker url https://foo-bar.xyz/bugs/ bugtracker email bug-project@foo-bar-example =cut END weave_ok( { title => 'Gorp', text => $template, }, { zilla => 1, # to trigger zilla-like operation distmeta => { name => 'Foo-Bar', version => '0.010', resources => { homepage => 'https://foo-bar.xyz/', repository => { url => 'https://there.com/dude/project', web => 'https://hg.xyz.com/hgweb/pro', }, bugtracker => { web => 'https://foo-bar.xyz/bugs/', mailto => 'bug-project@foo-bar-example', }, }, }, }, $expect, ); } weave_ok( { title => 'Whatever', text => 'This is package {{$name}} v{{$version}}', is_template => 0, }, { zilla => 1, # to trigger zilla-like operation distmeta => { name => "Foo", version => "1.2.3" }, }, "=head1 Whatever\n\nThis is package {{\$name}} v{{\$version}}\n\n=cut\n", ); weave_ok( { head => 2, title => 'Whatever', text => 'Xyz', }, {}, "=head2 Whatever\n\nXyz\n\n=cut\n", ); weave_ok( { head => 0, title => 'Whatever', text => 'Xyz', }, {}, "Xyz\n\n=cut\n", ); weave_ok( { title => 'Foo', text => "This\n\n\nrocks.", }, {}, "=head1 Foo\n\nThis\n\n\nrocks.\n\n=cut\n", ); done_testing; Pod-Weaver-4.018/t/version_options.t000644 000765 000024 00000005271 14063402522 017475 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Weaver; # Test various combinations of options for Section::Version do_weave( configer( ), 'version_t1' ); do_weave( configer( is_verbatim => 1 ), 'version_t2' ); do_weave( configer( format => "%v FOOBAZ" ), 'version_t3' ); do_weave( configer( format => "%t%v%t-%t%m", is_verbatim => 1 ), 'version_t4' ); # In order to test DateTime, we have to avoid touching the time! Hence UTC and # the weird CLDR here... do_weave( configer( format => "%v - %{ZZZZ G}d", time_zone => 'UTC' ), 'version_t5', ); do_weave( configer( format => ["%v", "FOOBAZ", "", "EXPLANATION"] ), 'version_t6', ); do_weave( configer(format => [ "%v", "FOOBAZ", "", "EXPLANATION", "%T", "%T This is a trial release.", ]), 'version_t6', 'version_t6', ); do_weave( configer(format => [ "%v", "FOOBAZ", "", "EXPLANATION", "%T", "%T This is a trial release.", ]), 'version_t6', 'version_t6-trial', { is_trial => 1 }, ); sub configer { my %opts = @_; # TODO Hmpf, is there an easier way for this? --APOCAL my $assembler = Pod::Weaver::Config::Assembler->new; $assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) ); $assembler->change_section('@CorePrep'); $assembler->change_section('Name'); $assembler->change_section('Version'); foreach my $k ( keys %opts ) { if (ref $opts{ $k }) { $assembler->add_value( $k => $_ ) for @{ $opts{ $k } }; } else { $assembler->add_value( $k => $opts{ $k } ); } } $assembler->change_section('Leftovers'); return Pod::Weaver->new_from_config_sequence( $assembler->sequence ); } my $perl_document; sub do_weave { my( $weaver, $filename, $expect_fn, $extra ) = @_; $expect_fn ||= $filename; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', "t/eg/$filename.in.pod"; <$fh>; }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', "t/eg/$expect_fn.out.pod"; <$fh>; }; my $document = Pod::Elemental->read_string($in_pod); $perl_document = do { local $/; } if ! defined $perl_document; my $ppi_document = PPI::Document->new(\$perl_document); my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', %{ $extra || {} }, }); # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( $woven->as_pod_string, $expected, "exactly the pod string we wanted after weaving for $filename!", ); } done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/encoding.t000644 000765 000024 00000003330 14063402522 016015 0ustar00rjbsstaff000000 000000 use strict; use warnings; use utf8; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Elemental::Selectors -all; use Pod::Elemental::Transformer::Pod5; use Pod::Elemental::Transformer::Nester; use Pod::Weaver; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', 't/eg/encoding.in.pod'; <$fh> }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', 't/eg/encoding.out.pod'; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); my $perl_document = do { local $/; }; my $ppi_document = PPI::Document->new(\$perl_document); my $weaver = Pod::Weaver->new_with_default_config; require Software::License::Artistic_1_0; my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', authors => [ 'Ricardo Signes ', 'Molly Millions ', ], license => Software::License::Artistic_1_0->new({ holder => 'Ricardo Signes', year => 1999, }), }); is(@{ $woven->children }, 11, "we end up with a 11-paragraph document"); for (qw(1 2 4 5 6 7 9 10)) { my $para = $woven->children->[ $_ ]; isa_ok($para, 'Pod::Elemental::Element::Nested', "element $_"); is($para->command, 'head1', "... and is =head1"); } is( $woven->children->[2]->children->[0]->content, 'version 1.012078', "the version is in the version section", ); # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( [ split /\n/, $woven->as_pod_string ], [ split /\n/, $expected ], "exactly the pod string we wanted after weaving!", ); done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text with UTF-8 paçoca my $this = 'a test'; Pod-Weaver-4.018/t/required_region.t000644 000765 000024 00000003132 14063402522 017412 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use PPI; use Pod::Elemental; use Pod::Weaver; is( woven( configer( 0 ) ), 0, "Doesn't throw exception for nonrequired region" ); is( woven( configer( 1 ) ), 1, "Properly throws exception for required region" ); sub configer { my $required = shift; # TODO Hmpf, is there an easier way for this? --APOCAL my $assembler = Pod::Weaver::Config::Assembler->new; $assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) ); $assembler->change_section('@Default'); $assembler->change_section('Region', 'FOOBAZ'); $assembler->add_value( 'required' => $required ); return Pod::Weaver->new_from_config_sequence( $assembler->sequence ); } my $perl_document; sub woven { my $weaver = shift; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', 't/eg/basic.in.pod'; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); $perl_document = do { local $/; } if ! defined $perl_document; my $ppi_document = PPI::Document->new(\$perl_document); require Software::License::Artistic_1_0; eval { my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', authors => [ 'Ricardo Signes ', 'Molly Millions ', ], license => Software::License::Artistic_1_0->new({ holder => 'Ricardo Signes', year => 1999, }), }); }; return $@ ? 1 : 0; } done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/basic.t000644 000765 000024 00000005361 14063402522 015316 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Elemental::Selectors -all; use Pod::Elemental::Transformer::Pod5; use Pod::Elemental::Transformer::Nester; use Pod::Weaver; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', 't/eg/basic.in.pod'; <$fh> }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', 't/eg/basic.out.pod'; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); # wants octets my $perl_document = do { local $/; }; my $ppi_document = PPI::Document->new(\$perl_document); my $weaver = Pod::Weaver->new_with_default_config; require Software::License::Artistic_1_0; my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', authors => [ 'Ricardo Signes ', 'Molly Millions ', ], license => Software::License::Artistic_1_0->new({ holder => 'Ricardo Signes', year => 1999, }), }); # Document # 0 =encoding UTF-8 # 1 =head1 NAME # 0 Pod5::Ordinary # 2 =head1 VERSION # 0 Pod5::Ordinary # 3 Pod5::Ordinary # 4 =head1 SYNOPSIS # 0 Pod5::Ordinary # 5 =head1 DESCRIPTION # 0 Pod5::Ordinary # 1 Pod5::Ordinary # 6 =head1 ATTRIBUTES # 0 =head2 is_awesome # 0 Pod5::Ordinary <(This is true by default.)> # 7 =head1 BE FOREWARNED # 0 Pod5::Ordinary # 1 Pod5::Verbatim < much at all> # 2 Pod5::Ordinary # 8 Pod5::Ordinary # 9 =head1 AUTHORS # 0 =over 4 # 1 =item * # 2 Pod5::Ordinary # 3 =item * # 4 Pod5::Ordinary # 5 =back # 10 =head1 COPYRIGHT AND LICENSE # 0 Pod5::Ordinary is(@{ $woven->children }, 11, "we end up with a 11-paragraph document"); for (qw(1 2 4 5 6 7 9 10)) { my $para = $woven->children->[ $_ ]; isa_ok($para, 'Pod::Elemental::Element::Nested', "element $_"); is($para->command, 'head1', "... and is =head1"); } is( $woven->children->[2]->children->[0]->content, 'version 1.012078', "the version is in the version section", ); # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( $woven->as_pod_string, $expected, "exactly the pod string we wanted after weaving!", ); done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/region_options.t000644 000765 000024 00000004704 14063402522 017273 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Weaver; # Test various combinations of options for Section::Region do_weave( configer( allow_nonpod => 1 ), 'region_t1' ); do_weave( configer( allow_nonpod => 0 ), 'region_t1' ); do_weave( configer( allow_nonpod => 1 ), 'region_t2' ); do_weave( configer( allow_nonpod => 0 ), 'region_t2' ); do_weave( configer( flatten => 0 ), 'region_t3' ); do_weave( configer( flatten => 1 ), 'region_t4' ); do_weave( configer( allow_nonpod => 1, flatten => 0 ), 'region_t3' ); do_weave( configer( allow_nonpod => 0, flatten => 0 ), 'region_t3' ); do_weave( configer( allow_nonpod => 1, flatten => 1 ), 'region_t4' ); do_weave( configer( allow_nonpod => 0, flatten => 1 ), 'region_t4' ); sub configer { my %opts = @_; # TODO Hmpf, is there an easier way for this? --APOCAL my $assembler = Pod::Weaver::Config::Assembler->new; $assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) ); $assembler->change_section('@CorePrep'); $assembler->change_section('Name'); $assembler->change_section('Region', 'FOOBAZ'); foreach my $k ( keys %opts ) { $assembler->add_value( $k => $opts{ $k } ); } $assembler->change_section('Leftovers'); return Pod::Weaver->new_from_config_sequence( $assembler->sequence ); } my $perl_document; sub do_weave { my( $weaver, $filename ) = @_; my $in_pod = do { local $/; open my $fh, '<:encoding(UTF-8)', "t/eg/$filename.in.pod"; <$fh> }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', "t/eg/$filename.out.pod"; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); $perl_document = do { local $/; } if ! defined $perl_document; my $ppi_document = PPI::Document->new(\$perl_document); my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, }); is(@{ $woven->children }, 5, "we end up with a 5-paragraph document"); for (qw(0 2 3 4)) { my $para = $woven->children->[ $_ ]; isa_ok($para, 'Pod::Elemental::Element::Nested', "element $_"); is($para->command, 'head1', "... and is =head1"); } # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( $woven->as_pod_string, $expected, "exactly the pod string we wanted after weaving for $filename!", ); } done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/00-report-prereqs.t000644 000765 000024 00000013452 14063402522 017444 0ustar00rjbsstaff000000 000000 #!perl use strict; use warnings; # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.028 use Test::More tests => 1; use ExtUtils::MakeMaker; 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( ); 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 = MM->parse_version( File::Spec->catfile($prefix, $file) ); $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('Reported prereqs'); # vim: ts=4 sts=4 sw=4 et: Pod-Weaver-4.018/t/ini-config.t000644 000765 000024 00000005302 14063402522 016252 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use Test::Differences; use PPI; use Pod::Elemental; use Pod::Elemental::Selectors -all; use Pod::Elemental::Transformer::Pod5; use Pod::Elemental::Transformer::Nester; use Pod::Weaver; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', 't/eg/basic.in.pod'; <$fh> }; my $expected = do { local $/; open my $fh, '<:encoding(UTF-8)', 't/eg/basic.out.pod'; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); my $perl_document = do { local $/; }; my $ppi_document = PPI::Document->new(\$perl_document); my $weaver = Pod::Weaver->new_from_config({ root => 't/eg' }); require Software::License::Artistic_1_0; my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', authors => [ 'Ricardo Signes ', 'Molly Millions ', ], license => Software::License::Artistic_1_0->new({ holder => 'Ricardo Signes', year => 1999, }), }); # Document # 0 =encoding UTF-8 # 1 =head1 NAME # 0 Pod5::Ordinary # 2 =head1 VERSION # 0 Pod5::Ordinary # 3 Pod5::Ordinary # 4 =head1 SYNOPSIS # 0 Pod5::Ordinary # 5 =head1 DESCRIPTION # 0 Pod5::Ordinary # 1 Pod5::Ordinary # 6 =head1 ATTRIBUTES # 0 Pod5::Ordinary # 1 =head2 is_awesome # 0 Pod5::Ordinary <(This is true by default.)> # 7 =head1 BE FOREWARNED # 0 Pod5::Ordinary # 1 Pod5::Verbatim < much at all> # 2 Pod5::Ordinary # 8 Pod5::Ordinary # 9 =head1 AUTHORS # 0 Pod5::Verbatim < Ricardo Signe…rs@orbit.tash>> # 10 =head1 COPYRIGHT AND LICENSE # 0 Pod5::Ordinary is(@{ $woven->children }, 11, "we end up with a 11-paragraph document"); for (qw(1 2 4 5 6 7 9 10)) { my $para = $woven->children->[ $_ ]; isa_ok($para, 'Pod::Elemental::Element::Nested', "element $_"); is($para->command, 'head1', "... and is =head1"); } is( $woven->children->[2]->children->[0]->content, 'version 1.012078', "the version is in the version section", ); # XXX: This test is extremely risky as things change upstream. # -- rjbs, 2009-10-23 eq_or_diff( $woven->as_pod_string, $expected, "exactly the pod string we wanted after weaving!", ); done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/00-report-prereqs.dd000644 000765 000024 00000010020 14063402522 017554 0ustar00rjbsstaff000000 000000 do { my $x = { 'configure' => { 'requires' => { 'ExtUtils::MakeMaker' => '6.78' } }, 'develop' => { 'requires' => { 'Encode' => '0', 'Test::More' => '0', 'Test::Pod' => '1.41' } }, 'runtime' => { 'requires' => { 'Config::MVP' => '2', 'Config::MVP::Assembler' => '0', 'Config::MVP::Assembler::WithBundles' => '0', 'Config::MVP::Reader::Finder' => '0', 'Config::MVP::Reader::INI' => '0', 'DateTime' => '0', 'File::Spec' => '0', 'List::MoreUtils' => '0', 'List::Util' => '1.33', 'Log::Dispatchouli' => '1.100710', 'Mixin::Linewise::Readers' => '0.103', 'Module::Runtime' => '0', 'Moose' => '0', 'Moose::Role' => '0', 'Moose::Util::TypeConstraints' => '0', 'Params::Util' => '0', 'Pod::Elemental' => '0.100220', 'Pod::Elemental::Document' => '0', 'Pod::Elemental::Element::Nested' => '0', 'Pod::Elemental::Element::Pod5::Command' => '0', 'Pod::Elemental::Element::Pod5::Ordinary' => '0', 'Pod::Elemental::Element::Pod5::Region' => '0', 'Pod::Elemental::Element::Pod5::Verbatim' => '0', 'Pod::Elemental::Selectors' => '0', 'Pod::Elemental::Transformer::Gatherer' => '0', 'Pod::Elemental::Transformer::Nester' => '0', 'Pod::Elemental::Transformer::Pod5' => '0', 'Pod::Elemental::Types' => '0', 'String::Flogger' => '1', 'String::Formatter' => '0.100680', 'String::RewritePrefix' => '0', 'Text::Template' => '0', 'Text::Wrap' => '0', 'experimental' => '0', 'feature' => '0', 'namespace::autoclean' => '0', 'perl' => 'v5.20.0', 'strict' => '0', 'utf8' => '0', 'warnings' => '0' } }, 'test' => { 'recommends' => { 'CPAN::Meta' => '2.120900' }, 'requires' => { 'ExtUtils::MakeMaker' => '0', 'File::Spec' => '0', 'PPI' => '0', 'Software::License::Artistic_1_0' => '0', 'Software::License::Perl_5' => '0', 'Test::Differences' => '0', 'Test::More' => '0.96' } } }; $x; }Pod-Weaver-4.018/t/eg/000755 000765 000024 00000000000 14063402522 014436 5ustar00rjbsstaff000000 000000 Pod-Weaver-4.018/t/required_section.t000644 000765 000024 00000003135 14063402522 017576 0ustar00rjbsstaff000000 000000 use strict; use warnings; use Test::More; use PPI; use Pod::Elemental; use Pod::Weaver; is( woven( configer( 0 ) ), 0, "Doesn't throw exception for nonrequired section" ); is( woven( configer( 1 ) ), 1, "Properly throws exception for required section" ); sub configer { my $required = shift; # TODO Hmpf, is there an easier way for this? --APOCAL my $assembler = Pod::Weaver::Config::Assembler->new; $assembler->sequence->add_section( $assembler->section_class->new({ name => '_' }) ); $assembler->change_section('@Default'); $assembler->change_section('Generic', 'FOOBAZ'); $assembler->add_value( 'required' => $required ); return Pod::Weaver->new_from_config_sequence( $assembler->sequence ); } my $perl_document; sub woven { my $weaver = shift; my $in_pod = do { local $/; open my $fh, '<:raw:bytes', 't/eg/basic.in.pod'; <$fh> }; my $document = Pod::Elemental->read_string($in_pod); $perl_document = do { local $/; } if ! defined $perl_document; my $ppi_document = PPI::Document->new(\$perl_document); require Software::License::Artistic_1_0; eval { my $woven = $weaver->weave_document({ pod_document => $document, ppi_document => $ppi_document, version => '1.012078', authors => [ 'Ricardo Signes ', 'Molly Millions ', ], license => Software::License::Artistic_1_0->new({ holder => 'Ricardo Signes', year => 1999, }), }); }; return $@ ? 1 : 0; } done_testing; __DATA__ package Module::Name; # ABSTRACT: abstract text my $this = 'a test'; Pod-Weaver-4.018/t/eg/version_without_package.out.pod000644 000765 000024 00000000523 14063402522 022673 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION version 1.012078 =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t3.out.pod000644 000765 000024 00000000530 14063402522 017637 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =for :FOOBAZ Wow, this is the FOOBAZ! =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t6.out.pod000644 000765 000024 00000000537 14063402522 020053 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION 1.012078 FOOBAZ EXPLANATION =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t3.in.pod000644 000765 000024 00000000406 14063402522 017642 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/encoding.out.pod000644 000765 000024 00000001430 14063402522 017534 0ustar00rjbsstaff000000 000000 =pod =encoding UTF-8 =head1 NAME Module::Name - abstract text with UTF-8 paçoca =head1 VERSION version 1.012078 Please pay close attention to the following. =head1 SYNOPSIS This should probably get moved up front. =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. Glory to Queensrÿche! =head1 ATTRIBUTES =head2 is_awesome (This is true by default.) =head1 BE FOREWARNED This is not supported: much at all Happy haĉking! Thank you for your attention. =head1 AUTHORS =over 4 =item * Ricardo Signes =item * Molly Millions =back =head1 COPYRIGHT AND LICENSE This software is Copyright (c) 1999 by Ricardo Signes. This is free software, licensed under: The Artistic License 1.0 =cut Pod-Weaver-4.018/t/eg/region_t4.in.pod000644 000765 000024 00000000476 14063402522 017450 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =begin :FOOBAZ Wow, this is the FOOBAZ! =end :FOOBAZ =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t1.in.pod000644 000765 000024 00000000406 14063402522 017640 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t2.out.pod000644 000765 000024 00000000513 14063402522 017637 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text Wow, this is the FOOBAZ! =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t5.in.pod000644 000765 000024 00000000406 14063402522 017644 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t5.out.pod000644 000765 000024 00000000531 14063402522 020044 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION 1.012078 - UTC+0000 AD =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/basic.out.pod000644 000765 000024 00000001503 14063402522 017030 0ustar00rjbsstaff000000 000000 =pod =encoding UTF-8 =head1 NAME Module::Name - abstract text =head1 VERSION version 1.012078 Please pay close attention to the following. =head1 SYNOPSIS This should probably get moved up front. =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 ATTRIBUTES This is a header that should be above the attributes list. =head2 is_awesome (This is true by default.) =head1 BE FOREWARNED This is not supported: much at all Happy hacking! Thank you for your attention. =head1 AUTHORS =over 4 =item * Ricardo Signes =item * Molly Millions =back =head1 COPYRIGHT AND LICENSE This software is Copyright (c) 1999 by Ricardo Signes. This is free software, licensed under: The Artistic License 1.0 =cut Pod-Weaver-4.018/t/eg/legal_t1.in.pod000644 000765 000024 00000000406 14063402522 017237 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t4.out.pod000644 000765 000024 00000000535 14063402522 020047 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION 1.012078 - Module::Name =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t1.out.pod000644 000765 000024 00000000513 14063402522 017636 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text Wow, this is the FOOBAZ! =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t6-trial.out.pod000644 000765 000024 00000000571 14063402522 021162 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION 1.012078 FOOBAZ EXPLANATION This is a trial release. =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t2.in.pod000644 000765 000024 00000000455 14063402522 017443 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =for :FOOBAZ Wow, this is the FOOBAZ! =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t1.out.pod000644 000765 000024 00000000523 14063402522 020041 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION version 1.012078 =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t2.in.pod000644 000765 000024 00000000406 14063402522 017641 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t4.out.pod000644 000765 000024 00000000513 14063402522 017641 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text Wow, this is the FOOBAZ! =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/basic.in.pod000644 000765 000024 00000000756 14063402522 016640 0ustar00rjbsstaff000000 000000 =pod =for :prelude Please pay close attention to the following. =for :postlude Thank you for your attention. =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 ATTRIBUTES This is a header that should be above the attributes list. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =attr is_awesome (This is true by default.) =cut Pod-Weaver-4.018/t/eg/legal_t2.out.pod000644 000765 000024 00000001150 14063402522 017436 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by RJBS. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. The full text of the license can be found in the F file included with this distribution. =cut Pod-Weaver-4.018/t/eg/version_without_package.in.pod000644 000765 000024 00000000406 14063402522 022472 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/legal_t2.in.pod000644 000765 000024 00000000406 14063402522 017240 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t1.in.pod000644 000765 000024 00000000476 14063402522 017445 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =begin :FOOBAZ Wow, this is the FOOBAZ! =end :FOOBAZ =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/weaver.ini000644 000765 000024 00000000415 14063402522 016430 0ustar00rjbsstaff000000 000000 [@CorePrep] [-SingleEncoding] [Name] [Version] [Region / prelude] [Generic / SYNOPSIS] [Generic / DESCRIPTION] [Generic / OVERVIEW] [Collect / ATTRIBUTES] command = attr [Collect / METHODS] command = method [Leftovers] [Region / postlude] [Authors] [Legal] Pod-Weaver-4.018/t/eg/version_t2.out.pod000644 000765 000024 00000000525 14063402522 020044 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION version 1.012078 =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/legal_t1.out.pod000644 000765 000024 00000001005 14063402522 017434 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2010 by RJBS. 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 Pod-Weaver-4.018/t/eg/version_t4.in.pod000644 000765 000024 00000000406 14063402522 017643 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t3.out.pod000644 000765 000024 00000000522 14063402522 020042 0ustar00rjbsstaff000000 000000 =pod =head1 NAME Module::Name - abstract text =head1 VERSION 1.012078 FOOBAZ =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/region_t3.in.pod000644 000765 000024 00000000476 14063402522 017447 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =begin :FOOBAZ Wow, this is the FOOBAZ! =end :FOOBAZ =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/version_t6.in.pod000644 000765 000024 00000000406 14063402522 017645 0ustar00rjbsstaff000000 000000 =pod =head1 DESCRIPTION This is a simple document meant to be used in testing Pod::Weaver. It does not do very much. =head1 BE FOREWARNED This is not supported: much at all Happy hacking! =head1 SYNOPSIS This should probably get moved up front. =cut Pod-Weaver-4.018/t/eg/encoding.in.pod000644 000765 000024 00000000676 14063402522 017346 0ustar00rjbsstaff000000 000000 =pod =for :prelude Please pay close attention to the following. =for :postlude Thank you for your attention. =head1 DESCRIPTION =encoding utf8 This is a simple document meant to be used in testing Pod::Weaver. Glory to Queensrÿche! =head1 BE FOREWARNED This is not supported: much at all Happy haĉking! =encoding UTF-8 =head1 SYNOPSIS This should probably get moved up front. =attr is_awesome (This is true by default.) =cut