HTML-FillInForm-2.22/000755 000765 000024 00000000000 14123725062 015463 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/perltidyrc000644 000765 000024 00000000325 14123725062 017567 0ustar00olafaldersstaff000000 000000 --blank-lines-before-packages=0 --iterations=2 --no-outdent-long-comments -bar -boc -ci=4 -i=4 -l=78 -nolq -se -wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" HTML-FillInForm-2.22/perlcriticrc000644 000765 000024 00000005000 14123725062 020066 0ustar00olafaldersstaff000000 000000 severity = 3 verbose = 11 theme = core + pbp + bugs + maintenance + cosmetic + complexity + security + tests + moose program-extensions = pl psgi t exclude = Subroutines::ProhibitCallsToUndeclaredSubs [BuiltinFunctions::ProhibitStringySplit] severity = 3 [CodeLayout::RequireTrailingCommas] severity = 3 [ControlStructures::ProhibitCStyleForLoops] severity = 3 [Documentation::RequirePackageMatchesPodName] severity = 3 [Freenode::WhileDiamondDefaultAssignment] set_themes = core [InputOutput::RequireCheckedSyscalls] functions = :builtins exclude_functions = sleep severity = 3 [Moose::RequireCleanNamespace] modules = Moose Moose::Role MooseX::Role::Parameterized Moose::Util::TypeConstraints cleaners = namespace::autoclean [NamingConventions::Capitalization] package_exemptions = [A-Z]\w+|main file_lexical_variables = [A-Z]\w+|[^A-Z]+ global_variables = :starts_with_upper scoped_lexical_variables = [A-Z]\w+|[^A-Z]+ severity = 3 # Given our code base, leaving this at 5 would be a huge pain [Subroutines::ProhibitManyArgs] max_arguments = 10 [RegularExpressions::ProhibitComplexRegexes] max_characters = 200 [RegularExpressions::ProhibitUnusualDelimiters] severity = 3 [Subroutines::ProhibitUnusedPrivateSubroutines] private_name_regex = _(?!build)\w+ [TestingAndDebugging::ProhibitNoWarnings] allow = redefine [ValuesAndExpressions::ProhibitEmptyQuotes] severity = 3 [ValuesAndExpressions::ProhibitInterpolationOfLiterals] severity = 3 [ValuesAndExpressions::RequireUpperCaseHeredocTerminator] severity = 3 [Variables::ProhibitPackageVars] add_packages = Test::Builder [-ControlStructures::ProhibitCascadingIfElse] [-ErrorHandling::RequireCarping] [-InputOutput::RequireBriefOpen] [-ValuesAndExpressions::ProhibitConstantPragma] # No need for /xsm everywhere [-RegularExpressions::RequireDotMatchAnything] [-RegularExpressions::RequireExtendedFormatting] [-RegularExpressions::RequireLineBoundaryMatching] # by concensus in standup 2015-05-12 we decided to allow return undef # this is mainly so bar can be written to return undef so that # foo( bar => bar(), bazz => baz() ) won't cause problems [-Subroutines::ProhibitExplicitReturnUndef] # This incorrectly thinks signatures are prototypes. [-Subroutines::ProhibitSubroutinePrototypes] # http://stackoverflow.com/questions/2275317/why-does-perlcritic-dislike-using-shift-to-populate-subroutine-variables [-Subroutines::RequireArgUnpacking] [-Subroutines::RequireFinalReturn] # "use v5.14" is more readable than "use 5.014" [-ValuesAndExpressions::ProhibitVersionStrings] HTML-FillInForm-2.22/README000644 000765 000024 00000002455 14123725062 016351 0ustar00olafaldersstaff000000 000000 This module automatically inserts data from a previous HTML form into the HTML input and select tags. It is a subclass of HTML::Parser and uses it to parse the HTML and insert the values into the form tags. One useful application is after a user submits an HTML form without filling out required field. HTML::FillInForm can be used to redisplay the HTML form with all the form elements containing the submitted info. Please note that this module requires HTML::Parser 3.26 or greater. To install this module, use CPAN, for example: cpan HTML::FillInForm To instead build this software from source, run: perl Makefile.PL make make test make install After installing, you can read the documentation for this module via: perldoc HTML::FillInForm HTML::FillInForm is installed by default by several web hosting providers, including pair.com - see http://www.pair.com/pair/support/library/serverconfig/perlmods.html It is also available as a package for some Linux distribution, including Mandrake. See: http://rpmfind.net/linux/RPM/cooker/cooker/i586/Mandrake/RPMS/perl-HTML-FillInForm-0.29-2mdk.noarch.html Copyright (c) 2002-2007 Thomas J. Mather, tjmather@maxmind.com All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. HTML-FillInForm-2.22/cpanfile000644 000765 000024 00000002760 14123725062 017174 0ustar00olafaldersstaff000000 000000 # This file is generated by Dist::Zilla::Plugin::CPANFile v6.024 # Do not edit this file directly. To change prereqs, edit the `dist.ini` file. requires "Carp" => "0"; requires "integer" => "0"; requires "perl" => "5.006"; requires "strict" => "0"; requires "vars" => "0"; on 'test' => sub { requires "CGI" => "0"; requires "ExtUtils::MakeMaker" => "0"; requires "File::Spec" => "0"; requires "HTML::TokeParser" => "0"; requires "Test" => "0"; requires "Test::More" => "0.96"; requires "perl" => "5.006"; requires "warnings" => "0"; }; on 'test' => sub { recommends "CPAN::Meta" => "2.120900"; }; on 'configure' => sub { requires "ExtUtils::MakeMaker" => "0"; requires "perl" => "5.006"; }; on 'develop' => sub { requires "Code::TidyAll" => "0.71"; requires "Code::TidyAll::Plugin::SortLines::Naturally" => "0.000003"; requires "Code::TidyAll::Plugin::Test::Vars" => "0.04"; requires "Code::TidyAll::Plugin::UniqueLines" => "0.000003"; requires "Parallel::ForkManager" => "1.19"; requires "Perl::Critic" => "1.132"; requires "Perl::Tidy" => "20180220"; requires "Pod::Wordlist" => "0"; requires "Test::Mojibake" => "0"; requires "Test::More" => "0"; requires "Test::Pod" => "1.41"; requires "Test::Portability::Files" => "0"; requires "Test::Spelling" => "0.12"; requires "Test::Vars" => "0.014"; requires "Test::Version" => "1"; requires "warnings" => "0"; }; on 'develop' => sub { recommends "Dist::Zilla::PluginBundle::Git::VersionManager" => "0.007"; }; HTML-FillInForm-2.22/Changes000644 000765 000024 00000020051 14123725062 016754 0ustar00olafaldersstaff000000 000000 Revision history for HTML-FillInForm 2.22 2021-09-25 23:00:59Z - Patch bug #100926, compatibility with CGI 4 (with fallback). (GH#9) (thrig) - Don't call _get_param(undef) for field types (URL, email, and number) as defined in the HTML5 draft and already implemented by the iPhone. (Michael Fisher) - Allow alternate parsing class (Mark Stosberg) - mark invalid fields (Sam Tregar) 2.0 - September 11th, 2007 - Allow passing an arrayref of hashrefs through fdat (Mark Stosberg, Michael Graham) - Several new shortcuts: (Mark Stosberg) Allow calling fill() as a class method as a shortcut. Allow \$html as shortcut for scalarref => \$html Allow \@html as shortcut for arrayref => \@html Allow \*html as shortcut for file => \*html Allow 'html' as shortcut for file => 'html' Allow $q as shortcut for fobject => $q Allow \%fdat as shortcut for fdat => \%fdat In summary, instead of this: my $fif = HTML::FillInForm->new; $fif->fill( scalarref => \$html, fdat => \%data ); You can simply write: HTML::FillInForm->fill( \$html, \%data ); - Fixed disable_fields bug (Boris Zentner) - Add support for ID attribute on form tags (name attribute is deprecated in xhtml) [rt.cpan.org #27376] (Anthony Ettinger) 1.07 - August 2nd, 2007 - Added 'disable_fields' method [rt.cpan.org #6342] (Trevor Schellhorn) - Support IE down-level revealed HTML comments [rt.cpan.org #19468] (Michael Peters) - hash is not reset before each() is called [rt.cpan.org #24980] (Simon P. Ditner) - Fix a bug the last plaintext part might be chopped if called via scalarref [rt.cpan.org #21750] (Tatsuhiko Miyagawa) - Fix bug when passing 0 in array ref to textfields, also see [rt.cpan.org #22195] (Paul Miller) - No longer generate warning if empty array as the value for a select attribute is passed (Dave Rolsky) 1.06 - October 13th, 2005 - Distinguish between selects with and without the multiple attribute set (Alexander Hartmaier) - Added warnings to PREREQ_PM 1.05 - December 19th, 2004 - Added new tests in 19_extra.t (Vsevolod (Simon) Ilyushchenko) as part of Phalanx - Make it clearer that doesn't have a CGI.pm dependency. 1.04 - March 8th, 2004 - Now queries passed objects for form fields as it encounters them instead of asking for all fields up front. This allows the type of object passed to not have to return all the fields in a empty ->param() call. (Dave Rolsky) - Generate XHTML-compliant tags (Dave Rolsky) - Documented behavior when passing undef values. - Fixed bug when HTML form has two or more radio buttons and second or higher radio button is selected. (Dan Kubb) - Made ignore_fields work with fdat, included new test script 18_ignore_fdat.t (James Tolley) 1.03 - October 15th 2003 - Fixed warning messages when textarea doesn't have a name attribute (Rob Brown) 1.02 - June 10th 2003 - Updated required version number for HTML::Parser to 3.26 in Makefile.PL (Ken Williams) 1.01 - December 31st 2002 - Fixed issue with HTML::Parser decoding high-bit entities, by setting attr_encoded option, now requires HTML::Parser >= 3.26. (Jonathan Swartz) 1.00 - August 28th 2002 - Workaround for Opera 6.01/02 bug with selected radio boxes - place space before ending "/>" in (Bill Moseley) 0.29 - May 5th 2002 - Added ignore_fields option (Boris Zentner) 0.28 - April 27th 2002 - Added missing ! in declaration handler (Boris Zentner) - Fill all values with the same name if one value is passed (Boris Zentner, Gabriel Burka) 0.27 - April 20th 2002 - Fixes to pass through comments, processing instructions, and declarations (Boris Zentner) 0.26 - April 16th 2002 - Added fill_password option (Tatsuhiko Miyagawa) 0.25 - April 3rd 2002 - Fixed bug with passing single value to multi-valued fields (Maurice Aubrey) 0.24 - March 3rd 2002 - Added no_debug to use CGI in t/13_warning.t 0.23 - January 4th 2002 - Cleaned up warning messages for input fields without a name (Boris Zentner) 0.22 - November 10th 2001 - Fixed bug with multiple inputs (Mark Stosberg) 0.21 - October 16th 2001 - Updated credits section 0.20 - October 16th 2001 - Fixed bug where selected value of '0' were skipped (Trevor Schellhorn) 0.19 - August 25th 2001 - Fixed bug where option values between tags had trailing or leading whitespace (Ade Olonoh) - Fixed bug for type tags (Andrew Creer) - Fix for error message (object -> fobject) (Mark Stosberg) 0.18 - July 7th 2001 - Fix for test on HTML escaping (thanks to Jost Krieger for report) 0.17 - June 29th 2001 - Added "fill in target form" feature (Tatsuhiko Miyagawa) 0.16 - June 28th 2001 - Fixed problems with HTML escaping (Tatsuhiko Miyagawa) 0.15 - June 18th 2001 - Works with checkbox tags that don't have value attribute. (Philip Mak) 0.14 - May 17th 2001 - Removed warning message for submit tags. (Joseph Yanni) 0.13 - May 13th 2001 - Fixed bug when TYPE attr of input tag not set (Martin H. Sluka) - Added docs on password caching (Mark Stosberg) 0.12 - May 11th 2001 - Support for multiple fobjects. - Fixed bug where new documents were feed into a used $fif object. 0.11 - March 16th 2001 - Fixed problem when fdat maps the name of a textarea to an empty string (''). Thanks to Jim Miner for the patch! 0.10 - January 19th 2001 - Fixed problem with empty option tags (e.g. ) Thanks to Ade Olonoh for the patch! 0.09 - January 15th 2001 - Text in textarea is now escaped. 0.08 - January 15th 2001 - Option tags without "value" attribute get filled in correctly. - Will not croak anymore if fobject's param method returns undef. 0.07 - January 5th 2001 - Added support for multiple checkboxes and select fields, thanks to Patrick Michael Kane for the patch and test script for checkboxes! 0.06 - October 9th 2000 - Fixed bug with "0" value in (hidden) fields - Added docs from using HTML::FillInForm from Apache::ASP and Apache::PageKit 0.05 - August 28th 2000 - Added better support for checkboxes. 0.04 - August 10th 2000 - Fixed bug with hidden fields 0.03 - August 10th 2000 - FillInForm now forces hidden fields to have a value. So is transformed to if no value is set for 'foo'. - Fixed bug with case-sensitivity and missing checkbox. Thanks to Tom Lancaster for this bug report and fix! - Added some test scripts. 0.02 - June 27th 2000 - Fixed bug with option tags. Now displays all 'option' tag attributes, in addition to selected and value. Better support for boolean attributes. 0.01 - June 18th, 2000 - Initial Release of Module. HTML-FillInForm-2.22/INSTALL000644 000765 000024 00000004600 14123725062 016514 0ustar00olafaldersstaff000000 000000 This is the Perl distribution HTML-FillInForm. Installing HTML-FillInForm is straightforward. ## Installation with cpanm If you have cpanm, you only need one line: % cpanm HTML::FillInForm If it does not have permission to install modules to the current perl, cpanm will automatically set up and install to a local::lib in your home directory. See the local::lib documentation (https://metacpan.org/pod/local::lib) for details on enabling it in your environment. ## Installing with the CPAN shell Alternatively, if your CPAN shell is set up, you should just be able to do: % cpan HTML::FillInForm ## Manual installation As a last resort, you can manually install it. If you have not already downloaded the release tarball, you can find the download link on the module's MetaCPAN page: https://metacpan.org/pod/HTML::FillInForm Untar the tarball, install configure prerequisites (see below), then build it: % perl Makefile.PL % make && make test Then install it: % make install On Windows platforms, you should use `dmake` or `nmake`, instead of `make`. If your perl is system-managed, you can create a local::lib in your home directory to install modules to. For details, see the local::lib documentation: https://metacpan.org/pod/local::lib The prerequisites of this distribution will also have to be installed manually. The prerequisites are listed in one of the files: `MYMETA.yml` or `MYMETA.json` generated by running the manual build process described above. ## Configure Prerequisites This distribution requires other modules to be installed before this distribution's installer can be run. They can be found under the "configure_requires" key of META.yml or the "{prereqs}{configure}{requires}" key of META.json. ## Other Prerequisites This distribution may require additional modules to be installed after running Makefile.PL. Look for prerequisites in the following phases: * to run make, PHASE = build * to use the module code itself, PHASE = runtime * to run tests, PHASE = test They can all be found in the "PHASE_requires" key of MYMETA.yml or the "{prereqs}{PHASE}{requires}" key of MYMETA.json. ## Documentation HTML-FillInForm documentation is available as POD. You can run `perldoc` from a shell to read the documentation: % perldoc HTML::FillInForm For more information on installing Perl modules via CPAN, please see: https://www.cpan.org/modules/INSTALL.html HTML-FillInForm-2.22/MANIFEST000644 000765 000024 00000001625 14123725062 016620 0ustar00olafaldersstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.024. CONTRIBUTORS Changes INSTALL LICENSE MANIFEST META.json META.yml Makefile.PL README README.md cpanfile dist.ini lib/HTML/FillInForm.pm perlcriticrc perltidyrc t/00-report-prereqs.dd t/00-report-prereqs.t t/00_base.t t/01_form.t t/02_hidden.t t/03_checkbox.t t/04_select.t t/05_textarea.t t/06_radio.t t/07_reuse.t t/08_multiple_objects.t t/09_default_type.t t/10_escape.t t/11_target.t t/12_mult.t t/13_warning.t t/14_password.t t/15_multiple_fields.t t/16_ignore_fields.t t/17_xhtml.t t/18_ignore_fdat.t t/19_extra.t t/20_scalarref.t t/21_disable_fields.t t/22_undef.t t/23_absent_checkbox.t t/24_radio_absent_checkboxes.t t/25_select_absent_checkboxes.t t/26_invalid_fields.t t/27_html5.t t/data/form1.html tidyall.ini xt/author/mojibake.t xt/author/pod-spell.t xt/author/pod-syntax.t xt/author/portability.t xt/author/test-version.t HTML-FillInForm-2.22/LICENSE000644 000765 000024 00000043741 14123725062 016501 0ustar00olafaldersstaff000000 000000 This software is copyright (c) 2000 by TJ Mather, tjmather@maxmind.com. 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) 2000 by TJ Mather, tjmather@maxmind.com. 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) 2000 by TJ Mather, tjmather@maxmind.com. 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 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End HTML-FillInForm-2.22/t/000755 000765 000024 00000000000 14123725062 015726 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/xt/000755 000765 000024 00000000000 14123725062 016116 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/META.yml000644 000765 000024 00000041347 14123725062 016745 0ustar00olafaldersstaff000000 000000 --- abstract: 'Populates HTML Forms with data.' author: - 'TJ Mather, tjmather@maxmind.com' build_requires: CGI: '0' ExtUtils::MakeMaker: '0' File::Spec: '0' HTML::TokeParser: '0' Test: '0' Test::More: '0.96' perl: '5.006' warnings: '0' configure_requires: ExtUtils::MakeMaker: '0' perl: '5.006' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.024, 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: HTML-FillInForm no_index: directory: - examples - t - xt requires: Carp: '0' integer: '0' perl: '5.006' strict: '0' vars: '0' resources: bugtracker: https://github.com/oalders/HTML-FillInForm/issues homepage: https://github.com/oalders/HTML-FillInForm repository: https://github.com/oalders/HTML-FillInForm.git version: '2.22' x_Dist_Zilla: perl: version: '5.034000' plugins: - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 0 check_all_prereqs: 0 modules: - Dist::Zilla::PluginBundle::Author::OALDERS phase: build run_under_travis: 0 skip: [] name: '@Author::OALDERS/stale modules, build' version: '0.057' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 1 modules: [] phase: release run_under_travis: 0 skip: [] name: '@Author::OALDERS/stale modules, release' version: '0.057' - class: Dist::Zilla::Plugin::OALDERS::TidyAll name: '@Author::OALDERS/OALDERS::TidyAll' version: '0.000029' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@Author::OALDERS/AutoPrereqs' version: '6.024' - class: Dist::Zilla::Plugin::CheckChangesHasContent name: '@Author::OALDERS/CheckChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: '1' name: '@Author::OALDERS/MakeMaker' version: '6.024' - class: Dist::Zilla::Plugin::CPANFile name: '@Author::OALDERS/CPANFile' version: '6.024' - class: Dist::Zilla::Plugin::ContributorsFile name: '@Author::OALDERS/ContributorsFile' version: 0.3.0 - class: Dist::Zilla::Plugin::MetaJSON name: '@Author::OALDERS/MetaJSON' version: '6.024' - class: Dist::Zilla::Plugin::MetaYAML name: '@Author::OALDERS/MetaYAML' version: '6.024' - class: Dist::Zilla::Plugin::Manifest name: '@Author::OALDERS/Manifest' version: '6.024' - class: Dist::Zilla::Plugin::MetaNoIndex name: '@Author::OALDERS/MetaNoIndex' version: '6.024' - class: Dist::Zilla::Plugin::MetaConfig name: '@Author::OALDERS/MetaConfig' version: '6.024' - class: Dist::Zilla::Plugin::MetaResources name: '@Author::OALDERS/MetaResources' version: '6.024' - class: Dist::Zilla::Plugin::License name: '@Author::OALDERS/License' version: '6.024' - class: Dist::Zilla::Plugin::InstallGuide config: Dist::Zilla::Role::ModuleMetadata: Module::Metadata: '1.000037' version: '0.006' name: '@Author::OALDERS/InstallGuide' version: '1.200014' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: requires name: '@Author::OALDERS/Modules for use with tidyall' version: '6.024' - class: Dist::Zilla::Plugin::ExecDir name: '@Author::OALDERS/ExecDir' version: '6.024' - class: Dist::Zilla::Plugin::Test::PodSpelling config: Dist::Zilla::Plugin::Test::PodSpelling: directories: - bin - lib spell_cmd: '' stopwords: - Alders - "Alders'" - Atsushi - Embperl - Kato - checkboxes - html - masonhq - redisplay - scalarref - xml wordlist: Pod::Wordlist name: '@Author::OALDERS/Test::PodSpelling' version: '2.007005' - class: Dist::Zilla::Plugin::MojibakeTests name: '@Author::OALDERS/MojibakeTests' version: '0.8' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@Author::OALDERS/PodSyntaxTests' version: '6.024' - class: Dist::Zilla::Plugin::Test::Portability config: Dist::Zilla::Plugin::Test::Portability: options: '' name: '@Author::OALDERS/Test::Portability' version: '2.001000' - class: Dist::Zilla::Plugin::TestRelease name: '@Author::OALDERS/TestRelease' version: '6.024' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@Author::OALDERS/Test::ReportPrereqs' version: '0.028' - class: Dist::Zilla::Plugin::Test::Version name: '@Author::OALDERS/Test::Version' version: '1.09' - class: Dist::Zilla::Plugin::RunExtraTests config: Dist::Zilla::Role::TestRunner: default_jobs: '1' name: '@Author::OALDERS/RunExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::MinimumPerl name: '@Author::OALDERS/MinimumPerl' version: '1.006' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: 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: '@Default/SingleEncoding' version: '4.018' - class: Pod::Weaver::Section::Name name: '@Default/Name' version: '4.018' - class: Pod::Weaver::Section::Version name: '@Default/Version' version: '4.018' - class: Pod::Weaver::Section::Region name: '@Default/prelude' version: '4.018' - class: Pod::Weaver::Section::Generic name: SYNOPSIS version: '4.018' - class: Pod::Weaver::Section::Generic name: DESCRIPTION version: '4.018' - class: Pod::Weaver::Section::Generic name: OVERVIEW 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: '@Default/Leftovers' version: '4.018' - class: Pod::Weaver::Section::Region name: '@Default/postlude' version: '4.018' - class: Pod::Weaver::Section::Authors name: '@Default/Authors' version: '4.018' - class: Pod::Weaver::Section::Legal name: '@Default/Legal' version: '4.018' name: '@Author::OALDERS/PodWeaver' version: '4.009' - class: Dist::Zilla::Plugin::PruneCruft name: '@Author::OALDERS/PruneCruft' version: '6.024' - class: Dist::Zilla::Plugin::CopyFilesFromBuild name: '@Author::OALDERS/CopyFilesFromBuild' version: '0.170880' - class: Dist::Zilla::Plugin::GithubMeta name: '@Author::OALDERS/GithubMeta' version: '0.58' - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: - Install - LICENSE - META.json - Makefile.PL - README.md - cpanfile exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@Author::OALDERS/Git::GatherDir' version: '2.048' - class: Dist::Zilla::Plugin::CopyFilesFromRelease config: Dist::Zilla::Plugin::CopyFilesFromRelease: filename: - Install match: [] name: '@Author::OALDERS/CopyFilesFromRelease' version: '0.007' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - Install - LICENSE - META.json - Makefile.PL - README.md - cpanfile - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.33.0 repo_root: . name: '@Author::OALDERS/Git::Check' version: '2.048' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: git_version: 2.33.0 include_authors: 0 include_releaser: 1 order_by: name paths: [] name: '@Author::OALDERS/Git::Contributors' version: '0.036' - class: Dist::Zilla::Plugin::ReadmeAnyFromPod config: Dist::Zilla::Role::FileWatcher: version: '0.006' name: '@Author::OALDERS/ReadmeMdInBuild' version: '0.163250' - class: Dist::Zilla::Plugin::StaticInstall config: Dist::Zilla::Plugin::StaticInstall: dry_run: 0 mode: on name: '@Author::OALDERS/StaticInstall' version: '0.012' - class: Dist::Zilla::Plugin::ShareDir name: '@Author::OALDERS/ShareDir' version: '6.024' - class: Dist::Zilla::Plugin::CheckIssues name: '@Author::OALDERS/CheckIssues' version: '0.011' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@Author::OALDERS/ConfirmRelease' version: '6.024' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@Author::OALDERS/UploadToCPAN' version: '6.024' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: recommends name: '@Author::OALDERS/@Git::VersionManager/pluginbundle version' version: '6.024' - class: Dist::Zilla::Plugin::RewriteVersion::Transitional config: Dist::Zilla::Plugin::RewriteVersion: add_tarball_name: 0 finders: - ':ExecFiles' - ':InstallModules' global: 0 skip_version_provider: 0 Dist::Zilla::Plugin::RewriteVersion::Transitional: {} name: '@Author::OALDERS/@Git::VersionManager/RewriteVersion::Transitional' version: '0.009' - class: Dist::Zilla::Plugin::MetaProvides::Update name: '@Author::OALDERS/@Git::VersionManager/MetaProvides::Update' version: '0.007' - class: Dist::Zilla::Plugin::CopyFilesFromRelease config: Dist::Zilla::Plugin::CopyFilesFromRelease: filename: - Changes match: [] name: '@Author::OALDERS/@Git::VersionManager/CopyFilesFromRelease' version: '0.007' - 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 - Install - LICENSE - META.json - Makefile.PL - README.md - cpanfile - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.33.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::OALDERS/@Git::VersionManager/release snapshot' version: '2.048' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: v2.22 tag_format: v%V tag_message: v%V Dist::Zilla::Role::Git::Repo: git_version: 2.33.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::OALDERS/@Git::VersionManager/Git::Tag' version: '2.048' - class: Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional config: Dist::Zilla::Plugin::BumpVersionAfterRelease: finders: - ':ExecFiles' - ':InstallModules' global: 0 munge_makefile_pl: 1 Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional: {} name: '@Author::OALDERS/@Git::VersionManager/BumpVersionAfterRelease::Transitional' version: '0.009' - class: Dist::Zilla::Plugin::NextRelease name: '@Author::OALDERS/@Git::VersionManager/NextRelease' version: '6.024' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: 'increment $VERSION after %v release' signoff: 0 Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Build.PL - Changes - Makefile.PL allow_dirty_match: - (?^:^lib/.*\.pm$) changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.33.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@Author::OALDERS/@Git::VersionManager/post-release commit' version: '2.048' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - origin remotes_must_exist: 1 Dist::Zilla::Role::Git::Repo: git_version: 2.33.0 repo_root: . name: '@Author::OALDERS/Git::Push' version: '2.048' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: TestRequires version: '6.024' - class: Dist::Zilla::Plugin::GitHubREADME::Badge name: GitHubREADME::Badge version: '0.33' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.024' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.024' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' version: '6.024' x_contributors: - 'Chase Venters ' - 'David Steinbrunner ' - 'Jeremy Mates ' - 'Kenichi Ishigaki ' - 'Mark Stosberg ' - 'Mark Stosberg ' - 'Mark Stosberg ' - 'Martin McGrath ' - 'Olaf Alders ' - 'Olaf Alders ' x_generated_by_perl: v5.34.0 x_serialization_backend: 'YAML::Tiny version 1.73' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' x_static_install: 1 HTML-FillInForm-2.22/CONTRIBUTORS000644 000765 000024 00000000715 14123725062 017346 0ustar00olafaldersstaff000000 000000 # HTML-FILLINFORM CONTRIBUTORS # This is the (likely incomplete) list of people who have helped make this distribution what it is, either via code contributions, patches, bug reports, help with troubleshooting, etc. A huge 'thank you' to all of them. * Chase Venters * David Steinbrunner * Jeremy Mates * Kenichi Ishigaki * Mark Stosberg * Mark Stosberg * Mark Stosberg * Martin McGrath * Olaf Alders * Olaf Alders HTML-FillInForm-2.22/META.json000644 000765 000024 00000064415 14123725062 017116 0ustar00olafaldersstaff000000 000000 { "abstract" : "Populates HTML Forms with data.", "author" : [ "TJ Mather, tjmather@maxmind.com" ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.024, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "HTML-FillInForm", "no_index" : { "directory" : [ "examples", "t", "xt" ] }, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0", "perl" : "5.006" } }, "develop" : { "recommends" : { "Dist::Zilla::PluginBundle::Git::VersionManager" : "0.007" }, "requires" : { "Code::TidyAll" : "0.71", "Code::TidyAll::Plugin::SortLines::Naturally" : "0.000003", "Code::TidyAll::Plugin::Test::Vars" : "0.04", "Code::TidyAll::Plugin::UniqueLines" : "0.000003", "Parallel::ForkManager" : "1.19", "Perl::Critic" : "1.132", "Perl::Tidy" : "20180220", "Pod::Wordlist" : "0", "Test::Mojibake" : "0", "Test::More" : "0", "Test::Pod" : "1.41", "Test::Portability::Files" : "0", "Test::Spelling" : "0.12", "Test::Vars" : "0.014", "Test::Version" : "1", "warnings" : "0" } }, "runtime" : { "requires" : { "Carp" : "0", "integer" : "0", "perl" : "5.006", "strict" : "0", "vars" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "CGI" : "0", "ExtUtils::MakeMaker" : "0", "File::Spec" : "0", "HTML::TokeParser" : "0", "Test" : "0", "Test::More" : "0.96", "perl" : "5.006", "warnings" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/oalders/HTML-FillInForm/issues" }, "homepage" : "https://github.com/oalders/HTML-FillInForm", "repository" : { "type" : "git", "url" : "https://github.com/oalders/HTML-FillInForm.git", "web" : "https://github.com/oalders/HTML-FillInForm" } }, "version" : "2.22", "x_Dist_Zilla" : { "perl" : { "version" : "5.034000" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 0, "check_all_prereqs" : 0, "modules" : [ "Dist::Zilla::PluginBundle::Author::OALDERS" ], "phase" : "build", "run_under_travis" : 0, "skip" : [] } }, "name" : "@Author::OALDERS/stale modules, build", "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 1, "modules" : [], "phase" : "release", "run_under_travis" : 0, "skip" : [] } }, "name" : "@Author::OALDERS/stale modules, release", "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::OALDERS::TidyAll", "name" : "@Author::OALDERS/OALDERS::TidyAll", "version" : "0.000029" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@Author::OALDERS/AutoPrereqs", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::CheckChangesHasContent", "name" : "@Author::OALDERS/CheckChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : "1" } }, "name" : "@Author::OALDERS/MakeMaker", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::CPANFile", "name" : "@Author::OALDERS/CPANFile", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::ContributorsFile", "name" : "@Author::OALDERS/ContributorsFile", "version" : "0.3.0" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@Author::OALDERS/MetaJSON", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@Author::OALDERS/MetaYAML", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@Author::OALDERS/Manifest", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::MetaNoIndex", "name" : "@Author::OALDERS/MetaNoIndex", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@Author::OALDERS/MetaConfig", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "@Author::OALDERS/MetaResources", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@Author::OALDERS/License", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::InstallGuide", "config" : { "Dist::Zilla::Role::ModuleMetadata" : { "Module::Metadata" : "1.000037", "version" : "0.006" } }, "name" : "@Author::OALDERS/InstallGuide", "version" : "1.200014" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "requires" } }, "name" : "@Author::OALDERS/Modules for use with tidyall", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@Author::OALDERS/ExecDir", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::Test::PodSpelling", "config" : { "Dist::Zilla::Plugin::Test::PodSpelling" : { "directories" : [ "bin", "lib" ], "spell_cmd" : "", "stopwords" : [ "Alders", "Alders'", "Atsushi", "Embperl", "Kato", "checkboxes", "html", "masonhq", "redisplay", "scalarref", "xml" ], "wordlist" : "Pod::Wordlist" } }, "name" : "@Author::OALDERS/Test::PodSpelling", "version" : "2.007005" }, { "class" : "Dist::Zilla::Plugin::MojibakeTests", "name" : "@Author::OALDERS/MojibakeTests", "version" : "0.8" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@Author::OALDERS/PodSyntaxTests", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::Test::Portability", "config" : { "Dist::Zilla::Plugin::Test::Portability" : { "options" : "" } }, "name" : "@Author::OALDERS/Test::Portability", "version" : "2.001000" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@Author::OALDERS/TestRelease", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@Author::OALDERS/Test::ReportPrereqs", "version" : "0.028" }, { "class" : "Dist::Zilla::Plugin::Test::Version", "name" : "@Author::OALDERS/Test::Version", "version" : "1.09" }, { "class" : "Dist::Zilla::Plugin::RunExtraTests", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : "1" } }, "name" : "@Author::OALDERS/RunExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::MinimumPerl", "name" : "@Author::OALDERS/MinimumPerl", "version" : "1.006" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "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" : "@Default/SingleEncoding", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@Default/Name", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Version", "name" : "@Default/Version", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Default/prelude", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "SYNOPSIS", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "DESCRIPTION", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "OVERVIEW", "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" : "@Default/Leftovers", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@Default/postlude", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "@Default/Authors", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "@Default/Legal", "version" : "4.018" } ] } }, "name" : "@Author::OALDERS/PodWeaver", "version" : "4.009" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@Author::OALDERS/PruneCruft", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromBuild", "name" : "@Author::OALDERS/CopyFilesFromBuild", "version" : "0.170880" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@Author::OALDERS/GithubMeta", "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [ "Install", "LICENSE", "META.json", "Makefile.PL", "README.md", "cpanfile" ], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@Author::OALDERS/Git::GatherDir", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease", "config" : { "Dist::Zilla::Plugin::CopyFilesFromRelease" : { "filename" : [ "Install" ], "match" : [] } }, "name" : "@Author::OALDERS/CopyFilesFromRelease", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "Install", "LICENSE", "META.json", "Makefile.PL", "README.md", "cpanfile", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.33.0", "repo_root" : "." } }, "name" : "@Author::OALDERS/Git::Check", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "git_version" : "2.33.0", "include_authors" : 0, "include_releaser" : 1, "order_by" : "name", "paths" : [] } }, "name" : "@Author::OALDERS/Git::Contributors", "version" : "0.036" }, { "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod", "config" : { "Dist::Zilla::Role::FileWatcher" : { "version" : "0.006" } }, "name" : "@Author::OALDERS/ReadmeMdInBuild", "version" : "0.163250" }, { "class" : "Dist::Zilla::Plugin::StaticInstall", "config" : { "Dist::Zilla::Plugin::StaticInstall" : { "dry_run" : 0, "mode" : "on" } }, "name" : "@Author::OALDERS/StaticInstall", "version" : "0.012" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@Author::OALDERS/ShareDir", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::CheckIssues", "name" : "@Author::OALDERS/CheckIssues", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@Author::OALDERS/ConfirmRelease", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@Author::OALDERS/UploadToCPAN", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "recommends" } }, "name" : "@Author::OALDERS/@Git::VersionManager/pluginbundle version", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::RewriteVersion::Transitional", "config" : { "Dist::Zilla::Plugin::RewriteVersion" : { "add_tarball_name" : 0, "finders" : [ ":ExecFiles", ":InstallModules" ], "global" : 0, "skip_version_provider" : 0 }, "Dist::Zilla::Plugin::RewriteVersion::Transitional" : {} }, "name" : "@Author::OALDERS/@Git::VersionManager/RewriteVersion::Transitional", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Update", "name" : "@Author::OALDERS/@Git::VersionManager/MetaProvides::Update", "version" : "0.007" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease", "config" : { "Dist::Zilla::Plugin::CopyFilesFromRelease" : { "filename" : [ "Changes" ], "match" : [] } }, "name" : "@Author::OALDERS/@Git::VersionManager/CopyFilesFromRelease", "version" : "0.007" }, { "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", "Install", "LICENSE", "META.json", "Makefile.PL", "README.md", "cpanfile", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.33.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::OALDERS/@Git::VersionManager/release snapshot", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "v2.22", "tag_format" : "v%V", "tag_message" : "v%V" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.33.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::OALDERS/@Git::VersionManager/Git::Tag", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional", "config" : { "Dist::Zilla::Plugin::BumpVersionAfterRelease" : { "finders" : [ ":ExecFiles", ":InstallModules" ], "global" : 0, "munge_makefile_pl" : 1 }, "Dist::Zilla::Plugin::BumpVersionAfterRelease::Transitional" : {} }, "name" : "@Author::OALDERS/@Git::VersionManager/BumpVersionAfterRelease::Transitional", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@Author::OALDERS/@Git::VersionManager/NextRelease", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "increment $VERSION after %v release", "signoff" : 0 }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Build.PL", "Changes", "Makefile.PL" ], "allow_dirty_match" : [ "(?^:^lib/.*\\.pm$)" ], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.33.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@Author::OALDERS/@Git::VersionManager/post-release commit", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "origin" ], "remotes_must_exist" : 1 }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.33.0", "repo_root" : "." } }, "name" : "@Author::OALDERS/Git::Push", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "TestRequires", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::GitHubREADME::Badge", "name" : "GitHubREADME::Badge", "version" : "0.33" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.024" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.024" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.024" } }, "x_contributors" : [ "Chase Venters ", "David Steinbrunner ", "Jeremy Mates ", "Kenichi Ishigaki ", "Mark Stosberg ", "Mark Stosberg ", "Mark Stosberg ", "Martin McGrath ", "Olaf Alders ", "Olaf Alders " ], "x_generated_by_perl" : "v5.34.0", "x_serialization_backend" : "Cpanel::JSON::XS version 4.26", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later", "x_static_install" : 1 } HTML-FillInForm-2.22/README.md000644 000765 000024 00000017576 14123725062 016762 0ustar00olafaldersstaff000000 000000 # NAME HTML::FillInForm - Populates HTML Forms with data. # VERSION version 2.22 # SYNOPSIS Fill HTML form with data. $output = HTML::FillInForm->fill( \$html, $q ); $output = HTML::FillInForm->fill( \@html, [$q1,$q2] ); $output = HTML::FillInForm->fill( \*HTML, \%data ); $output = HTML::FillInForm->fill( 't.html', [\%data1,%data2] ); The HTML can be provided as a scalarref, arrayref, filehandle or file. The data can come from one or more hashrefs, or objects which support a param() method, like CGI.pm, [Apache::Request](https://metacpan.org/pod/Apache%3A%3ARequest), etc. # DESCRIPTION This module fills in an HTML form with data from a Perl data structure, allowing you to keep the HTML and Perl separate. Here are two common use cases: 1\. A user submits an HTML form without filling out a required field. You want to redisplay the form with all the previous data in it, to make it easy for the user to see and correct the error. 2\. You have just retrieved a record from a database and need to display it in an HTML form. # fill The basic syntax is seen above the Synopsis. There are a few additional options. ## Options ### target => 'form1' Suppose you have multiple forms in a html file and only want to fill in one. $output = HTML::FillInForm->fill(\$html, $q, target => 'form1'); This will fill in only the form inside
...
### fill\_password => 0 Passwords are filled in by default. To disable: fill_password => 0 ### ignore\_fields => \[\] To disable the filling of some fields: ignore_fields => ['prev','next'] ### disable\_fields => \[\] To disable fields from being edited: disable_fields => [ 'uid', 'gid' ] ### invalid\_fields => \[\] To mark fields as being invalid (CSS class set to "invalid" or whatever you set invalid\_class to): invalid_fields => [ 'uid', 'gid' ] ### invalid\_class => "invalid" The CSS class which will be used to mark fields invalid. Defaults to "invalid". ### clear\_absent\_checkboxes => 0 Absent fields are not cleared or in any way changed. This is not what you want when you deal with checkboxes which are not sent by browser at all when cleared by user. To remove "checked" attribute from checkboxes and radio buttons and attribute "selected" from options of select lists for which there's no data: clear_absent_checkboxes => 1 ## File Upload fields File upload fields cannot be supported directly. Workarounds include asking the user to re-attach any file uploads or fancy server-side storage and referencing. You are on your own. ## Clearing Fields Fields are cleared if you set their value to an empty string or empty arrayref but not undef: # this will leave the form element foo untouched HTML::FillInForm->fill(\$html, { foo => undef }); # this will set clear the form element foo HTML::FillInForm->fill(\$html, { foo => "" }); It has been suggested to add a option to change the behavior so that undef values will clear the form elements. Patches welcome. You can also use `clear_absent_checkboxes` option to clear checkboxes, radio buttons and selects without corresponding keys in the data: # this will set clear the form element foo (and all others except # bar) HTML::FillInForm->fill(\$html, { bar => 123 }, clear_absent_checkboxes => 1); # Old syntax You probably need to read no further. The remaining docs concern the 1.x era syntax, which is still supported. ## new Call `new()` to create a new FillInForm object: $fif = HTML::FillInForm->new; $fif->fill(...); In theory, there is a slight performance benefit to calling `new()` before `fill()` if you make multiple calls to `fill()` before you destroy the object. Benchmark before optimizing. ## fill ( old syntax ) Instead of having your HTML and data types auto-detected, you can declare them explicitly in your call to `fill()`: HTML source options: arrayref => @html scalarref => $html file => \*HTML file => 't.html' Fill Data options: fobject => $data_obj # with param() method fdat => \%data Additional methods are also available: fill_file(\*HTML,...); fill_file('t.html',...); fill_arrayref(\@html,...); fill_scalarref(\$html,...); # USING AN ALTERNATE PARSER It's possible to use an alternate parser to [HTML::Parser](https://metacpan.org/pod/HTML%3A%3AParser) if the alternate provides a sufficiently compatible interface. For example, when a Pure Perl implementation of HTML::Parser appears, it could be used for portability. The syntax is simply to provide a `parser_class` to new(); HTML::FillInForm->new( parser_class => 'MyAlternate::Parser' ); # CALLING FROM OTHER MODULES ## Apache::PageKit To use HTML::FillInForm in [Apache::PageKit](https://metacpan.org/pod/Apache%3A%3APageKit) is easy. It is automatically called for any page that includes a <form> tag. It can be turned on or off by using the `fill_in_form` configuration option. ## Apache::ASP v2.09 and above HTML::FillInForm is now integrated with Apache::ASP. To activate, use PerlSetVar FormFill 1 $Response->{FormFill} = 1 ## HTML::Mason Using HTML::FillInForm from HTML::Mason is covered in the FAQ on the masonhq.com website at [http://www.masonhq.com/?FAQ:HTTPAndHTML#h-how\_can\_i\_populate\_form\_values\_automatically\_](http://www.masonhq.com/?FAQ:HTTPAndHTML#h-how_can_i_populate_form_values_automatically_) # SECURITY Note that you might want to think about caching issues if you have password fields on your page. There is a discussion of this issue at http://www.perlmonks.org/index.pl?node\_id=70482 In summary, some browsers will cache the output of CGI scripts, and you can control this by setting the Expires header. For example, use `-expires` in [CGI.pm](https://metacpan.org/pod/CGI.pm) or set `browser_cache` to _no_ in Config.xml file of [Apache::PageKit](https://metacpan.org/pod/Apache%3A%3APageKit). # TRANSLATION Kato Atsushi has translated these docs into Japanese, available from http://perldoc.jp # BUGS Please submit any bug reports to tjmather@maxmind.com. # NOTES Requires Perl 5.005 and [HTML::Parser](https://metacpan.org/pod/HTML%3A%3AParser) version 3.26. I wrote this module because I wanted to be able to insert CGI data into HTML forms, but without combining the HTML and Perl code. CGI.pm and Embperl allow you so insert CGI data into forms, but require that you mix HTML with Perl. There is a nice review of the module available here: [http://www.perlmonks.org/index.pl?node\_id=274534](http://www.perlmonks.org/index.pl?node_id=274534) # SEE ALSO [HTML::Parser](https://metacpan.org/pod/HTML%3A%3AParser), [Data::FormValidator](https://metacpan.org/pod/Data%3A%3AFormValidato), [HTML::Template](https://metacpan.org/pod/HTML%3A%3ATemplate), [Apache::PageKit](https://metacpan.org/pod/Apache%3A%3APageKit) # CREDITS Fixes, Bug Reports, Docs have been generously provided by: Alex Kapranoff Miika Pekkarinen Michael Fisher Sam Tregar Tatsuhiko Miyagawa Joseph Yanni Boris Zentner Philip Mak Dave Rolsky Jost Krieger Patrick Michael Kane Gabriel Burka Ade Olonoh Bill Moseley Tom Lancaster James Tolley Martin H Sluka Dan Kubb Mark Stosberg Alexander Hartmaier Jonathan Swartz Paul Miller Trevor Schellhorn Anthony Ettinger Jim Miner Simon P. Ditner Paul Lindner Michael Peters Maurice Aubrey Trevor Schellhorn Andrew Creer Thanks! # AUTHOR TJ Mather, tjmather@maxmind.com # COPYRIGHT AND LICENSE This software is copyright (c) 2000 by TJ Mather, tjmather@maxmind.com. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. HTML-FillInForm-2.22/tidyall.ini000644 000765 000024 00000001241 14123725062 017624 0ustar00olafaldersstaff000000 000000 [PerlCritic] select = **/*.{pl,pm,t,psgi} ignore = .build/**/* ignore = HTML-FillInForm-*/**/* ignore = blib/**/* ignore = t/00-* ignore = t/author-* ignore = t/release-* ignore = t/zzz-* ignore = xt/**/* argv = --profile=$ROOT/perlcriticrc [PerlTidy] select = **/*.{pl,pm,t,psgi} ignore = .build/**/* ignore = HTML-FillInForm-*/**/* ignore = blib/**/* ignore = t/00-* ignore = t/author-* ignore = t/release-* ignore = t/zzz-* ignore = xt/**/* argv = --profile=$ROOT/perltidyrc [Test::Vars] select = **/*.pm ignore = .build/**/* ignore = HTML-FillInForm-*/**/* ignore = blib/**/* ignore = t/00-* ignore = t/author-* ignore = t/release-* ignore = t/zzz-* ignore = xt/**/* HTML-FillInForm-2.22/lib/000755 000765 000024 00000000000 14123725062 016231 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/Makefile.PL000644 000765 000024 00000002575 14123725062 017446 0ustar00olafaldersstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.024. use strict; use warnings; use 5.006; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "Populates HTML Forms with data.", "AUTHOR" => "TJ Mather, tjmather\@maxmind.com", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "HTML-FillInForm", "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.006", "NAME" => "HTML::FillInForm", "PREREQ_PM" => { "Carp" => 0, "integer" => 0, "strict" => 0, "vars" => 0 }, "TEST_REQUIRES" => { "CGI" => 0, "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "HTML::TokeParser" => 0, "Test" => 0, "Test::More" => "0.96", "warnings" => 0 }, "VERSION" => "2.22", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "CGI" => 0, "Carp" => 0, "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "HTML::TokeParser" => 0, "Test" => 0, "Test::More" => "0.96", "integer" => 0, "strict" => 0, "vars" => 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); HTML-FillInForm-2.22/dist.ini000644 000765 000024 00000001264 14123725062 017132 0ustar00olafaldersstaff000000 000000 name = HTML-FillInForm author = TJ Mather, tjmather@maxmind.com copyright_holder = TJ Mather, tjmather@maxmind.com copyright_year = 2000 main_module = lib/HTML/FillInForm.pm license = Perl_5 [@Author::OALDERS] -remove = PodCoverageTests -remove = Test::CPAN::Changes -remove = Test::EOL -remove = Test::Perl::Critic -remove = Test::Pod::Coverage::Configurable -remove = Test::Synopsis -remove = Test::TidyAll StaticInstall.mode = on StaticInstall.dry_run = 0 [Prereqs / TestRequires] Test::More = 0.96 [GitHubREADME::Badge] badges = github_actions/dzil-build-and-test badges = coveralls badges = codecov badges = cpants badges = github_tag badges = license place = top phase = build HTML-FillInForm-2.22/lib/HTML/000755 000765 000024 00000000000 14123725062 016775 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/lib/HTML/FillInForm.pm000644 000765 000024 00000056530 14123725062 021345 0ustar00olafaldersstaff000000 000000 package HTML::FillInForm; our $VERSION = '2.22'; use integer; # no floating point math so far! use strict; # and no funny business, either. use Carp; # generate better errors with more context # required for UNIVERSAL->can require 5.005; use vars qw($VERSION @ISA); $VERSION = '2.21'; sub new { my $class = shift; my $self = bless {}, $class; # required for attr_encoded my %arg = @_ || (); my $parser_class = $arg{parser_class} || 'HTML::Parser'; eval "require $parser_class;" || die "require $parser_class failed: $@"; @ISA = ($parser_class); $self->init(@_); unless ($self->can('attr_encoded')) { die "attr_encoded method is missing. If are using HTML::Parser, you need at least version 3.26"; } # tell HTML::Parser not to decode attributes $self->attr_encoded(1); return $self; } # a few shortcuts to fill() sub fill_file { my $self = shift; return $self->fill('file' ,@_); } sub fill_arrayref { my $self = shift; return $self->fill('arrayref' ,@_); } sub fill_scalarref { my $self = shift; return $self->fill('scalarref',@_); } # track the keys we support. Useful for file-name detection. sub _known_keys { return { scalarref => 1, arrayref => 1, fdat => 1, fobject => 1, file => 1, target => 1, fill_password => 1, ignore_fields => 1, disable_fields => 1, invalid_fields => 1, invalid_class => 1, } } sub fill { my $self = shift; # If we are called as a class method, go ahead and call new(). $self = $self->new if (not ref $self); my %option; # If the first arg is a scalarref, translate that to scalarref => $first_arg if (ref $_[0] eq 'SCALAR') { $option{scalarref} = shift; } elsif (ref $_[0] eq 'ARRAY') { $option{arrayref} = shift; } elsif (ref $_[0] eq 'GLOB') { $option{file} = shift; } elsif (ref $_[0]) { croak "data source is not a reference type we understand"; } # Last chance, if the first arg isn't one of the known keys, we # assume it is a file name. elsif (not _known_keys()->{$_[0]} ) { $option{file} = shift; } else { # Should be a known key. Nothing to do. } # Now, check to see if the next arg is also a reference. my $data; if (ref $_[0]) { $data = shift; $data = [$data] unless ref $data eq 'ARRAY'; for my $source (@$data) { if (ref $source eq 'HASH') { push @{ $option{fdat} }, $source; } elsif (ref $source) { if ($source->can('param')) { push @{ $option{fobject} }, $source; } else { croak "data source $source does not supply a param method"; } } elsif (defined $source) { croak "data source $source is not a hash or object reference"; } } } # load in the rest of the options %option = (%option, @_); # As suggested in the docs, merge multiple fdats into one. if (ref $option{fdat} eq 'ARRAY') { my %merged; for my $hash (@{ $option{fdat} }) { for my $key (keys %$hash) { $merged{$key} = $hash->{$key}; } } $option{'fdat'} = \%merged; } my %ignore_fields; %ignore_fields = map { $_ => 1 } ( ref $option{'ignore_fields'} eq 'ARRAY' ) ? @{ $option{ignore_fields} } : $option{ignore_fields} if exists( $option{ignore_fields} ); $self->{ignore_fields} = \%ignore_fields; my %disable_fields; %disable_fields = map { $_ => 1 } ( ref $option{'disable_fields'} eq 'ARRAY' ) ? @{ $option{disable_fields} } : $option{disable_fields} if exists( $option{disable_fields} ); $self->{disable_fields} = \%disable_fields; my %invalid_fields; %invalid_fields = map { $_ => 1 } ( ref $option{'invalid_fields'} eq 'ARRAY' ) ? @{ $option{invalid_fields} } : $option{invalid_fields} if exists( $option{invalid_fields} ); $self->{invalid_fields} = \%invalid_fields; if (my $fdat = $option{fdat}){ # Copy the structure to prevent side-effects. my %copy; keys %$fdat; # reset fdat if each or Dumper was called on fdat while(my($key, $val) = each %$fdat) { next if exists $ignore_fields{$key}; $copy{ $key } = ref $val eq 'ARRAY' ? [ @$val ] : $val; } $self->{fdat} = \%copy; } # We want the reference to these objects to go out of scope at the # end of the method. local $self->{objects} = []; if(my $objects = $option{fobject}){ unless(ref($objects) eq 'ARRAY'){ $objects = [ $objects ]; } for my $object (@$objects){ # make sure objects in 'param_object' parameter support param() defined($object->can('param')) or croak("HTML::FillInForm->fill called with fobject option, containing object of type " . ref($object) . " which lacks a param() method!"); } $self->{objects} = $objects; } if (my $target = $option{target}){ $self->{'target'} = $target; } if (my $invalid_class = $option{invalid_class}){ $self->{'invalid_class'} = $invalid_class; } else { $self->{'invalid_class'} = 'invalid'; } if (defined($option{fill_password})){ $self->{fill_password} = $option{fill_password}; } else { $self->{fill_password} = 1; } $self->{clear_absent_checkboxes} = $option{clear_absent_checkboxes}; # make sure method has data to fill in HTML form with! unless(exists $self->{fdat} || $self->{objects}){ croak("HTML::FillInForm->fillInForm() called without 'fobject' or 'fdat' parameter set"); } local $self->{object_param_cache}; if(my $file = $option{file}){ $self->parse_file($file); } elsif (my $scalarref = $option{scalarref}){ $self->parse($$scalarref); } elsif (my $arrayref = $option{arrayref}){ for (@$arrayref){ $self->parse($_); } } $self->eof; return delete $self->{output}; } # handles opening HTML tags such as sub start { my ($self, $tagname, $attr, $attrseq, $origtext) = @_; # set the current form if ($tagname eq 'form') { $self->{object_param_cache} = {}; if (exists $attr->{'name'} || exists $attr->{'id'}) { $self->{'current_form'} = $attr->{'name'} || $attr->{'id'}; } else { # in case of previous one without delete $self->{'current_form'}; } } # This form is not my target. if (exists $self->{'target'} && (! exists $self->{'current_form'} || $self->{'current_form'} ne $self->{'target'})) { $self->{'output'} .= $origtext; return; } # HTML::Parser converts tagname to lowercase, so we don't need /i if ($self->{option_no_value}) { $self->{output} .= '>'; delete $self->{option_no_value}; } # Check if we need to disable this field $attr->{disabled} = 'disabled' if exists $attr->{'name'} and exists $self->{disable_fields}{ $attr->{'name'} } and $self->{disable_fields}{ $attr->{'name'} } and not ( exists $attr->{disabled} and $attr->{disabled} ); # Check if we need to invalidate this field my $invalidating = 0; if (exists $attr->{name} and exists $self->{invalid_fields}{ $attr->{name} } and $self->{invalid_fields}{ $attr->{name} }) { $invalidating = 1; if (exists $attr->{class} and length $attr->{class}) { # don't add the class if it's already there unless ($attr->{class} =~ /\b\Q$self->{invalid_class}\E\b/) { $attr->{class} .= " $self->{invalid_class}"; } } else { $attr->{class} = $self->{invalid_class}; } } if ($tagname eq 'input'){ my $value = exists $attr->{'name'} ? $self->_get_param($attr->{'name'}) : undef; # force hidden fields to have a value $value = '' if exists($attr->{'type'}) && $attr->{'type'} eq 'hidden' && ! exists $attr->{'value'} && ! defined $value; # browsers do not pass unchecked checkboxes at all, so hack around $value = '' if $self->{clear_absent_checkboxes} && !defined $value && exists($attr->{'type'}) && ($attr->{'type'} eq 'checkbox' || $attr->{'type'} eq 'radio'); if (defined($value)){ # check for input type, noting that default type is text if (!exists $attr->{'type'} || $attr->{'type'} =~ /^(text|textfield|hidden|tel|search|url|email|datetime|date|month|week|time|datetime\-local|number|range|color|)$/i){ if ( ref($value) eq 'ARRAY' ) { $value = shift @$value; $value = '' unless defined $value; } $attr->{'value'} = __escapeHTML($value); } elsif (lc $attr->{'type'} eq 'password' && $self->{fill_password}) { if ( ref($value) eq 'ARRAY' ) { $value = shift @$value; $value = '' unless defined $value; } $attr->{'value'} = __escapeHTML($value); } elsif (lc $attr->{'type'} eq 'radio'){ if ( ref($value) eq 'ARRAY' ) { $value = $value->[0]; $value = '' unless defined $value; } # value for radio boxes default to 'on', works with netscape $attr->{'value'} = 'on' unless exists $attr->{'value'}; if ($attr->{'value'} eq __escapeHTML($value)){ $attr->{'checked'} = 'checked'; } else { delete $attr->{'checked'}; } } elsif (lc $attr->{'type'} eq 'checkbox'){ # value for checkboxes default to 'on', works with netscape $attr->{'value'} = 'on' unless exists $attr->{'value'}; delete $attr->{'checked'}; # Everything is unchecked to start $value = [ $value ] unless ref($value) eq 'ARRAY'; foreach my $v ( @$value ) { if ( $attr->{'value'} eq __escapeHTML($v) ) { $attr->{'checked'} = 'checked'; } } # } else { # warn(qq(Input field of unknown type "$attr->{type}": $origtext)); } } $self->{output} .= "<$tagname"; while (my ($key, $value) = each %$attr) { next if $key eq '/'; $self->{output} .= sprintf qq( %s="%s"), $key, $value; } # extra space put here to work around Opera 6.01/6.02 bug $self->{output} .= ' /' if $attr->{'/'}; $self->{output} .= ">"; } elsif ($tagname eq 'option'){ my $value = defined($self->{selectName}) ? $self->_get_param($self->{selectName}) : undef; # browsers do not pass selects with no selected options at all, # so hack around $value = '' if $self->{clear_absent_checkboxes} && !defined $value; $value = [ $value ] unless ( ref($value) eq 'ARRAY' ); if ( defined $value->[0] ){ delete $attr->{selected} if exists $attr->{selected}; if(defined($attr->{'value'})){ # option tag has value attr - if ($self->{selectMultiple}){ # check if the option tag belongs to a multiple option select foreach my $v ( grep { defined } @$value ) { if ( $attr->{'value'} eq __escapeHTML($v) ){ $attr->{selected} = 'selected'; } } } else { # if not every value of a fdat ARRAY belongs to a different select tag if (not $self->{selectSelected}){ if ( $attr->{'value'} eq __escapeHTML($value->[0])){ shift @$value if ref($value) eq 'ARRAY'; $attr->{selected} = 'selected'; $self->{selectSelected} = 1; # remember that an option tag is selected for this select tag } } } } else { # option tag has no value attr - # save for processing under text handler $self->{option_no_value} = __escapeHTML($value); } } $self->{output} .= "<$tagname"; while (my ($key, $value) = each %$attr) { $self->{output} .= sprintf qq( %s="%s"), $key, $value; } unless ($self->{option_no_value}){ # we can close option tag here $self->{output} .= ">"; } } elsif ($tagname eq 'textarea'){ # need to re-output the -> # we need to set outputText to 'no' so that 'foobar' won't be printed $self->{outputText} = 'no'; $self->{output} .= __escapeHTML($value); } } elsif ($tagname eq 'select'){ $self->{selectName} = $attr->{'name'}; if (defined $attr->{'multiple'}){ $self->{selectMultiple} = 1; # helper var to remember if the select tag has the multiple attr set or not } else { $self->{selectMultiple} = 0; $self->{selectSelected} = 0; # helper var to remember if an option was already selected in the current select tag } # need to re-output the sub end { my ($self, $tagname, $origtext) = @_; if ($self->{option_no_value}) { $self->{output} .= '>'; delete $self->{option_no_value}; } if($tagname eq 'select'){ delete $self->{selectName}; } elsif ($tagname eq 'textarea'){ delete $self->{outputText}; } elsif ($tagname eq 'form') { delete $self->{'current_form'}; } $self->{output} .= $origtext; } sub __escapeHTML { my ($toencode) = @_; return undef unless defined($toencode); $toencode =~ s/&/&/g; $toencode =~ s/\"/"/g; $toencode =~ s/>/>/g; $toencode =~ s/{output} .= ''; } else { $self->{output} .= ''; } } sub process { my ( $self, $token0, $text ) = @_; $self->{output} .= $text; } sub declaration { my ( $self, $text ) = @_; $self->{output} .= ''; } 1; =pod =encoding UTF-8 =head1 NAME HTML::FillInForm - Populates HTML Forms with data. =head1 VERSION version 2.22 =head1 SYNOPSIS Fill HTML form with data. $output = HTML::FillInForm->fill( \$html, $q ); $output = HTML::FillInForm->fill( \@html, [$q1,$q2] ); $output = HTML::FillInForm->fill( \*HTML, \%data ); $output = HTML::FillInForm->fill( 't.html', [\%data1,%data2] ); The HTML can be provided as a scalarref, arrayref, filehandle or file. The data can come from one or more hashrefs, or objects which support a param() method, like CGI.pm, L, etc. =head1 DESCRIPTION This module fills in an HTML form with data from a Perl data structure, allowing you to keep the HTML and Perl separate. Here are two common use cases: 1. A user submits an HTML form without filling out a required field. You want to redisplay the form with all the previous data in it, to make it easy for the user to see and correct the error. 2. You have just retrieved a record from a database and need to display it in an HTML form. =head1 fill The basic syntax is seen above the Synopsis. There are a few additional options. =head2 Options =head3 target => 'form1' Suppose you have multiple forms in a html file and only want to fill in one. $output = HTML::FillInForm->fill(\$html, $q, target => 'form1'); This will fill in only the form inside
...
=head3 fill_password => 0 Passwords are filled in by default. To disable: fill_password => 0 =head3 ignore_fields => [] To disable the filling of some fields: ignore_fields => ['prev','next'] =head3 disable_fields => [] To disable fields from being edited: disable_fields => [ 'uid', 'gid' ] =head3 invalid_fields => [] To mark fields as being invalid (CSS class set to "invalid" or whatever you set invalid_class to): invalid_fields => [ 'uid', 'gid' ] =head3 invalid_class => "invalid" The CSS class which will be used to mark fields invalid. Defaults to "invalid". =head3 clear_absent_checkboxes => 0 Absent fields are not cleared or in any way changed. This is not what you want when you deal with checkboxes which are not sent by browser at all when cleared by user. To remove "checked" attribute from checkboxes and radio buttons and attribute "selected" from options of select lists for which there's no data: clear_absent_checkboxes => 1 =head2 File Upload fields File upload fields cannot be supported directly. Workarounds include asking the user to re-attach any file uploads or fancy server-side storage and referencing. You are on your own. =head2 Clearing Fields Fields are cleared if you set their value to an empty string or empty arrayref but not undef: # this will leave the form element foo untouched HTML::FillInForm->fill(\$html, { foo => undef }); # this will set clear the form element foo HTML::FillInForm->fill(\$html, { foo => "" }); It has been suggested to add a option to change the behavior so that undef values will clear the form elements. Patches welcome. You can also use C option to clear checkboxes, radio buttons and selects without corresponding keys in the data: # this will set clear the form element foo (and all others except # bar) HTML::FillInForm->fill(\$html, { bar => 123 }, clear_absent_checkboxes => 1); =head1 Old syntax You probably need to read no further. The remaining docs concern the 1.x era syntax, which is still supported. =head2 new Call C to create a new FillInForm object: $fif = HTML::FillInForm->new; $fif->fill(...); In theory, there is a slight performance benefit to calling C before C if you make multiple calls to C before you destroy the object. Benchmark before optimizing. =head2 fill ( old syntax ) Instead of having your HTML and data types auto-detected, you can declare them explicitly in your call to C: HTML source options: arrayref => @html scalarref => $html file => \*HTML file => 't.html' Fill Data options: fobject => $data_obj # with param() method fdat => \%data Additional methods are also available: fill_file(\*HTML,...); fill_file('t.html',...); fill_arrayref(\@html,...); fill_scalarref(\$html,...); =head1 USING AN ALTERNATE PARSER It's possible to use an alternate parser to L if the alternate provides a sufficiently compatible interface. For example, when a Pure Perl implementation of HTML::Parser appears, it could be used for portability. The syntax is simply to provide a C to new(); HTML::FillInForm->new( parser_class => 'MyAlternate::Parser' ); =head1 CALLING FROM OTHER MODULES =head2 Apache::PageKit To use HTML::FillInForm in L is easy. It is automatically called for any page that includes a
tag. It can be turned on or off by using the C configuration option. =head2 Apache::ASP v2.09 and above HTML::FillInForm is now integrated with Apache::ASP. To activate, use PerlSetVar FormFill 1 $Response->{FormFill} = 1 =head2 HTML::Mason Using HTML::FillInForm from HTML::Mason is covered in the FAQ on the masonhq.com website at L =head1 SECURITY Note that you might want to think about caching issues if you have password fields on your page. There is a discussion of this issue at http://www.perlmonks.org/index.pl?node_id=70482 In summary, some browsers will cache the output of CGI scripts, and you can control this by setting the Expires header. For example, use C<-expires> in L or set C to I in Config.xml file of L. =head1 TRANSLATION Kato Atsushi has translated these docs into Japanese, available from http://perldoc.jp =head1 BUGS Please submit any bug reports to tjmather@maxmind.com. =head1 NOTES Requires Perl 5.005 and L version 3.26. I wrote this module because I wanted to be able to insert CGI data into HTML forms, but without combining the HTML and Perl code. CGI.pm and Embperl allow you so insert CGI data into forms, but require that you mix HTML with Perl. There is a nice review of the module available here: L =head1 SEE ALSO L, L, L, L =head1 CREDITS Fixes, Bug Reports, Docs have been generously provided by: Alex Kapranoff Miika Pekkarinen Michael Fisher Sam Tregar Tatsuhiko Miyagawa Joseph Yanni Boris Zentner Philip Mak Dave Rolsky Jost Krieger Patrick Michael Kane Gabriel Burka Ade Olonoh Bill Moseley Tom Lancaster James Tolley Martin H Sluka Dan Kubb Mark Stosberg Alexander Hartmaier Jonathan Swartz Paul Miller Trevor Schellhorn Anthony Ettinger Jim Miner Simon P. Ditner Paul Lindner Michael Peters Maurice Aubrey Trevor Schellhorn Andrew Creer Thanks! =head1 AUTHOR TJ Mather, tjmather@maxmind.com =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2000 by TJ Mather, tjmather@maxmind.com. 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 __END__ # ABSTRACT: Populates HTML Forms with data. HTML-FillInForm-2.22/xt/author/000755 000765 000024 00000000000 14123725062 017420 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/xt/author/mojibake.t000644 000765 000024 00000000151 14123725062 021363 0ustar00olafaldersstaff000000 000000 #!perl use strict; use warnings qw(all); use Test::More; use Test::Mojibake; all_files_encoding_ok(); HTML-FillInForm-2.22/xt/author/test-version.t000644 000765 000024 00000000637 14123725062 022255 0ustar00olafaldersstaff000000 000000 use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::Version 1.09 use Test::Version; my @imports = qw( version_all_ok ); my $params = { is_strict => 0, has_version => 1, multiple => 0, }; push @imports, $params if version->parse( $Test::Version::VERSION ) >= version->parse('1.002'); Test::Version->import(@imports); version_all_ok; done_testing; HTML-FillInForm-2.22/xt/author/pod-syntax.t000644 000765 000024 00000000252 14123725062 021712 0ustar00olafaldersstaff000000 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(); HTML-FillInForm-2.22/xt/author/portability.t000644 000765 000024 00000000267 14123725062 022154 0ustar00olafaldersstaff000000 000000 use strict; use warnings; use Test::More; eval 'use Test::Portability::Files'; plan skip_all => 'Test::Portability::Files required for testing portability' if $@; run_tests(); HTML-FillInForm-2.22/xt/author/pod-spell.t000644 000765 000024 00000000766 14123725062 021515 0ustar00olafaldersstaff000000 000000 use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007005 use Test::Spelling 0.12; use Pod::Wordlist; add_stopwords(); all_pod_files_spelling_ok( qw( bin lib ) ); __DATA__ Alders Alders' Atsushi Chase David Embperl FillInForm HTML Ishigaki Jeremy Kato Kenichi Mark Martin Mates Mather McGrath Olaf Steinbrunner Stosberg TJ Venters chase checkboxes dsteinbrunner html ishigaki jmates lib mark masonhq mcgrath olaf redisplay scalarref tjmather xml HTML-FillInForm-2.22/t/23_absent_checkbox.t000644 000765 000024 00000002762 14123725062 021550 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => 'bar1', foo2 => ['bar1', 'bar2',], foo3 => '', foo5 => 'on', foo6 => '', foo7 => 'on', foo8 => ''); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat, clear_absent_checkboxes => 1); my $is_checked = join(" ",map { m/checked/ ? "yes" : "no" } split ("\n",$output)); if ($is_checked eq "yes no no yes yes no no no no no no no yes no yes no"){ print "ok 2\n"; } else { print "Got unexpected is_checked for checkboxes:\n$is_checked\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/07_reuse.t000644 000765 000024 00000001243 14123725062 017544 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => ['bar1'], foo2 => 'bar2'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); my $output2 = $fif->fill(scalarref => \$output, fdat => \%fdat); if ($output2 =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output2\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/25_select_absent_checkboxes.t000644 000765 000024 00000007235 14123725062 023441 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..6\n"; use HTML::FillInForm; use CGI; print "ok 1\n"; my $hidden_form_in = qq{ }; my $q = new CGI( { foo1 => '0', foo2 => ['bar1', 'bar2',], foo3 => '' } ); my $output = HTML::FillInForm->fill(\$hidden_form_in, $q, clear_absent_checkboxes => 1); my $is_selected = join(" ",map { m/selected/ ? "yes" : "no" } grep /option/, split ("\n",$output)); if ($is_selected eq "yes no no yes yes no no no no no no no"){ print "ok 2\n$output\n"; } else { print "Got unexpected is_seleced for select menus:\n$is_selected\n$output\n"; print "not ok 2\n"; } $hidden_form_in = qq{ }; $q = new CGI( { foo1 => 'bar1', foo2 => ['bar1', 'bar2',], foo3 => '' } ); my $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q, clear_absent_checkboxes => 1 ); $is_selected = join(" ",map { m/selected/ ? "yes" : "no" } grep /option/, split ("\n",$output)); if ($is_selected eq "yes no no yes yes no no no no no no no"){ print "ok 3\n"; } else { print "Got unexpected is_selected for select menus:\n$is_selected\n$output\n"; print "not ok 3\n"; } # test empty option tag $hidden_form_in = qq{}; $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q); if ($output eq qq{}){ print "ok 4\n"; } else { print "Got unexpected output for empty option:\n$output\n"; print "not ok 4\n"; } $hidden_form_in = qq{}; $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q, clear_absent_checkboxes => 1); if ($output =~ m!^$!){ print "ok 5\n"; } else { print "Got unexpected output for empty option:\n$output\n"; print "not ok 5\n"; } $hidden_form_in = qq{}; $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q, clear_absent_checkboxes => 1); if ($output eq ''){ print "ok 6\n"; } else { print "Got unexpected output for empty option:\n$output\n"; print "not ok 6\n"; } HTML-FillInForm-2.22/t/15_multiple_fields.t000644 000765 000024 00000001106 14123725062 021577 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo => 'bar1a'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for hidden form:\n$output\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/18_ignore_fdat.t000644 000765 000024 00000001345 14123725062 020707 0ustar00olafaldersstaff000000 000000 #!/usr/local/bin/perl # contributed by James Tolley use strict; use warnings FATAL => 'all'; use Test::More tests => 4; use_ok('HTML::FillInForm'); my $html = qq[ ]; my $result = HTML::FillInForm->new->fill( scalarref => \$html, fdat => { two => "new val 2", three => "new val 3", }, ignore_fields => [qw(one two)], ); ok($result =~ /not disturbed/ && $result =~ /\bone/,'ignore 1'); ok($result =~ /not disturbed/ && $result =~ /\btwo/,'ignore 2'); ok($result =~ /new val 3/ && $result =~ /\bthree/,'ignore 3'); HTML-FillInForm-2.22/t/02_hidden.t000644 000765 000024 00000001141 14123725062 017644 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1a => 'bar1a', foo2 => ['bar2','bar3']); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for hidden form:\n$output\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/11_target.t000644 000765 000024 00000001603 14123725062 017702 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; use Test; BEGIN { plan tests => 8 } use HTML::FillInForm; my $form = <
EOF ; my %fdat = ( foo1 => 'bar1', foo2 => 'bar2', foo3 => 'bar3', foo4 => 'bar4', ); my $output = HTML::FillInForm->fill( \$form, \%fdat, target => 'foo2', ); my @v = $output =~ m/fill( \$form, \%fdat, target => 'foo4', ); my @v2 = $output2 =~ m/ }; my %fdat = (foo1 => 'bar2'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat, clear_absent_checkboxes => 1); my $is_checked = join(" ",map { m/checked/ ? "yes" : "no" } split ("\n",$output)); if ($is_checked eq 'no yes no no no no'){ print "ok 2\n"; } else { print "Got unexpected is_checked:\n$is_checked\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/10_escape.t000644 000765 000024 00000002111 14123725062 017646 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use Test::More 'no_plan'; use strict; use HTML::FillInForm; my $html =<<"__HTML__";

test
test
test

__HTML__ my %fdat = (); my $output = HTML::FillInForm->fill( \$html, \%fdat); # FIF changes order of HTML attributes, so split strings and sort my $strings_output = join("\n", sort split(/[\s><]+/, lc($output))); my $strings_html = join("\n", sort split(/[\s><]+/, lc($html))); is($strings_output,$strings_html); HTML-FillInForm-2.22/t/08_multiple_objects.t000644 000765 000024 00000001272 14123725062 021770 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; use CGI; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => 'bar1', foo2 => 'bar2'); my $q1 = new CGI( { foo1 => 'bar1' }); my $q2 = new CGI( { foo2 => 'bar2' }); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fobject => [$q1, $q2]); if ($output =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/09_default_type.t000644 000765 000024 00000001103 14123725062 021103 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => 'bar1', foo2 => 'bar2'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/27_html5.t000644 000765 000024 00000001551 14123725062 017456 0ustar00olafaldersstaff000000 000000 use strict; use warnings FATAL => 'all'; use Test::More; use HTML::FillInForm; # See http://www.w3.org/TR/html5/forms.html#the-input-element my %data = ( tel => '00-0000-0000', search => 'search word', url => 'http://localhost', email => 'foo@example.com', datetime => '2012-10-10T00:00Z', date => '2012-10-10', month => '2012-10', week => '2012-W10', time => '00:00', 'datetime-local' => '2012-10-10T00:00', number => 1, range => 10, color => '#000000', ); plan tests => scalar keys %data; my $html = '
' . (join '', map { qq// } keys %data) . '
'; my $result = HTML::FillInForm->new->fill(\$html, \%data); for my $key (keys %data) { my ($input) = $result =~ /(]+type="$key"[^>]*>)/; like $input => qr/value="$data{$key}"/, "filled $key"; } HTML-FillInForm-2.22/t/06_radio.t000644 000765 000024 00000001422 14123725062 017515 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => 'bar2'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); my $is_checked = join(" ",map { m/checked/ ? "yes" : "no" } split ("\n",$output)); if ($is_checked eq 'no yes no no no yes'){ print "ok 2\n"; } else { print "Got unexpected is_checked:\n$is_checked\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/22_undef.t000644 000765 000024 00000005176 14123725062 017530 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; use Test::More; unless ( eval "use Test::Output; 1" ) { plan skip_all => 'These tests require Test::Output'; } plan tests => 10; use_ok('HTML::FillInForm'); { my $html = qq[
]; stderr_is( sub { fill( $html, undef ) }, '', 'no warnings with undef value for input' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, undef ) }, '', 'no warnings with undef value for textarea' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, undef ) }, '', 'no warnings with undef value for select' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, [] ) }, '', 'no warnings with empty array value for select' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, [ undef ] ) }, '', 'no warnings with array containing undef for select' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, undef ) }, '', 'no warnings with undef for multi select' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, [] ) }, '', 'no warnings with empty array for multi select' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, [ undef ] ) }, '', 'no warnings with array containing undef for multi select' ); } { my $html = qq[
]; stderr_is( sub { fill( $html, [ 1, undef ] ) }, '', 'no warnings with array containing undef as second value for multi select' ); } sub fill { my $html = shift; my $val = shift; HTML::FillInForm->new->fill_scalarref( \$html, fdat => { one => $val, }, ); } HTML-FillInForm-2.22/t/17_xhtml.t000644 000765 000024 00000001703 14123725062 017557 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..1\n"; use HTML::FillInForm; use CGI; my $html = < Canceled
Confirmed
Wait List
No Show
Moved to Another Class
Late Cancel
EOF my $q = CGI->new; $q->param('status', 1 ); my $fif = HTML::FillInForm->new; my $output = $fif->fill( scalarref => \$html, fobject => $q ); my $matches; while ($output =~ m!( />)!g) { $matches++; } if ($matches == 6) { print "ok 1\n"; } else { print "not ok 1\n"; } print $output; HTML-FillInForm-2.22/t/16_ignore_fields.t000644 000765 000024 00000002450 14123725062 021233 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; use CGI; print "ok 1\n"; my $hidden_form_in = qq{ }; my $q = new CGI( { foo1 => '0', foo2 => ['bar1', 'bar2',], foo3 => '' } ); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q, ignore_fields => ['asdf','foo1','asdf']); my $is_selected = join(" ",map { m/selected/ ? "yes" : "no" } grep /option/, split ("\n",$output)); if ($is_selected eq "no no no yes yes no no no no no yes no"){ print "ok 2\n"; } else { print "Got unexpected is_selected for select menus:\n$is_selected\n$output\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/14_password.t000644 000765 000024 00000001105 14123725062 020256 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- #!/usr/bin/perl -w use CGI qw(:no_debug); use HTML::FillInForm; use Test; BEGIN { plan tests => 2 } local $/; my $html = qq{}; my $q = new CGI; $q->param( foo => 'bar' ); { my $fif = new HTML::FillInForm; my $output = $fif->fill( scalarref => \$html, fobject => $q, fill_password => 0, ); ok($output !~ /value="bar"/); } { my $fif = new HTML::FillInForm; my $output = $fif->fill( scalarref => \$html, fobject => $q, # fill_password => 1, ); ok($output =~ /value="bar"/); } HTML-FillInForm-2.22/t/21_disable_fields.t000644 000765 000024 00000001707 14123725062 021353 0ustar00olafaldersstaff000000 000000 #!/usr/local/bin/perl # contributed by Trevor Schellhorn use strict; use warnings FATAL => 'all'; use Test::More tests => 5; use_ok('HTML::FillInForm'); my $html = qq[
]; my $result = HTML::FillInForm->new->fill( scalarref => \$html, fdat => { two => "new val 2", }, disable_fields => [qw(two)], ); ok($result =~ /not disturbed/ && $result =~ /\bone/,'don\'t disable 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/ && $result =~ /disabled="disabled"/,'disable 2'); $result = HTML::FillInForm->new->fill( scalarref => \$html, fdat => { two => "new val 2", }, disable_fields => 'two', ); ok($result =~ /not disturbed/ && $result =~ /\bone/,'don\'t disable 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/ && $result =~ /disabled="disabled"/,'disable 2'); HTML-FillInForm-2.22/t/00_base.t000644 000765 000024 00000000116 14123725062 017322 0ustar00olafaldersstaff000000 000000 BEGIN { print "1..1\n"; } use HTML::FillInForm; BEGIN { print "ok 1\n"; } HTML-FillInForm-2.22/t/00-report-prereqs.t000644 000765 000024 00000013452 14123725062 021327 0ustar00olafaldersstaff000000 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: HTML-FillInForm-2.22/t/05_textarea.t000644 000765 000024 00000001417 14123725062 020237 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..3\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{}; my %fdat = (foo => 'bar>bar'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output eq ''){ print "ok 2\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 2\n"; } # empty fdat test %fdat = (foo => ''); $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output eq ''){ print "ok 3\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 3\n"; } HTML-FillInForm-2.22/t/13_warning.t000644 000765 000024 00000000755 14123725062 020072 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- #!/usr/bin/perl -w # emits warnings for HTML::FIF <= 0.22 use CGI qw(:no_debug); use HTML::FillInForm; use Test; BEGIN { plan tests => 1 } local $/; my $html = qq{}; my $q = new CGI; $q->param( "name", "John Smith" ); my $fif = new HTML::FillInForm; my $output = $fif->fill( scalarref => \$html, fobject => $q ); ok($html =~ m!!); HTML-FillInForm-2.22/t/01_form.t000644 000765 000024 00000001155 14123725062 017360 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => 'bar1', foo2 => '"bar2"'); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/00-report-prereqs.dd000644 000765 000024 00000005343 14123725062 021453 0ustar00olafaldersstaff000000 000000 do { my $x = { 'configure' => { 'requires' => { 'ExtUtils::MakeMaker' => '0', 'perl' => '5.006' } }, 'develop' => { 'recommends' => { 'Dist::Zilla::PluginBundle::Git::VersionManager' => '0.007' }, 'requires' => { 'Code::TidyAll' => '0.71', 'Code::TidyAll::Plugin::SortLines::Naturally' => '0.000003', 'Code::TidyAll::Plugin::Test::Vars' => '0.04', 'Code::TidyAll::Plugin::UniqueLines' => '0.000003', 'Parallel::ForkManager' => '1.19', 'Perl::Critic' => '1.132', 'Perl::Tidy' => '20180220', 'Pod::Wordlist' => '0', 'Test::Mojibake' => '0', 'Test::More' => '0', 'Test::Pod' => '1.41', 'Test::Portability::Files' => '0', 'Test::Spelling' => '0.12', 'Test::Vars' => '0.014', 'Test::Version' => '1', 'warnings' => '0' } }, 'runtime' => { 'requires' => { 'Carp' => '0', 'integer' => '0', 'perl' => '5.006', 'strict' => '0', 'vars' => '0' } }, 'test' => { 'recommends' => { 'CPAN::Meta' => '2.120900' }, 'requires' => { 'CGI' => '0', 'ExtUtils::MakeMaker' => '0', 'File::Spec' => '0', 'HTML::TokeParser' => '0', 'Test' => '0', 'Test::More' => '0.96', 'perl' => '5.006', 'warnings' => '0' } } }; $x; }HTML-FillInForm-2.22/t/19_extra.t000644 000765 000024 00000017736 14123725062 017565 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; #An object without a "param" method package Support::Object; sub new{ my ($proto) = @_; my $self = {}; bless $self, $proto; return $self; } ### #End of Support::Object use Test::More tests => 38; use_ok('HTML::FillInForm'); my $html = qq[
]; my $result = HTML::FillInForm->new->fill_scalarref( \$html, fdat => { two => "new val 2", three => "new val 3", }, ignore_fields => 'one', ); ok($result =~ /not disturbed/ && $result =~/\bone/,'scalar value of ignore_fields'); ok($result =~ /new val 2/ && $result =~ /two/,'fill_scalarref worked'); ok($result =~ /new val 3/ && $result =~ /three/,'fill_scalarref worked 2'); $html = qq[
]; my @html_array = split /\n/, $html; { $result = HTML::FillInForm->new->fill_arrayref( \@html_array, fdat => { one => "new val 1", two => "new val 2", }, ); ok($result =~ /new val 1/ && $result =~ /\bone/, 'fill_arrayref 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/, 'fill_arrayref 2'); } { $result = HTML::FillInForm->fill( \@html_array, { one => "new val 1", two => "new val 2", }, ); ok($result =~ /new val 1/ && $result =~ /\bone/, 'fill_arrayref 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/, 'fill_arrayref 2'); } { $result = HTML::FillInForm->new->fill_file( "t/data/form1.html", fdat => { one => "new val 1", two => "new val 2", three => "new val 3", }, ); ok($result =~ /new val 1/ && $result =~ /\bone/,'fill_file 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/,'fill_file 2'); ok($result =~ /new val 3/ && $result =~ /\bthree/,'fill_file 3'); } { $result = HTML::FillInForm->fill( "t/data/form1.html", { one => "new val 1", two => "new val 2", three => "new val 3", }, ); ok($result =~ /new val 1/ && $result =~ /\bone/,'fill_file 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/,'fill_file 2'); ok($result =~ /new val 3/ && $result =~ /\bthree/,'fill_file 3'); } { my $fh = open FH, "fill( \*FH, { one => "new val 1", two => "new val 2", three => "new val 3", }, ); ok($result =~ /new val 1/ && $result =~ /\bone/,'fill_file 1'); ok($result =~ /new val 2/ && $result =~ /\btwo/,'fill_file 2'); ok($result =~ /new val 3/ && $result =~ /\bthree/,'fill_file 3'); close(\*FH); } $html = qq[
]; eval{ $result = HTML::FillInForm->new->fill_scalarref( \$html ); }; $result = HTML::FillInForm->new->fill( fdat => {} ); #No meaningful arguments - should not this produce an error? $html = qq[
]; my $fobject = new Support::Object; eval{ $result = HTML::FillInForm->new->fill_scalarref( $html, fobject => $fobject ); }; like($@, qr/HTML::FillInForm->fill called with fobject option, containing object of type Support::Object which lacks a param\(\) method!/, "bad fobject parameter"); $html = qq{ }; my %fdat = (foo1 => 'bar2'); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result =~ /on/ && $result =~ /\bfoo1/,'defaulting radio buttons to on'); $html = qq{ }; %fdat = (foo1 => ['bar2', 'bar3']); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result =~ /bar2/ && $result =~ /\bfoo1/,'first array element taken for password fields'); $html = qq{ }; %fdat = (foo1 => ['bar2', 'bar3']); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); my $is_checked = join(" ",map { m/checked/ ? "yes" : "no" } split ("\n",$result)); ok($is_checked eq "yes no",'first array element taken for radio buttons'); $html = qq{}; %fdat = (area => 'foo1'); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result !~ /foo1/,'textarea with no name'); $html = qq{}; %fdat = (foo1 => ['bar2', 'bar3']); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result eq '','first array element taken for textareas'); $html = qq{ }; %fdat = (foo1 => [undef, 'bar1'], foo2 => [undef, 'bar2'], foo3 => [undef, 'bar3']); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result !~ m/checked/, "Empty radio button value"); like($result, qr##, "Empty textarea"); like($result, qr//, "Empty password field value"); $html = qq[
]; %fdat = (foo0 => 'bar1', foo1 => 'bar2'); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result =~ /bar1/ and $result =~ /\bfoo0/,'form with comments 1'); like($result, qr'','form with comments 2'); like($result, qr'','Comment 1'); like($result, qr'','Comment 2'); like($result, qr'','Comment 3'); like($result, qr'','Comment 4'); $html = qq[
]; %fdat = (foo0 => 'bar1', foo1 => 'bar2'); $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => \%fdat); ok($result =~ /bar1/ && $result =~ /\bfoo0/,'form with processing 1'); like($result, qr'','form with processing 2'); like($result, qr'<\? HTML processing instructions 1 \?>','processing 1'); like($result, qr'<\? XML processing instructions 2\?>','processing 2'); like($result, qr'<\? HTML processing instructions\n\n3>','processing 3'); like($result, qr'<\?HTML processing instructions 4 >','processing 4'); HTML-FillInForm-2.22/t/26_invalid_fields.t000644 000765 000024 00000004637 14123725062 021410 0ustar00olafaldersstaff000000 000000 #!/usr/local/bin/perl use strict; use warnings; use Test::More; use HTML::FillInForm; use HTML::TokeParser; my $html = qq[
]; { my $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => {two => "new val 2"}, invalid_fields => ['one']); my $p = HTML::TokeParser->new(\$result); my $one = $p->get_tag('input')->[1]; is($one->{name}, 'one'); is($one->{class}, 'invalid'); my $two = $p->get_token->[2]; is($two->{name}, 'two'); isnt($two->{class},'invalid'); } { my $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => {two => "new val 2"}, invalid_fields => ['one', 'two', 'three', 'four', 'five']); my $p = HTML::TokeParser->new(\$result); my $one = $p->get_tag('input')->[1]; is($one->{name}, 'one'); is($one->{class}, 'invalid'); my $two = $p->get_token->[2]; is($two->{name}, 'two'); is($two->{class},'existing invalid'); my $three = $p->get_token->[2]; is($three->{name},'three'); is($three->{class},'invalid'); my $four = $p->get_token->[2]; is($four->{name}, 'four'); is($four->{class}, 'invalid'); my $five = $p->get_tag('textarea')->[1]; is($five->{name},'five'); is($five->{class},'invalid'); } { my $result = HTML::FillInForm->new->fill(scalarref => \$html, fdat => {two => "new val 2"}, invalid_fields => ['one', 'three'], invalid_class => "funky"); my $p = HTML::TokeParser->new(\$result); my $one = $p->get_tag('input')->[1]; is($one->{name}, 'one'); is($one->{class}, 'funky'); my $two = $p->get_token->[2]; is($two->{name}, 'two'); is($two->{class},'existing'); my $three = $p->get_token->[2]; is($three->{name},'three'); is($three->{class},'invalid funky'); } done_testing(); HTML-FillInForm-2.22/t/data/000755 000765 000024 00000000000 14123725062 016637 5ustar00olafaldersstaff000000 000000 HTML-FillInForm-2.22/t/03_checkbox.t000644 000765 000024 00000002675 14123725062 020215 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..2\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => 'bar1', foo2 => ['bar1', 'bar2',], foo3 => '', foo5 => 'on', foo6 => '', foo7 => 'on', foo8 => ''); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); my $is_checked = join(" ",map { m/checked/ ? "yes" : "no" } split ("\n",$output)); if ($is_checked eq "yes no no yes yes no no no no no yes no yes no yes no"){ print "ok 2\n"; } else { print "Got unexpected is_checked for checkboxes:\n$is_checked\n"; print "not ok 2\n"; } HTML-FillInForm-2.22/t/12_mult.t000644 000765 000024 00000001663 14123725062 017404 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..3\n"; use HTML::FillInForm; print "ok 1\n"; my $hidden_form_in = qq{ }; my %fdat = (foo1 => ['bar1','bar2']); my $fif = new HTML::FillInForm; my $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output =~ m/^\s*$/){ print "ok 2\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 2\n"; } %fdat = (foo1 => ['bar1']); $output = $fif->fill(scalarref => \$hidden_form_in, fdat => \%fdat); if ($output =~ m/^\s*$/){ print "ok 3\n"; } else { print "Got unexpected out for $hidden_form_in:\n$output\n"; print "not ok 3\n"; } HTML-FillInForm-2.22/t/20_scalarref.t000644 000765 000024 00000001015 14123725062 020353 0ustar00olafaldersstaff000000 000000 use strict; use warnings; use Test::More; use HTML::FillInForm; # a few strings to test against my @contents = ( q{404}, q{404 Not Found}, q{Hello World}, q{Hello World}, ); # our number of tests in the number of elements in @contents plan tests => (scalar @contents); # run each string through H::FIF foreach my $content (@contents) { my $output = HTML::FillInForm->fill( \$content, fdat => {}); is($output, $content, q{output and content should be the same}); } HTML-FillInForm-2.22/t/04_select.t000644 000765 000024 00000005754 14123725062 017710 0ustar00olafaldersstaff000000 000000 # -*- Mode: Perl; -*- use strict; $^W = 1; print "1..5\n"; use HTML::FillInForm; use CGI; print "ok 1\n"; my $hidden_form_in = qq{ }; my $q = new CGI( { foo1 => '0', foo2 => ['bar1', 'bar2',], foo3 => '' } ); my $output = HTML::FillInForm->fill(\$hidden_form_in, $q); my $is_selected = join(" ",map { m/selected/ ? "yes" : "no" } grep /option/, split ("\n",$output)); if ($is_selected eq "yes no no yes yes no no no no no yes no"){ print "ok 2\n$output\n"; } else { print "Got unexpected is_seleced for select menus:\n$is_selected\n$output\n"; print "not ok 2\n"; } $hidden_form_in = qq{ }; $q = new CGI( { foo1 => 'bar1', foo2 => ['bar1', 'bar2',], foo3 => '' } ); my $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q); $is_selected = join(" ",map { m/selected/ ? "yes" : "no" } grep /option/, split ("\n",$output)); if ($is_selected eq "yes no no yes yes no no no no no yes no"){ print "ok 3\n"; } else { print "Got unexpected is_selected for select menus:\n$is_selected\n$output\n"; print "not ok 3\n"; } # test empty option tag $hidden_form_in = qq{}; $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q); if ($output eq qq{}){ print "ok 4\n"; } else { print "Got unexpected output for empty option:\n$output\n"; print "not ok 4\n"; } $hidden_form_in = qq{}; $fif = new HTML::FillInForm; $output = $fif->fill(scalarref => \$hidden_form_in, fobject => $q); if ($output =~ m!^$!){ print "ok 5\n"; } else { print "Got unexpected output for empty option:\n$output\n"; print "not ok 5\n"; } HTML-FillInForm-2.22/t/data/form1.html000644 000765 000024 00000000260 14123725062 020547 0ustar00olafaldersstaff000000 000000