COPYRIGHT000644001750001750 257213623771525 17132 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Regexp-Pattern-License Upstream-Contact: Jonas Smedegaard (JONASS) Source: https://metacpan.org/pod/Regexp::Pattern::License Files: Changes META.json META.yml doap.ttl lib/Regexp/Pattern/License.pm lib/Regexp/Pattern/License/Parts.pm t/02-regexp-pattern.t t/lib/MyTest.pm t/normalized.t t/re2.t Copyright: Copyright 2020 Jonas Smedegaard. License: GPL-3.0 Files: INSTALL LICENSE README TODO Copyright: Unknown License: Unknown Files: COPYRIGHT CREDITS SIGNATURE Copyright: None License: public-domain Files: Makefile.PL Copyright: Copyright 2013 Toby Inkster. License: GPL-1.0+ or Artistic-1.0 Files: t/01-basic.t Copyright: Copyright 2019 Jonas Smedegaard. License: GPL-3.0 Files: dist.ini Copyright: Copyright 2017 Jonas Smedegaard. License: GPL-3.0 License: GPL-3.0 This software is Copyright (c) 2020 by Jonas Smedegaard. This is free software, licensed under: The GNU General Public License, Version 3, June 2007 License: Artistic-1.0 This software is Copyright (c) 2020 by the copyright holder(s). This is free software, licensed under: The Artistic License 1.0 License: GPL-1.0 This software is Copyright (c) 2020 by the copyright holder(s). This is free software, licensed under: The GNU General Public License, Version 1, February 1989 CREDITS000644001750001750 27013623771524 16627 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0Maintainer: - Jonas Smedegaard (JONASS) Thanks: - Niels Thykier - Sandro Mani - Slaven Rezić (SREZIC) Changes000644001750001750 2663213623771524 17154 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0Regexp-Pattern-License ====================== Created: 2016-11-23 Home page: Home page: Bug tracker: Maintainer: Jonas Smedegaard (JONASS) v3.2.0 2020-02-21 [ Bug Fixes ] - add trove caption for zpl (not zpl_1) [ Other ] - add object ssleay - add usage objects ofl_1_no_rfn ofl_1_rfn ofl_1_1_no_rfn ofl_1_1_rfn, and trait object usage_rfn - introduce tags type:usage:*:* type:trait:usage:rfn - relax generally to treat / as optional or replaced by space - relax license object bsd_3_clause to treat full-stop as optional v3.1.102 2020-02-10 [ Bug Fixes ] - tag object cc_cc0_1 as type:singleversion:cc_cc0 (not bogusly type:versioned:decimal) - tag objects bdwgc_matlab lgpl_bdwgc as type:unversioned (not bogusly type:versioned:decimal) [ Other ] - add objects agpl_1 agpl_2 agpl_3 - add objects zpl zpl_1 zpl_1_1 zpl_2 zpl_2_1 - extend license pattern cecill_1_1 to fully mask any_of - extend license patterns cecill_1_1 cecill_2 cecill_2_1 to avoid misdetecting as GPL-2+ - extend trait pattern licensed_under to cover more phrases - stop custom-treat name-only as grant for select objects (some use for that now better done with tag license:is:grant) - tag objects license_label license_label_trove licensed_under as type:trait:grant:prefix (not type:trait) v3.1.101 2020-01-30 [ Documentation ] - add description for object epl [ Other ] - Added: add object cc_cc0_1 - Added: add objects cc_by_1 cc_by_2 cc_by_2_5 cc_by_3 cc_by_4 - Added: add objects cc_by_nc_1 cc_by_nc_2 cc_by_nc_2_5 cc_by_nc_3 cc_by_nc_4 - Added: add objects cc_by_nc_nd_1 cc_by_nc_nd_2 cc_by_nc_nd_2_5 cc_by_nc_nd_3 cc_by_nc_nd_4 - Added: add objects cc_by_nc_sa_1 cc_by_nc_sa_2 cc_by_nc_sa_2_5 cc_by_nc_sa_3 cc_by_nc_sa_4 - Added: add objects cc_by_nd_1 cc_by_nd_2 cc_by_nd_2_5 cc_by_nd_3 cc_by_nd_4 - Added: add objects cc_by_sa_1 cc_by_sa_2 cc_by_sa_2_5 cc_by_sa_3 cc_by_sa_4 - Added: add objects cc_nc cc_nc_1 cc_nd cc_nd_1 cc_sa cc_sa_1 - Added: add objects cddl_1 cddl_1_1 - Added: add objects cpl cpl_1 epl_1 epl_2 ipl ipl_1 - Added: add objects mpl_1 mpl_1_1 mpl_2 - Added: add objects ofl_1 ofl_1_1 - Added: add objects sgi_b_1 sgi_b_1_1 sgi_b_2 - relax to match copyright sign as uppercase (C) - synthesize more CC subject patterns v3.1.100 2020-01-28 [ REGRESSIONS ] - temporarily drop subject license pattern from object afl (clashes with those of versioned child objects) [ Bug Fixes ] - tighten object adobe_2006 pattern grant to avoid false positives [ Documentation ] - add description for license objects apache_1 apache_1_1 - update TODO [ Test Suite ] - test actually used name pattern for adobe_2006 object [ Other ] - add Trove captions - add tag license:contains:* for license objects apache_1 apache_1_1 bsd_3_clause bsd_4_clause dsdp - add trait object license_label_trove - extend subject license patterns for license objects apache_1 apache_1_1 apache_2 bsd_2_clause bsd_3_clause bsd_4_clause dsdp - relax leading bullet to be optional (might be misdetected as comment marker and stripped) - relax object gpl to match bogus name "the GNU License" - relax slightly internal pattern copr_cond_discl - relax trait pattern licensed_under to cover more phrases - relax trait pattern licensed_under to cover more phrases - relax trait pattern licensed_under to cover more phrases - synthesize subject pattern grant from Trove caption - tighten trait object version_number to cover only single-digit segment v3.1.99 2020-01-05 [ REGRESSIONS ] - give up on auto-loading for now, and support only RE2 (not PCRE2) [ Packaging ] - require (not recommend) re::engine::RE2, and stop recommend re::engine::PCRE2 v3.1.98 2020-01-05 [ Test Suite ] - fix: test for the proper module for each test (arrgh) v3.1.97 2020-01-05 [ Test Suite ] - fix: test if re::engine::* is available before testing use of those modules [ Packaging ] - test-require module Test::Requires v3.1.96 2020-01-04 [ Documentation ] - add examples for object beerware [ Test Suite ] - extend testsuite with Test::Regexp::Pattern tests [ Packaging ] - recommend modules re::engine::PCRE2 re::engine::RE2 - test-require module Test::Regexp::Pattern [ Other ] - add option engine - add tags license:is:grant license:contains:grant license:contains:license:* license:contains:name:* - extend object llgpl: Add alternate cliki iri - internalize list of GNU locales v3.1.95 2020-01-03 [ Bug Fixes ] - declare alternate caption (not name) for object mit - tag object artistic as type:versioned:complex [ Other ] - Add object rpsl_1. - Add objects apache_1 apache_1_1 apache_2. - Add objects artistic_1 artistic_1_cl8 artistic_1_clarified artistic_1_perl. - Extend object afl to cover subject patterns grant license (not only name). Add objects afl_1_1 afl_1_2 afl_2 afl_2_1 afl_3. - Extend object wtfpl. Add objects wtfpl_1 wtfpl_2 wtfnmfpl wtfnmfpl_1. - Extend objects cecill cecill_1 cecill_1_1 cecill_2 cecill_2_1 cecill_b cecill_c. Add objects cecill_b_1 cecill_c_1. - Improve object jython: Extend metadata. - add alternate long caption for object bsd - relax internal bullet pattern to match up to 5 digits/chars - relax many patterns to match british spelling of licence - relax slightly trait pattern licensed_under to match strings with capital You - relax trait pattern licensed_under to match "covered by" - relax trait pattern version_prefix and synthesized grant patterns to match more version strings; tighten synthesized grant patterns to avoid matching derived versions - synthesize patterns matching license granting declared as definition, i.e. in the form License: foo v3.1.94 2019-06-12 [ Bug Fixes ] - Fix DOAP bug-database and repository URLs. Slaven Rezić++ [ Test Suite ] - Extend testsuite: Cover objects aladdin_8 aladdin_9. [ Packaging ] - Fix declare test-requirement on Try::Tiny. Slaven Rezić++ [ Other ] - Extend object bsl_1: Add subject pattern license. Improve metadata. - Extend trait patterns version version_later version_numberstring version_prefix: Cover scopes line sentence. Limit scope paragraph. - Fix objects aladdin aladdin_8 aladdin_9: Add subject pattern license for singleversion licenses and drop for versioned license. - Fix relax trait pattern version_later_postfix: Detect "any above". - Fix relax trait pattern version_prefix: Tolerate leading only/either. - Improve synthesized subject pattern grant: Use trait pattern licensed_under (not simpler copy). - Limit length of subpatterns BB (bullets) E (end of sentence) EE (end of paragraph) and lang, both for slight speedup and to limit risk of issues like Debian bug#926392. - Relax synthesized name pattern to make commas optional (not strip them). - Relax trait pattern version_prefix: Include optional non-text prefix (not only in pattern version). - Relax trait pattern version_prefix: Make whole pattern optional (not its use in version_numberstring). - Synthesize subject pattern name. v3.1.93 2019-06-08 [ Bug Fixes ] - Fix DOS in pattern for leading bullets. Niels Thykier++ Sandro Mani++ [ Other ] - Avoid regex option /r to support Perl < 5.14. - Extend trait pattern licensed_under. - Fix metadata for object afl: Drop bogus tldr name. Slightly improve metadata for object adobe_glyph. v3.1.92 2018-04-05 [ Bug Fixes ] - Fix avoid chained regexes (seemingly unsupported in perl <5.16). [ Documentation ] - Update and slightly reorganize TODOs. [ Other ] - Added: Add trait objects any_of licensed_under or_at_option version version_numberstring. - Added: Implement DefHash option "capture". - Improve embedded summary (and related comment) for option "subject". - Stop cache compiled patterns internally: Not part of Regexp::Pattern spec and better handled externally when really needed. v3.1.91 2018-03-30 [ Bug Fixes ] - Fix avoid alternate name MIT except for objects expat mit. - Fix metadata for object aladdin: Use tag type:versioned:decimal (not type:unversioned). - Fix resolve Fedora IRIs. [ Other ] - Added: Add objects aladdin_8 aladdin_9. - Added: Cover more types of generic grants (used mostly for llgpl and gpl). - Added: Extend object llgpl: Add canonical iri. v3.1.90 2018-03-29 [ Bug Fixes ] - Fix object cecill_b subject pattern license. - Fix object fsfullr to match grant at all. - Fix relax object mit_new_materials to match license at all. - Fix strip duplicate tagline for object ntp, accidentally suppressing tag family:mit. - Tighten objects qpl sgi_b: Avoid bogusly match optional trailing FSF credit. [ Documentation ] - Add TODO file to source, with a bunch of ideas. [ Test Suite ] - Extend testsuite to cover most license patterns. [ Other ] - Added: Add object json. - Added: Add object kevlin_henney (replacing recently added but broken isc_minidiscl). - Added: Add objects bsl bsl_1. - Added: Add objects jython python_2. - Added: Extend object cc_cc0: Add subject pattern grant. - Added: Extend object ftl: Add subject pattern license. - Added: Extend objects ms_pl ms_rl: Add subject pattern license. - Added: Generate default pattern dynamically, and provide alternative subject patterns statically as plaintext (also for non-Perl use). Drop alternative flavor pattern artifact. - Added: Implement DefHash option "subject". - Added: Synthesize metadata caption, and subject pattern grant. - Added: Synthesize metadata iri, and subject pattern iri. - Added: Synthesize subject pattern license. - Extend metadata: Add iri. - Extend object public_domain: Improve subject pattern license. - Fix and extend metadata: Consistently use "name" for license shortname (i.e. single-word), "caption" for license name, and "summary" for non-name short description. - Fix metadata for objects cecill_b cecill_c: Use tag type:versioned:decimal (not type:unversioned). - Implement per-object default pattern. - Relax license objects agpl beerware gpl lgpl public_domain qpl: Detect uppercase variations. - Relax object bsd_3_clause to match SPDX template. - Stringify patterns (as preparation for central compilation). - Synthesize metadata name. - Synthesize subject pattern trait. - Tighten object openssl to differentiate from apache_1. - Tighten object eurosym: Avoid wildcard. - Tighten object postgresql: Limit to lowercase pattern (uppercase or varying case seemingly unused). - Tighten objects ntp ntp_disclaimer: Disambiguate from kevlin_henney. - Uniformly detect copyright sign. - Uniformly detect hyphens. - Uniformly detect quotation marks. - Uniformly detect sentence and paragraph endings. - Uniformly detect sentence enumerators. v3.1.0 2018-02-09 [ Documentation ] - Improve POD: Fix list covered licenses aladdin icu mit_cmu mit_cmu_warranty ofl rpsl. - Improve POD: Rephrase sections about license combinations and license groups, to better disambiguate. [ Other ] - Added: Add hierarchical tags family:* type:*. Deprecate undocumented non-hierarchical tags. - Added: Add license patterns bdwgc bdwgc_matlab isc_minidiscl lgpl_bdwgc. - Added: Introduce alternate license patterns: pat.alt.flavor.artifact. v3.0.31 2017-08-15 [ Packaging ] - Initial independent CPAN release (based on App::Licensecheck). [ Other ] - Use strict and warnings (not strictures). INSTALL000644001750001750 175713623771524 16673 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0 Installing Regexp-Pattern-License should be straightforward. INSTALLATION WITH CPANMINUS If you have cpanm, you only need one line: % cpanm Regexp::Pattern::License If you are installing into a system-wide directory, you may need to pass the "-S" flag to cpanm, which uses sudo to install the module: % cpanm -S Regexp::Pattern::License INSTALLATION WITH THE CPAN SHELL Alternatively, if your CPAN shell is set up, you should just be able to do: % cpan Regexp::Pattern::License MANUAL INSTALLATION As a last resort, you can manually install it. Download the tarball and unpack it. Consult the file META.json for a list of pre-requisites. Install these first. To build Regexp-Pattern-License: % perl Makefile.PL % make && make test Then install it: % make install If you are installing into a system-wide directory, you may need to run: % sudo make install LICENSE000644001750001750 10474513623771524 16710 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0This software is Copyright (c) 2020 by Jonas Smedegaard. This is free software, licensed under: The GNU General Public License, Version 3, June 2007 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey 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; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU 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 that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. 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. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 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. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state 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) 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 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program 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, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . MANIFEST000644001750001750 40613623771525 16742 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0COPYRIGHT CREDITS Changes INSTALL LICENSE MANIFEST META.json META.yml Makefile.PL README SIGNATURE TODO dist.ini doap.ttl lib/Regexp/Pattern/License.pm lib/Regexp/Pattern/License/Parts.pm t/01-basic.t t/02-regexp-pattern.t t/lib/MyTest.pm t/normalized.t t/re2.t META.json000644001750001750 440013623771525 17250 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0{ "abstract" : "regular expressions for legal licenses", "author" : [ "Jonas Smedegaard (JONASS) " ], "dynamic_config" : 0, "generated_by" : "Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010", "keywords" : [ "Licensing", "Sourcecode" ], "license" : [ "gpl_3" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Regexp-Pattern-License", "no_index" : { "directory" : [ "eg", "examples", "inc", "t", "xt" ] }, "optional_features" : {}, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.17" } }, "runtime" : { "requires" : { "perl" : "5", "re::engine::RE2" : "0", "strictures" : "2" } }, "test" : { "requires" : { "Regexp::Pattern" : "0", "Test::Builder::Module" : "0", "Test::Exception" : "0", "Test::More" : "0.98", "Test::Regexp::Pattern" : "0.003", "Test::Requires" : "0", "Try::Tiny" : "0" } } }, "provides" : { "Regexp::Pattern::License" : { "file" : "lib/Regexp/Pattern/License.pm", "version" : "v3.2.0" }, "Regexp::Pattern::License::Parts" : { "file" : "lib/Regexp/Pattern/License/Parts.pm", "version" : "v3.2.0" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://bugs.debian.org/libregexp-pattern-license-perl" }, "homepage" : "https://metacpan.org/pod/Regexp::Pattern::License", "license" : [ "http://www.gnu.org/licenses/gpl-3.0.txt" ], "repository" : { "type" : "git", "web" : "https://salsa.debian.org/build-common-team/regexp-pattern-license.git" }, "x_identifier" : "http://purl.org/NET/cpan-uri/dist/Regexp-Pattern-License/project" }, "version" : "v3.2.0", "x_help_wanted" : [ "tester", "documenter" ], "x_serialization_backend" : "JSON::PP version 4.02", "x_static_install" : 1 } META.yml000644001750001750 271513623771525 17107 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0--- abstract: 'regular expressions for legal licenses' author: - 'Jonas Smedegaard (JONASS) ' build_requires: Regexp::Pattern: '0' Test::Builder::Module: '0' Test::Exception: '0' Test::More: '0.98' Test::Regexp::Pattern: '0.003' Test::Requires: '0' Try::Tiny: '0' configure_requires: ExtUtils::MakeMaker: '6.17' dynamic_config: 0 generated_by: 'Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010' keywords: - Licensing - Sourcecode license: gpl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Regexp-Pattern-License no_index: directory: - eg - examples - inc - t - xt optional_features: {} provides: Regexp::Pattern::License: file: lib/Regexp/Pattern/License.pm version: v3.2.0 Regexp::Pattern::License::Parts: file: lib/Regexp/Pattern/License/Parts.pm version: v3.2.0 requires: perl: '5' re::engine::RE2: '0' strictures: '2' resources: Identifier: http://purl.org/NET/cpan-uri/dist/Regexp-Pattern-License/project bugtracker: https://bugs.debian.org/libregexp-pattern-license-perl homepage: https://metacpan.org/pod/Regexp::Pattern::License license: http://www.gnu.org/licenses/gpl-3.0.txt repository: https://salsa.debian.org/build-common-team/regexp-pattern-license.git version: v3.2.0 x_help_wanted: - tester - documenter x_serialization_backend: 'CPAN::Meta::YAML version 0.018' x_static_install: 1 Makefile.PL000644001750001750 1266213623771525 17632 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0use strict; use ExtUtils::MakeMaker 6.17; my $EUMM = eval( $ExtUtils::MakeMaker::VERSION ); my $meta = { "abstract" => "regular expressions for legal licenses", "author" => ["Jonas Smedegaard (JONASS) "], "dynamic_config" => 0, "generated_by" => "Dist::Inkt::Profile::TOBYINK version 0.024, CPAN::Meta::Converter version 2.150010", "keywords" => ["Licensing", "Sourcecode"], "license" => ["gpl_3"], "meta-spec" => { url => "http://search.cpan.org/perldoc?CPAN::Meta::Spec", version => 2, }, "name" => "Regexp-Pattern-License", "no_index" => { directory => ["eg", "examples", "inc", "t", "xt"] }, "prereqs" => { configure => { requires => { "ExtUtils::MakeMaker" => 6.17 } }, runtime => { requires => { "perl" => 5, "re::engine::RE2" => 0, "strictures" => 2 }, }, test => { requires => { "Regexp::Pattern" => 0, "Test::Builder::Module" => 0, "Test::Exception" => 0, "Test::More" => 0.98, "Test::Regexp::Pattern" => 0.003, "Test::Requires" => 0, "Try::Tiny" => 0, }, }, }, "provides" => { "Regexp::Pattern::License" => { file => "lib/Regexp/Pattern/License.pm", version => "v3.2.0" }, "Regexp::Pattern::License::Parts" => { file => "lib/Regexp/Pattern/License/Parts.pm", version => "v3.2.0" }, }, "release_status" => "stable", "resources" => { bugtracker => { web => "https://bugs.debian.org/libregexp-pattern-license-perl" }, homepage => "https://metacpan.org/pod/Regexp::Pattern::License", license => ["http://www.gnu.org/licenses/gpl-3.0.txt"], repository => { type => "git", web => "https://salsa.debian.org/build-common-team/regexp-pattern-license.git", }, x_identifier => "http://purl.org/NET/cpan-uri/dist/Regexp-Pattern-License/project", }, "version" => "v3.2.0", "x_help_wanted" => ["tester", "documenter"], "x_static_install" => 1, }; my %dynamic_config; my %WriteMakefileArgs = ( ABSTRACT => $meta->{abstract}, AUTHOR => ($EUMM >= 6.5702 ? $meta->{author} : $meta->{author}[0]), DISTNAME => $meta->{name}, VERSION => $meta->{version}, EXE_FILES => [ map $_->{file}, values %{ $meta->{x_provides_scripts} || {} } ], NAME => do { my $n = $meta->{name}; $n =~ s/-/::/g; $n }, test => { TESTS => "t/*.t" }, %dynamic_config, ); $WriteMakefileArgs{LICENSE} = $meta->{license}[0] if $EUMM >= 6.3001; sub deps { my %r; for my $stage (@_) { for my $dep (keys %{$meta->{prereqs}{$stage}{requires}}) { next if $dep eq 'perl'; my $ver = $meta->{prereqs}{$stage}{requires}{$dep}; $r{$dep} = $ver if !exists($r{$dep}) || $ver >= $r{$dep}; } } \%r; } my ($build_requires, $configure_requires, $runtime_requires, $test_requires); if ($EUMM >= 6.6303) { $WriteMakefileArgs{BUILD_REQUIRES} ||= deps('build'); $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{TEST_REQUIRES} ||= deps('test'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime'); } elsif ($EUMM >= 6.5503) { $WriteMakefileArgs{BUILD_REQUIRES} ||= deps('build', 'test'); $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime'); } elsif ($EUMM >= 6.52) { $WriteMakefileArgs{CONFIGURE_REQUIRES} ||= deps('configure'); $WriteMakefileArgs{PREREQ_PM} ||= deps('runtime', 'build', 'test'); } else { $WriteMakefileArgs{PREREQ_PM} ||= deps('configure', 'build', 'test', 'runtime'); } { my ($minperl) = reverse sort( grep defined && /^[0-9]+(\.[0-9]+)?$/, map $meta->{prereqs}{$_}{requires}{perl}, qw( configure build runtime ) ); if (defined($minperl)) { die "Installing $meta->{name} requires Perl >= $minperl" unless $] >= $minperl; $WriteMakefileArgs{MIN_PERL_VERSION} ||= $minperl if $EUMM >= 6.48; } } sub FixMakefile { return unless -d 'inc'; my $file = shift; local *MAKEFILE; open MAKEFILE, "< $file" or die "FixMakefile: Couldn't open $file: $!; bailing out"; my $makefile = do { local $/; }; close MAKEFILE or die $!; $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /; $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g; $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g; $makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m; $makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m; open MAKEFILE, "> $file" or die "FixMakefile: Couldn't open $file: $!; bailing out"; print MAKEFILE $makefile or die $!; close MAKEFILE or die $!; } my $mm = WriteMakefile(%WriteMakefileArgs); FixMakefile($mm->{FIRST_MAKEFILE} || 'Makefile'); exit(0); README000644001750001750 2236213623771524 16535 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0NAME Regexp::Pattern::License - Regular expressions for legal licenses VERSION Version v3.2.0 DESCRIPTION Regexp::Pattern::License provides a hash of regular expression patterns related to legal software licenses. Regexp::Pattern is a convention for organizing reusable regex patterns. PATTERNS Single licenses Patterns each covering a single license. Each of these patterns has exactly one of these tags: type:singleversion:* type:unversioned type:versioned:decimal . * adobe_2006 * adobe_glyph * afl * afl_1_1 * afl_1_2 * afl_2 * afl_2_1 * afl_3 * agpl * agpl_1 * agpl_2 * agpl_3 * aladdin * aladdin_8 * aladdin_9 * apache * apache_1 * apache_1_1 * apache_2 * apafml * artistic * artistic_1 * artistic_1_cl8 * artistic_1_perl * artistic_2 * bdwgc * bdwgc_matlab * beerware * bsd_2_clause * bsd_3_clause * bsd_4_clause * bsl * bsl_1 * cc_by * cc_by_1 * cc_by_2 * cc_by_2_5 * cc_by_3 * cc_by_4 * cc_by_nc * cc_by_nc_1 * cc_by_nc_2 * cc_by_nc_2_5 * cc_by_nc_3 * cc_by_nc_4 * cc_by_nc_nd * cc_by_nc_nd_1 * cc_by_nc_nd_2 * cc_by_nc_nd_2_5 * cc_by_nc_nd_3 * cc_by_nc_nd_4 * cc_by_nc_sa * cc_by_nc_sa_1 * cc_by_nc_sa_2 * cc_by_nc_sa_2_5 * cc_by_nc_sa_3 * cc_by_nc_sa_4 * cc_by_nd * cc_by_nd_1 * cc_by_nd_2 * cc_by_nd_2_5 * cc_by_nd_3 * cc_by_nd_4 * cc_by_sa * cc_by_sa_1 * cc_by_sa_2 * cc_by_sa_2_5 * cc_by_sa_3 * cc_by_sa_4 * cc_cc0 * cc_cc0_1 * cc_nc * cc_nc_1 * cc_nd * cc_nd_1 * cc_sa * cc_sa_1 * cc_sp * cddl * cddl_1 * cddl_1_1 * cecill * cecill_1 * cecill_1_1 * cecill_2 * cecill_2_1 * cecill_b * cecill_b_1 * cecill_c * cecill_c_1 * cpl * cpl_1 * cube * curl * dsdp * epl * epl_1 * epl_2 * eurosym * fsfap * fsful * fsfullr * ftl * gfdl * gfdl_niv * gpl * isc * icu * ipl * ipl_1 * json * jython * kevlin_henney * lgpl * lgpl_bdwgc * libpng * llgpl * mit_advertising * mit_cmu * mit_cmu_warranty * mit_enna * mit_feh * mit_new * mit_new_materials * mit_old * mit_oldstyle * mit_oldstyle_disclaimer * mit_oldstyle_permission * mpl * mpl_1 * mpl_1_1 * mpl_2 * ms_pl * ms_rl * ntp * ntp_disclaimer * ofl * ofl_1 * ofl_1_no_rfn * ofl_1_rfn * ofl_1_1 * ofl_1_1_no_rfn * ofl_1_1_rfn * openssl * postgresql * public_domain * python * python_2 * qpl * rpsl * rpsl_1 * sgi_b * sgi_b_1 * sgi_b_1_1 * sgi_b_2 * ssleay * unicode_strict * unicode_tou * wtfpl * wtfpl_1 * wtfpl_2 * wtfnmfpl * wtfnmfpl_1 * zlib * zlib_acknowledgement * zpl * zpl_1 * zpl_1_1 * zpl_2 * zpl_2_1 Licensing traits Patterns each covering a single trait occuring in licenses. Each of these patterns has the tag type:trait . * any_of * clause_retention * clause_reproduction * clause_advertising * clause_advertising_always * clause_non_endorsement * fsf_unlimited * fsf_unlimited_retention * license_label * license_label_trove * licensed_under * or_at_option * usage_rfn * version * version_later * version_later_paragraph * version_later_postfix * version_number * version_numberstring * version_prefix License combinations Patterns each covering a combination of multiple licenses. Each of these patterns has the tag type:combo . * perl License groups Patterns each covering either of multiple licenses. Each of these patterns has the tag type:group . * bsd * gnu * mit STRUCTURE The regexp patterns follows the DefHash specification, and more specifically the structure of Regexp::Pattern, defining access to one pattern per DefHash object, as `pat`. Additionally, (sub)patterns are available in plaintext form, as `pat.alt.*`. SUBJECT Each pattern targets one or more subjects, i.e. ways to directly or indirectly represent a license. Beware that not all pattern objects fully cover all subjects. trait Distinguishing trait or feature expressed in licensing strings, e.g. an advertising clause or granting "...or any later version." Coverage for this subject is currently rather weak. name Distinguishing name, e.g. usable in license grant. grant Text granting the license. license Text containing licensing terms. Texts containing both license grant and licensing terms (e.g. BSD- and MIT-style licensing) may be classified as either subject grant or subject license. This may change, as needs for distinction is better understood. SCOPE Each pattern can process material within some scope, i.e. a certain sample size of the full subject. As an example, use line-based processing, where patterns spanning multiple lines are not applicable. line Pattern typically found within a single line. Typically this means less than 70 characters within scope. sentence Pattern matching within a sentence. May span multiple lines, but not across multiple sentences. Typically this means no full-stop or colon within scope. paragraph Pattern matching distinguishing paragraph. May span multiple sentences, but not multiple paragraphs. Typically this means no newline within scope. section Pattern matching distinguishing section. May span multiple paragraphs, but not multiple sections. Typically this means blank line within scope. multisection Pattern may span multiple sections. TAGS Pattern defhashes optionally includes tags, which may help in selecting multiple related patterns. Tags are hierarchical, with `:` as separator, and may be extended without notice. Therefore take care to permit sub-parts when tag-matching, e.g. using a regex like ` /\Asome:tag(?:\z|:)/ `. * family:bsd * family:cc * family:gpl * family:mit * family:zlib Pattern covers a license part of a family of licenses. * license:contains:grant License mentions a preferred form for granting the license. This implies that license is commonly granted by use of a different (typically far shorter) text. * license:contains:license:* License contains another license. Wildcard is the key to corresponding license pattern. * license:contains:name:* License mentions name of another license. * license:is:grant License is commonly granted by stating the whole license. * type:usage:*:* Pattern covers a specific usage of a license. Third part is the key of the corresponding non-usage-specific pattern. Fourth part is the key of the corresponding usage trait pattern. * type:combo Pattern covers a combination of multiple licenses. * type:group Pattern covers either of multiple licenses. * type:singleversion:* Pattern covers a specific version of a license. Last part of tag is the key of the corresponding non-version-specific pattern. * type:trait Pattern covers a single trait occuring in licenses. * type:unversioned Pattern covers a license without versioning scheme. * type:versioned:decimal Pattern covers a license using decimal number versioning scheme. DEPRECATED TAGS Tags not documented in this POD, specifically non-hierarchical tags, are deprecated and will be dropped in a future release. AUTHOR Jonas Smedegaard `` COPYRIGHT AND LICENSE Copyright © 2016-2017 Jonas Smedegaard 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 3, 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, see . SIGNATURE000644001750001750 576513623771530 17126 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0This file contains message digests of all files listed in MANIFEST, signed via the Module::Signature module, version 0.83. To verify the content in this distribution, first make sure you have Module::Signature installed, then type: % cpansign -v It will check each file's integrity, as well as the signature's validity. If "==> Signature verified OK! <==" is not displayed, the distribution may already have been compromised, and you should not run its Makefile.PL or Build.PL. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 SHA256 54630b26ac2488456a8e79903b475f8c1ebed16effc8c9046a4883df928f5b04 COPYRIGHT SHA256 1667ed05f2fbe783d8df03678c8844f8d56c329221786e678bf56e26b37c13af CREDITS SHA256 d3adca0f2c5177bc628b4ea2cde2f1390878f502694fd0d290803d451bd71913 Changes SHA256 d46df20eb26f8c1ab0cfc5c3231eb9487f2ee673fdc016795f75c92ad1960fd6 INSTALL SHA256 15574b605feb4e8e6aa5acf0ab1ab3738f7a177f1024cff22c5e53ea41953f3a LICENSE SHA256 7f9bce68b77fea74cd501ea891bfdede7ec847316dc678bf63195ded7b277216 MANIFEST SHA256 480024e48de92f703eb9752d6617c7c821595e314131310940814facb52b6ebb META.json SHA256 ee9643e68d165412c1ce5af59b425288f462b8e3da3fd57f584dc9449be9b4c2 META.yml SHA256 bae4098934c68fc82b94ff66c6ddd21379cafc1429be31b9eaee02a4bc413bda Makefile.PL SHA256 10241bc52f927955446dcad0e6991a68ae1eacf86192110fce421d53d605ae68 README SHA256 a1984782c72d1b788f06c2a99b5a7fac0354ba9a991af4f05d786ff1f674f2d1 TODO SHA256 524a02d7cef09fbf4b9f3571b6d46ba0681ce9e08f904f89462b9955036f2309 dist.ini SHA256 f9cce7e3ef09e6a7f89a71d1fc498c0d9d19c450926aa92adef99e9a4424f32e doap.ttl SHA256 d5a9f38129782b937f231e64b8ed3fe03ec1a2abae0499bc3df275e2acb6e47e lib/Regexp/Pattern/License.pm SHA256 ba52ee395b044f5dab98d1282489c7cfbdfad4ee550f16e5f3c74a07b6d6b816 lib/Regexp/Pattern/License/Parts.pm SHA256 29bdd0333e36b2897ddf612a26063dae9923b988194db88ba3037ed678ccec7d t/01-basic.t SHA256 d579321d9a132524ea8d5de1890ec5fa244757d871baffeae3e261b7da48f3cc t/02-regexp-pattern.t SHA256 0bd5faa21cf8dfe5081b4a707fc4f434d5adc800e7a24a299fe3616a047d154a t/lib/MyTest.pm SHA256 f08bd1a7a4ad2ede13deecc907c13c3cdbae63a6052a99e588999bbe9f9abcf6 t/normalized.t SHA256 57ff0dfad784d483c6dad45294249413555d8430df146066787d1043f8cd4cda t/re2.t -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEn+Ppw2aRpp/1PMaELHwxRsGgASEFAl5P81YACgkQLHwxRsGg ASHTkxAAkCH5Mlzi2X3sb5olTVsSZE2IG/S7MdIgpNQ0dPiNx/hm+Vf2DS15SLOv nGJj9tnm5ZU2oR+/6FoQSwbLIFtG4xMLcr6OBGS36S7yOz1Ay3n/UPyOja/AHAR+ mBwcpETRL221BIOlRs6eZoAjEYXlQRnmWlZoH6WvzF9Wig6gs4xTmXPIs9iVmUJy Hf2SSbPj50RP1x49wSd6n+hRuLG5tziVaRwOcnS99CNjRkwyaOOWXHpp99eb5/IK PfwETt0CGIATp7iSBWIgaHhtUt2WHOsRdc41Lt7m2c6R2ez0M16FbWgkshy4GQgQ rNJWS3EONlZY0nUsqTFxAgMn8YCo1BU/ketLrt7XnaHOMAvVK3zneuV7B4CJNcO5 I0PC59JI42sPg8FXc9v08quDbdUYuQbZygxKeT5eKvFE/xanKPxcMjV6ofjVKF3w 59zyxNxvrXTHLwOTus2fg9naw8ij2Xl3v0+q9XHlBVPt0jQPp9trL2U84z2W0Kvp lAWI8fpwIoq3csSu0SJZ4RLyIhME5PL2fu6FVN3jEc1Kb3yP7payln0Lg4AgDqzN Sm+fLWgYwIAF8v+MYxIPDDfqmq23uvYGa5IPYKAiJyD96lstI5HtKWoWUfKvCenf dFl0Ugq7tDBtlq8ZxV3zzXuXlMzLIgnsRJVnq46CLjXnu08+XOc= =dy8z -----END PGP SIGNATURE----- TODO000644001750001750 1040513623771524 16340 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0Options: * Add pattern tolerance option: + none + case + punctuation + names + versioning + hyphenation - add hyphenation pattern at each syllable (or suppress original hyphenation): (?:[-·]\s*)? * Add pattern scope option. * Extend pattern named captures to include suffixes: + canonical - for the variation of a (sub)pattern preferred upstream + popular - skip obscure variations * Add pattern no-compile option, when compiling later e.g. with re::engine::RE2. Patterns: * tighten trait object version_number to not capture trailing zero segments '(?P\d(?:(?:\.0)?\.[1-9])*)(?:\.0)*' * relax trait object license_label to match 'license": "' * Cover license directories: + FSF: https://directory.fsf.org/wiki/Category:License + CC (retired): https://creativecommons.org/retiredlicenses/ + GNU: https://www.gnu.org/licenses/license-list.html + Fedora: https://fedoraproject.org/wiki/Licensing#SoftwareLicenses + SUSE: https://github.com/openSUSE/spec-cleaner + Microsoft (non-free): https://en.wikipedia.org/wiki/Shared_source + Wikipedia: https://en.wikipedia.org/wiki/Category:Copyright_licenses + Debian (website): https://www.debian.org/legal/licenses/ + Debian (wiki): https://wiki.debian.org/DFSGLicenses + W3C: https://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231 + PyPA/PyPI trove classifiers: https://pypi.org/classifiers/ + http://www.linfo.org/main_index.html * Cover traits: + Comment styles (most possible): https://en.wikipedia.org/wiki/Comparison_of_programming_languages_(syntax)#Comments + RFN notice: https://wiki.debian.org/Fonts/Bugs/rfn-violation + Patent-related clauses: http://en.swpat.org/wiki/Patent_clauses_in_software_licences * Cover P2P licensing: * https://wiki.p2pfoundation.net/P2P_Licensing * Locate and cover previous lesser-free licenses: * https://en.wikipedia.org/wiki/List_of_formerly_proprietary_software * Provide subject patterns grant license (not any) by default: + Cover either grant or license for all objects + Use subject patterns grant license (not any avilable) by default + Document promise of full coverage, and default. Metadata: * Tag classifications: * https://en.wikipedia.org/wiki/Free_license#Classification_and_licenses * Maybe link (where appropriate) to kemitchell: * https://writing.kemitchell.com/ * Limit metadata name to shortnames usable in grant statements: + Move wikidata keys to new metadata field + Move elaborate wikipedia captions to summary + Synthesize tldr directly from caption * Relax tag "versioned" to any (even unknown) version Testsuite: * Add author test checking validity of URLs. + Expand iri.alt.archive.FOO=BAR to https://web.archive.org/web/FOO/BAR * Add author test checking coverage of URL directories. * Test static patterns directly (i.e. not using Regexp::Pattern::re) * Distinguish between TODO (pending) and SKIP (irrelevant) Misc. * Cover a need of debian-policy to count popularity of licenses: * https://sources.debian.org/src/debian-policy/4.1.3.0/tools/license-count/?hl=63#L63 * Synthesize type:versioned iri from singleversion:$STEM as iri.alt.version.[/^$STEM_/] * Speedup synthesizing by processing simplest first * Improve grant synthesizing: + Expand to also cover lowercased names/captions + Expand to replace leading "Creative Commons" with "CC" + Expand to make leading "Creative Commons" (or "CC") optional + Reduce to skip duplicate names/captions (by mapping into a hash?) * Improve iri synthesizing: + Expand protocol https → http + Expand to alternate websites with same identifier * Fix join data from other licenses in code loop (not declared as a seed) e.g. for group gnu * Assemble DefHash during build. + Maybe use Regexp::Assemble at build-time (but then optionally disable to support deterministic builds) + Install as YAML (and JSON?) below /usr/share/misc, for reuse by non-Perl tools. * Turn most possible into seed patterns. Document new features: * Add SYNOPSIS * Document options: + subject - including enabling multiple subjects. + capture * Add note about "re" use...: adaptable by passing option C to L. dist.ini000644001750001750 20113623771524 17245 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0; Configuration file for Regexp::Pattern::License ; ;; class = 'Dist::Inkt::Profile::TOBYINK' ;; name = 'Regexp-Pattern-License' doap.ttl000644001750001750 13015213623771525 17343 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0@prefix cpan-uri: . @prefix dc: . @prefix doap: . @prefix doap-bugs: . @prefix doap-changeset: . @prefix doap-deps: . @prefix foaf: . @prefix rdfs: . @prefix xsd: . dc:contributor ; doap:release , , , . a doap:Version; dc:identifier "App-Licensecheck-v3.0.27"^^xsd:string; dc:issued "2016-11-23"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix detect license FSFULLR (was misdetected as bogus FSFULR)."; ], [ a doap-changeset:Change; rdfs:label "Clean m4 dnl comment marker."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait patterns clause_retention clause_reproduction clause_advertising clause_non_endorsement disclaimer."; ], [ a doap-changeset:Addition; rdfs:label "Add new group pattern bsd."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern openssl to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait pattern clause_advertising_always."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern cc_by_sa to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Relax license pattern cc_by_ca."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns cc_by cc_by_nc cc_by_nc_nd cc_by_nc_sa cc_by_nd cc_cc0 cc_sp."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix version identifier to use + only in machine-readable mode."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait pattern license_version."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait pattern license_prefix."; ], [ a doap-changeset:Change; rdfs:label "Tidy code: Drop noop code."; ], [ a doap-changeset:Change; rdfs:label "Emulate Regexp::Common -keep syntax to capture version number."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait patterns version_later version_later_paragraph version_later_postfix."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern afl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Relax detection of license GPL."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern agpl to Regexp::Pattern::License."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect license MPL-2.0 (was misdetected as MPL-2.0 or AGPL)."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern mpl to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns gfdl gfdl_niv."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern apache to Regexp::Pattern::License."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix avoid detection of GPL/LGPL fulltext (rarely if ever used as grant)."; ], [ a doap-changeset:Regression; rdfs:label "Drop too exotic licensing phrase, and corresponding test case."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns gpl lgpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Generalize and improve LGPL matching."; ], [ a doap-changeset:Addition; rdfs:label "Add new group pattern gnu."; ], [ a doap-changeset:Change; rdfs:label "Tighten regexes: Generalize abbreviated AGPL/LGPL/GPL matching."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern artistic to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add combo pattern perl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Improve license detections artistic perl."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern qpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns adobe_2006 adobe_glyph apafml to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns fsfap fsful fsfullr to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Introduce new modules: Pattern::License Pattern::License::Parts."; ], [ a doap-changeset:Addition; rdfs:label "Add new trait patterns fsf_unlimited fsf_unlimited_retention."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern ftl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns libpng zlib zlib_acknowledgement to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns cube eurosym."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns unicode_strict unicode_tou to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern sgi_b to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern python to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern public_domain to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern ms_pl to Regexp::Pattern::License."; ], [ a doap-changeset:Addition; rdfs:label "Add new license pattern ms_rl."; ], [ a doap-changeset:Change; rdfs:label "Use Regexp::Pattern::License for shortname resolving (with internal list as fallback until phased out)."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns cddl cecill cecill_1 cecill_1_1 cecill_2 cecill_2_1 cecill_b cecill_c epl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern beerware to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern llgpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Drop no longer used internal license shortname list."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern wtfpl to Regexp::Pattern::License."; ], [ a doap-changeset:Change; rdfs:label "Improve detection of license GPL."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns mit_new mit_new_materials mit_old mit_unspecified postgresql, and group pattern mit to Regexp::Pattern::License."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect licenses mit_old mit_unspecified (was misdetected as mit_new)."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns curl dsdp mit_oldstyle mit_oldstyle_disclaimer mit_oldstyle_permission ntp ntp_disclaimer."; ], [ a doap-changeset:Change; rdfs:label "Add license patterns bsd_2_clause bsd_3_clause bsd_4_clause to Regexp::Pattern::License."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.27"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.28"^^xsd:string; dc:issued "2016-11-25"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Documentation; rdfs:label "Fix typo in changelog."; ], [ a doap-changeset:Documentation; rdfs:label "Tidy changelog: Improve distinction between newly added and added-to-patternlist entries."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License: Remove stray bogus regexp."; ], [ a doap-changeset:Documentation; rdfs:label "Extend license pattern dsdp with alternate fedora name PetSC."; ], [ a doap-changeset:Change; rdfs:label "Drop unused and too broad trait pattern disclaimer."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern discl → asis_sw_name."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern discl_provide → asis_name_sw."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern provided_no_warranty → asis_expr_warranty."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern discl_disclaim → discl_name_warranties."; ], [ a doap-changeset:Change; rdfs:label "Tighten license pattern bsd-2-clause. Tidy Regexp::Pattern::License::Pattern: Rename pattern asis_sw_name → asis_sw_by_name."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten detection of ISC license (was misdetecting curl)."; ], [ a doap-changeset:Change; rdfs:label "Add license pattern ISC to Regexp::Pattern::License::Pattern."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten license pattern curl (was misdetecting other MIT variants)."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern promo_no_author → nopromo_neither."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Fix sort pattern list."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern retain_notice → note_invar."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern retain_notice_cond_discl → note_retain_notice_cond_discl."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern repro_notice_cond_discl → note_repro_notice_cond_discl."; ], [ a doap-changeset:Change; rdfs:label "Tidy Regexp::Pattern::License::Pattern: Rename pattern name_no_ad → nopromo_written_prior."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix tighten detection of mit_new license (was misdetecting other MIT flavors)."; ], [ a doap-changeset:Change; rdfs:label "List license mit_new alternate fedora name Modern Style with sublicense."; ], [ a doap-changeset:Addition; rdfs:label "Add new license pattern icu."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect dual licensing mit_new mit_old (and speed up partsing while at it)."; ], [ a doap-changeset:Addition; rdfs:label "Add new license patterns mit_enna mit_feh."; ], [ a doap-changeset:Addition; rdfs:label "Add new license pattern mit_advertising."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.28"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.29"^^xsd:string; dc:issued "2017-01-24"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Improve license patterns ftl mit_feh mit_enna cube eurosym libpng zlib zlib_acknowledgement."; ], [ a doap-changeset:Addition; rdfs:label "Add license patterns ofl aladdin rpsl mit_cmu mit_cmu_warranty."; ], [ a doap-changeset:Change; rdfs:label "Sort before enumerating ambiguously related combo licenses."; ], [ a doap-changeset:Change; rdfs:label "Streamline license parsing: Process loops of similar patterne."; ], [ a doap-changeset:Regression; rdfs:label "Drop gpl+aladdin combo license: Too exotic."; ], [ a doap-changeset:Documentation; rdfs:label "Document Regexp::Pattern::License as a private module."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix don't choke on unspecificed BSD license."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix detect BSD licenses as bare name."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.29"^^xsd:string. a doap:Version; dc:identifier "App-Licensecheck-v3.0.30"^^xsd:string; dc:issued "2017-07-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Add OSI test (including only currently succeeding OSI licenses for now)."; ], [ a doap-changeset:Change; rdfs:label "Improve license pattern agpl to skip english (not only french) cecill_2_1."; ], [ a doap-changeset:Change; rdfs:label "Improve license pattern epl."; ], [ a doap-changeset:Addition; rdfs:label "Add license pattern artistic_2."; ], [ a doap-changeset:Change; rdfs:label "clean_comments(): Relax to match varying amount of horizontal whitespace (not exactly one character) followed by any non-whitespace (not only a word character)."; ], [ a doap-changeset:Change; rdfs:label "clean_comments(): Tighten to match and strip only horizontal whitespace (not newlines)."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix license pattern ms_pl to detect MS Public License (not non-free MS Permissive License)."; ], [ a doap-changeset:Change; rdfs:label "Improve license pattern epl to detect some forms of \"or newer\"."; ], [ a doap-changeset:Bugfix; rdfs:label "Tighten license patterns afl agpl cdl gfdl gfdl_nivgpl lgpl llgpl mpl ms_pl ms_rl qpl sgi_b wtfpl mit to require descriptive prefix when only an abbreviation."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.30"^^xsd:string. a doap:Project; cpan-uri:x_help_wanted , ; dc:contributor ; doap-deps:runtime-requirement [ doap-deps:on "strictures 2"^^doap-deps:CpanId ], [ doap-deps:on "perl 5"^^doap-deps:CpanId ], [ doap-deps:on "re::engine::RE2 0"^^doap-deps:CpanId ]; doap-deps:test-requirement [ doap-deps:on "Regexp::Pattern 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::Builder::Module 0"^^doap-deps:CpanId; ], [ doap-deps:on "Test::Exception 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::More 0.98"^^doap-deps:CpanId ], [ doap-deps:on "Test::Requires 0"^^doap-deps:CpanId ], [ doap-deps:on "Test::Regexp::Pattern 0.003"^^doap-deps:CpanId; ], [ doap-deps:on "Try::Tiny 0"^^doap-deps:CpanId ]; doap:bug-database , ; doap:category [ rdfs:label "Sourcecode" ], [ rdfs:label "Licensing" ]; doap:created "2016-11-23"^^xsd:date; doap:developer ; doap:download-page ; doap:homepage , ; doap:license ; doap:maintainer ; doap:name "Regexp-Pattern-License"; doap:programming-language "Perl"; doap:release , , , , , , , , , , , , , , , ; doap:repository [ a doap:GitRepository; doap:browse ; ]; doap:shortdesc "regular expressions for legal licenses". a doap:Version; dc:identifier "Regexp-Pattern-License-v3.0.31"^^xsd:string; dc:issued "2017-08-15"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Packaging; rdfs:label "Initial independent CPAN release (based on App::Licensecheck)."; ], [ a doap-changeset:Change; rdfs:label "Use strict and warnings (not strictures)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.0.31"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.0"^^xsd:string; dc:issued "2018-02-09"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Addition; rdfs:label "Add hierarchical tags family:* type:*. Deprecate undocumented non-hierarchical tags."; ], [ a doap-changeset:Addition; rdfs:label "Add license patterns bdwgc bdwgc_matlab isc_minidiscl lgpl_bdwgc."; ], [ a doap-changeset:Addition; rdfs:label "Introduce alternate license patterns: pat.alt.flavor.artifact."; ], [ a doap-changeset:Documentation; rdfs:label "Improve POD: Rephrase sections about license combinations and license groups, to better disambiguate."; ], [ a doap-changeset:Documentation; rdfs:label "Improve POD: Fix list covered licenses aladdin icu mit_cmu mit_cmu_warranty ofl rpsl."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.0"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.100"^^xsd:string; dc:issued "2020-01-28"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "relax trait pattern licensed_under to cover more phrases"; ], [ a doap-changeset:Bugfix; rdfs:label "tighten object adobe_2006 pattern grant to avoid false positives"; ], [ a doap-changeset:Tests; rdfs:label "test actually used name pattern for adobe_2006 object"; ], [ a doap-changeset:Change; rdfs:label "relax trait pattern licensed_under to cover more phrases"; ], [ a doap-changeset:Change; rdfs:label "relax object gpl to match bogus name \"the GNU License\""; ], [ a doap-changeset:Change; rdfs:label "tighten trait object version_number to cover only single-digit segment"; ], [ a doap-changeset:Change; rdfs:label "relax trait pattern licensed_under to cover more phrases"; ], [ a doap-changeset:Change; rdfs:label "add Trove captions"; ], [ a doap-changeset:Change; rdfs:label "add trait object license_label_trove"; ], [ a doap-changeset:Change; rdfs:label "synthesize subject pattern grant from Trove caption"; ], [ a doap-changeset:Documentation; rdfs:label "update TODO"; ], [ a doap-changeset:Change; rdfs:label "relax leading bullet to be optional (might be misdetected as comment marker and stripped)"; ], [ a doap-changeset:Change; rdfs:label "relax slightly internal pattern copr_cond_discl"; ], [ a doap-changeset:Change; rdfs:label "extend subject license patterns for license objects apache_1 apache_1_1 apache_2 bsd_2_clause bsd_3_clause bsd_4_clause dsdp"; ], [ a doap-changeset:Change; rdfs:label "add tag license:contains:* for license objects apache_1 apache_1_1 bsd_3_clause bsd_4_clause dsdp"; ], [ a doap-changeset:Documentation; rdfs:label "add description for license objects apache_1 apache_1_1"; ], [ a doap-changeset:Regression; rdfs:label "temporarily drop subject license pattern from object afl (clashes with those of versioned child objects)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.100"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.101"^^xsd:string; dc:issued "2020-01-30"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Addition; rdfs:label "add objects cpl cpl_1 epl_1 epl_2 ipl ipl_1"; ], [ a doap-changeset:Documentation; rdfs:label "add description for object epl"; ], [ a doap-changeset:Change; rdfs:label "relax to match copyright sign as uppercase (C)"; ], [ a doap-changeset:Addition; rdfs:label "add objects sgi_b_1 sgi_b_1_1 sgi_b_2"; ], [ a doap-changeset:Addition; rdfs:label "add objects ofl_1 ofl_1_1"; ], [ a doap-changeset:Addition; rdfs:label "add objects mpl_1 mpl_1_1 mpl_2"; ], [ a doap-changeset:Addition; rdfs:label "add objects cddl_1 cddl_1_1"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_by_1 cc_by_2 cc_by_2_5 cc_by_3 cc_by_4"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_by_nc_1 cc_by_nc_2 cc_by_nc_2_5 cc_by_nc_3 cc_by_nc_4"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_by_nc_nd_1 cc_by_nc_nd_2 cc_by_nc_nd_2_5 cc_by_nc_nd_3 cc_by_nc_nd_4"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_by_nc_sa_1 cc_by_nc_sa_2 cc_by_nc_sa_2_5 cc_by_nc_sa_3 cc_by_nc_sa_4"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_by_nd_1 cc_by_nd_2 cc_by_nd_2_5 cc_by_nd_3 cc_by_nd_4"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_by_sa_1 cc_by_sa_2 cc_by_sa_2_5 cc_by_sa_3 cc_by_sa_4"; ], [ a doap-changeset:Addition; rdfs:label "add object cc_cc0_1"; ], [ a doap-changeset:Addition; rdfs:label "add objects cc_nc cc_nc_1 cc_nd cc_nd_1 cc_sa cc_sa_1"; ], [ a doap-changeset:Change; rdfs:label "synthesize more CC subject patterns"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.101"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.102"^^xsd:string; dc:issued "2020-02-10"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "add objects agpl_1 agpl_2 agpl_3"; ], [ a doap-changeset:Change; rdfs:label "add objects zpl zpl_1 zpl_1_1 zpl_2 zpl_2_1"; ], [ a doap-changeset:Change; rdfs:label "extend trait pattern licensed_under to cover more phrases"; ], [ a doap-changeset:Change; rdfs:label "extend license patterns cecill_1_1 cecill_2 cecill_2_1 to avoid misdetecting as GPL-2+"; ], [ a doap-changeset:Change; rdfs:label "stop custom-treat name-only as grant for select objects (some use for that now better done with tag license:is:grant)"; ], [ a doap-changeset:Bugfix; rdfs:label "tag objects bdwgc_matlab lgpl_bdwgc as type:unversioned (not bogusly type:versioned:decimal)"; ], [ a doap-changeset:Bugfix; rdfs:label "tag object cc_cc0_1 as type:singleversion:cc_cc0 (not bogusly type:versioned:decimal)"; ], [ a doap-changeset:Change; rdfs:label "extend license pattern cecill_1_1 to fully mask any_of"; ], [ a doap-changeset:Change; rdfs:label "tag objects license_label license_label_trove licensed_under as type:trait:grant:prefix (not type:trait)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.102"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.90"^^xsd:string; dc:issued "2018-03-29"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "Extend testsuite to cover most license patterns."; ], [ a doap-changeset:Change; rdfs:label "Fix metadata for objects cecill_b cecill_c: Use tag type:versioned:decimal (not type:unversioned)."; ], [ a doap-changeset:Change; rdfs:label "Relax object bsd_3_clause to match SPDX template."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix object fsfullr to match grant at all."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix relax object mit_new_materials to match license at all."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix strip duplicate tagline for object ntp, accidentally suppressing tag family:mit."; ], [ a doap-changeset:Addition; rdfs:label "Add object kevlin_henney (replacing recently added but broken isc_minidiscl)."; ], [ a doap-changeset:Change; rdfs:label "Tighten objects ntp ntp_disclaimer: Disambiguate from kevlin_henney."; ], [ a doap-changeset:Change; rdfs:label "Tighten object eurosym: Avoid wildcard."; ], [ a doap-changeset:Bugfix; rdfs:label "Tighten objects qpl sgi_b: Avoid bogusly match optional trailing FSF credit."; ], [ a doap-changeset:Change; rdfs:label "Tighten object postgresql: Limit to lowercase pattern (uppercase or varying case seemingly unused)."; ], [ a doap-changeset:Change; rdfs:label "Fix and extend metadata: Consistently use \"name\" for license shortname (i.e. single-word), \"caption\" for license name, and \"summary\" for non-name short description."; ], [ a doap-changeset:Change; rdfs:label "Extend metadata: Add iri."; ], [ a doap-changeset:Change; rdfs:label "Relax license objects agpl beerware gpl lgpl public_domain qpl: Detect uppercase variations."; ], [ a doap-changeset:Change; rdfs:label "Uniformly detect quotation marks."; ], [ a doap-changeset:Change; rdfs:label "Uniformly detect hyphens."; ], [ a doap-changeset:Change; rdfs:label "Uniformly detect sentence enumerators."; ], [ a doap-changeset:Change; rdfs:label "Uniformly detect sentence and paragraph endings."; ], [ a doap-changeset:Change; rdfs:label "Uniformly detect copyright sign."; ], [ a doap-changeset:Change; rdfs:label "Stringify patterns (as preparation for central compilation)."; ], [ a doap-changeset:Addition; rdfs:label "Generate default pattern dynamically, and provide alternative subject patterns statically as plaintext (also for non-Perl use). Drop alternative flavor pattern artifact."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix object cecill_b subject pattern license."; ], [ a doap-changeset:Addition; rdfs:label "Implement DefHash option \"subject\"."; ], [ a doap-changeset:Addition; rdfs:label "Add object json."; ], [ a doap-changeset:Addition; rdfs:label "Extend objects ms_pl ms_rl: Add subject pattern license."; ], [ a doap-changeset:Addition; rdfs:label "Extend object cc_cc0: Add subject pattern grant."; ], [ a doap-changeset:Change; rdfs:label "Implement per-object default pattern."; ], [ a doap-changeset:Addition; rdfs:label "Synthesize subject pattern license."; ], [ a doap-changeset:Addition; rdfs:label "Synthesize metadata caption, and subject pattern grant."; ], [ a doap-changeset:Change; rdfs:label "Synthesize metadata name."; ], [ a doap-changeset:Addition; rdfs:label "Synthesize metadata iri, and subject pattern iri."; ], [ a doap-changeset:Change; rdfs:label "Synthesize subject pattern trait."; ], [ a doap-changeset:Change; rdfs:label "Extend object public_domain: Improve subject pattern license."; ], [ a doap-changeset:Addition; rdfs:label "Extend object ftl: Add subject pattern license."; ], [ a doap-changeset:Addition; rdfs:label "Add objects jython python_2."; ], [ a doap-changeset:Change; rdfs:label "Tighten object openssl to differentiate from apache_1."; ], [ a doap-changeset:Addition; rdfs:label "Add objects bsl bsl_1."; ], [ a doap-changeset:Documentation; rdfs:label "Add TODO file to source, with a bunch of ideas."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.90"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.91"^^xsd:string; dc:issued "2018-03-30"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Addition; rdfs:label "Cover more types of generic grants (used mostly for llgpl and gpl)."; ], [ a doap-changeset:Addition; rdfs:label "Extend object llgpl: Add canonical iri."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix avoid alternate name MIT except for objects expat mit."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix resolve Fedora IRIs."; ], [ a doap-changeset:Addition; rdfs:label "Add objects aladdin_8 aladdin_9."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix metadata for object aladdin: Use tag type:versioned:decimal (not type:unversioned)."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.91"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.92"^^xsd:string; dc:issued "2018-04-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "Fix avoid chained regexes (seemingly unsupported in perl <5.16)."; ], [ a doap-changeset:Addition; rdfs:label "Add trait objects any_of licensed_under or_at_option version version_numberstring."; ], [ a doap-changeset:Change; rdfs:label "Stop cache compiled patterns internally: Not part of Regexp::Pattern spec and better handled externally when really needed."; ], [ a doap-changeset:Change; rdfs:label "Improve embedded summary (and related comment) for option \"subject\"."; ], [ a doap-changeset:Addition; rdfs:label "Implement DefHash option \"capture\"."; ], [ a doap-changeset:Documentation; rdfs:label "Update and slightly reorganize TODOs."; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.92"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.93"^^xsd:string; dc:issued "2019-06-08"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Fix metadata for object afl: Drop bogus tldr name. Slightly improve metadata for object adobe_glyph."; ], [ a doap-changeset:Change; rdfs:label "Avoid regex option /r to support Perl < 5.14."; ], [ a doap-changeset:Change; rdfs:label "Extend trait pattern licensed_under."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix DOS in pattern for leading bullets."; doap-bugs:fixes ; doap-changeset:thanks , ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.93"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.94"^^xsd:string; dc:issued "2019-06-12"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "Limit length of subpatterns BB (bullets) E (end of sentence) EE (end of paragraph) and lang, both for slight speedup and to limit risk of issues like Debian bug#926392."; ], [ a doap-changeset:Change; rdfs:label "Improve synthesized subject pattern grant: Use trait pattern licensed_under (not simpler copy)."; ], [ a doap-changeset:Change; rdfs:label "Synthesize subject pattern name."; ], [ a doap-changeset:Change; rdfs:label "Fix objects aladdin aladdin_8 aladdin_9: Add subject pattern license for singleversion licenses and drop for versioned license."; ], [ a doap-changeset:Tests; rdfs:label "Extend testsuite: Cover objects aladdin_8 aladdin_9."; ], [ a doap-changeset:Change; rdfs:label "Extend object bsl_1: Add subject pattern license. Improve metadata."; ], [ a doap-changeset:Change; rdfs:label "Relax synthesized name pattern to make commas optional (not strip them)."; ], [ a doap-changeset:Change; rdfs:label "Relax trait pattern version_prefix: Make whole pattern optional (not its use in version_numberstring)."; ], [ a doap-changeset:Change; rdfs:label "Extend trait patterns version version_later version_numberstring version_prefix: Cover scopes line sentence. Limit scope paragraph."; ], [ a doap-changeset:Change; rdfs:label "Relax trait pattern version_prefix: Include optional non-text prefix (not only in pattern version)."; ], [ a doap-changeset:Change; rdfs:label "Fix relax trait pattern version_later_postfix: Detect \"any above\"."; ], [ a doap-changeset:Change; rdfs:label "Fix relax trait pattern version_prefix: Tolerate leading only/either."; ], [ a doap-changeset:Bugfix; rdfs:label "Fix DOAP bug-database and repository URLs."; doap-bugs:fixes ; doap-changeset:thanks ; ], [ a doap-changeset:Packaging; rdfs:label "Fix declare test-requirement on Try::Tiny."; doap-bugs:fixes ; doap-changeset:thanks ; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.94"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.95"^^xsd:string; dc:issued "2020-01-03"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "relax many patterns to match british spelling of licence"; ], [ a doap-changeset:Change; rdfs:label "add alternate long caption for object bsd"; ], [ a doap-changeset:Change; rdfs:label "Add objects artistic_1 artistic_1_cl8 artistic_1_clarified artistic_1_perl."; ], [ a doap-changeset:Change; rdfs:label "Extend object afl to cover subject patterns grant license (not only name). Add objects afl_1_1 afl_1_2 afl_2 afl_2_1 afl_3."; ], [ a doap-changeset:Change; rdfs:label "relax internal bullet pattern to match up to 5 digits/chars"; ], [ a doap-changeset:Change; rdfs:label "relax trait pattern version_prefix and synthesized grant patterns to match more version strings; tighten synthesized grant patterns to avoid matching derived versions"; ], [ a doap-changeset:Change; rdfs:label "Improve object jython: Extend metadata."; ], [ a doap-changeset:Change; rdfs:label "Extend objects cecill cecill_1 cecill_1_1 cecill_2 cecill_2_1 cecill_b cecill_c. Add objects cecill_b_1 cecill_c_1."; ], [ a doap-changeset:Change; rdfs:label "Add object rpsl_1."; ], [ a doap-changeset:Change; rdfs:label "Add objects apache_1 apache_1_1 apache_2."; ], [ a doap-changeset:Change; rdfs:label "relax slightly trait pattern licensed_under to match strings with capital You"; ], [ a doap-changeset:Change; rdfs:label "synthesize patterns matching license granting declared as definition, i.e. in the form License: foo"; ], [ a doap-changeset:Change; rdfs:label "relax trait pattern licensed_under to match \"covered by\""; ], [ a doap-changeset:Change; rdfs:label "Extend object wtfpl. Add objects wtfpl_1 wtfpl_2 wtfnmfpl wtfnmfpl_1."; ], [ a doap-changeset:Bugfix; rdfs:label "declare alternate caption (not name) for object mit"; ], [ a doap-changeset:Bugfix; rdfs:label "tag object artistic as type:versioned:complex"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.95"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.96"^^xsd:string; dc:issued "2020-01-04"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Change; rdfs:label "internalize list of GNU locales"; ], [ a doap-changeset:Change; rdfs:label "add tags license:is:grant license:contains:grant license:contains:license:* license:contains:name:*"; ], [ a doap-changeset:Change; rdfs:label "extend object llgpl: Add alternate cliki iri"; ], [ a doap-changeset:Tests; rdfs:label "extend testsuite with Test::Regexp::Pattern tests"; ], [ a doap-changeset:Documentation; rdfs:label "add examples for object beerware"; ], [ a doap-changeset:Packaging; rdfs:label "test-require module Test::Regexp::Pattern"; ], [ a doap-changeset:Change; rdfs:label "add option engine"; ], [ a doap-changeset:Packaging; rdfs:label "recommend modules re::engine::PCRE2 re::engine::RE2"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.96"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.97"^^xsd:string; dc:issued "2020-01-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "fix: test if re::engine::* is available before testing use of those modules"; ], [ a doap-changeset:Packaging; rdfs:label "test-require module Test::Requires"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.97"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.98"^^xsd:string; dc:issued "2020-01-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Tests; rdfs:label "fix: test for the proper module for each test (arrgh)"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.98"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.1.99"^^xsd:string; dc:issued "2020-01-05"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Regression; rdfs:label "give up on auto-loading for now, and support only RE2 (not PCRE2)"; ], [ a doap-changeset:Packaging; rdfs:label "require (not recommend) re::engine::RE2, and stop recommend re::engine::PCRE2"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.1.99"^^xsd:string. a doap:Version; dc:identifier "Regexp-Pattern-License-v3.2.0"^^xsd:string; dc:issued "2020-02-21"^^xsd:date; doap-changeset:changeset [ doap-changeset:item [ a doap-changeset:Bugfix; rdfs:label "add trove caption for zpl (not zpl_1)"; ], [ a doap-changeset:Change; rdfs:label "introduce tags type:usage:*:* type:trait:usage:rfn"; ], [ a doap-changeset:Change; rdfs:label "add usage objects ofl_1_no_rfn ofl_1_rfn ofl_1_1_no_rfn ofl_1_1_rfn, and trait object usage_rfn"; ], [ a doap-changeset:Change; rdfs:label "add object ssleay"; ], [ a doap-changeset:Change; rdfs:label "relax license object bsd_3_clause to treat full-stop as optional"; ], [ a doap-changeset:Change; rdfs:label "relax generally to treat / as optional or replaced by space"; ]; ]; doap-changeset:released-by ; doap:file-release ; doap:revision "v3.2.0"^^xsd:string. a foaf:Person; foaf:mbox , ; foaf:name "Jonas Smedegaard"; foaf:nick "JONASS"; foaf:page . a foaf:Person; foaf:mbox ; foaf:name "Slaven Rezić"; foaf:nick "SREZIC"; foaf:page . a doap-bugs:Issue; doap-bugs:id "129784"^^xsd:string; doap-bugs:page . a doap-bugs:Issue; doap-bugs:id "129785"^^xsd:string; doap-bugs:page . foaf:mbox , ; foaf:name "Niels Thykier". dc:title "GNU General Public License version 3 or newer.". foaf:mbox ; foaf:name "Sandro Mani". 01-basic.t000644001750001750 130113623771524 17552 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/t#!perl use strict; use warnings; use Test::Exception; use Test::More 0.98; use Regexp::Pattern; dies_ok { re("License::foo") } "get unknown -> dies"; subtest "get" => sub { my $re = re("License::fsful"); ok $re; like( 'This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it.', $re ); unlike( 'foo', $re ); }; # TODO #subtest "get dynamic" => sub { # my $re3a = re( "License::re3", variant => 'A' ); # ok $re3a; # ok( '123-456' =~ $re3a ); # ok( !( 'foo' =~ $re3a ) ); # my $re3b = re( "License::re3", variant => 'B' ); # ok $re3b; # ok( '123-45-67890' =~ $re3b ); # ok( !( '123-456' =~ $re3b ) ); #}; done_testing; 02-regexp-pattern.t000644001750001750 231013623771524 21440 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/t#!perl use strict; use warnings; use Test::More tests => 11; use Test::Regexp::Pattern; use Regexp::Pattern; my $re = re( 'License::beerware', subject => 'name' ); # TODO: use embedded examples instead, when figuring out how... isa_ok( $re, 'Regexp' ); is( "$re", '(?^:$the?[Bb]eer$D?ware(?: License)?)' ); regexp_patterns_in_module_ok('Regexp::Pattern::License'); regexp_patterns_in_module_ok( 'Regexp::Pattern::License::Parts', 'parts' ); # subject regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { subject => 'name' }, 'with subject name' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { subject => 'grant' }, 'with subject grant' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { subject => 'license' }, 'with subject license' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { subject => 'iri' }, 'with subject iri' ); # capture regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { capture => 'named' }, 'with named capture' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { capture => 'numbered' }, 'with numbered capture' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { capture => 'no' }, 'without capture' ); normalized.t000644001750001750 24513413623771524 20475 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/t#!perl use utf8; use strict; use warnings; use lib 't/lib'; use MyTest tests => 160; license_covered( 'adobe_2006', name => 'Adobe-2006 License', text => < 'Adobe Glyph List License', text => < 'Academic Free License', # TODO: readd when children cover same region # license => < [qw(subject_license)] ); license_covered( 'afl_1_1', name => 'Academic Free License version 1.1', grant => 'Licensed under the Academic Free License version 1.1.', license => 'The Academic Free License applies to any original work', TODO => [qw(grant_grant name_name)] ); license_covered( 'afl_1_2', name => 'Academic Free License version 1.2', grant => 'Licensed under the Academic Free License version 1.2', license => 'This Academic Free License applies to any original work', TODO => [qw(grant_grant name_name)] ); license_covered( 'afl_2', name => 'Academic Free License version 2.0', grant => 'Licensed under the Academic Free License version 2.0', license => < [qw(grant_grant name_name)] ); license_covered( 'afl_2_1', name => 'Academic Free License version 2.1', grant => 'Licensed under the Academic Free License version 2.1', license => < [qw(grant_grant name_name)] ); license_covered( 'afl_3', name => 'Academic Free License version 3.0', grant => 'Licensed under the Academic Free License version 3.0', license => < 'GNU Affero General Public License', grant => < [qw(subject_license)] ); license_covered( 'agpl_1', name => 'Affero General Public License, Version 1', text => < [qw(grant_grant)] ); license_covered( 'agpl_2', name => 'Affero General Public License, Version 2', text => < [qw(grant_grant)] ); license_covered( 'agpl_3', name => 'GNU Affero General Public License, Version 3', grant => < < [qw()] ); license_covered( 'aladdin', name => 'Aladdin Free Public License', grant => < [qw(subject_license)] ); license_covered( 'aladdin_8', name => 'Aladdin Free Public License', grant => < < 'Aladdin Free Public License', grant => < < 'Apache License', iri => 'https://www.apache.org/licenses/LICENSE-2.0', grant => < [qw(subject_license not_grant_iri)] ); license_covered( 'apafml', name => 'Adobe Postscript AFM License', text => < 'Artistic License', TODO => [qw(subject_license)] ); license_covered( 'artistic_1', name => 'Artistic License 1.0', iri => 'https://opensource.org/licenses/artistic-license-1.0', text => < [qw(iri_iri subject_license)] ); license_covered( 'artistic_1_cl8', name => 'Artistic-1.0-cl8', iri => 'https://spdx.org/licenses/Artistic-1.0-cl8', text => < [qw(subject_license not_iri_name)] ); license_covered( 'artistic_1_clarified', name => 'Clarified Artistic License', iri => 'http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/', text => < 'Artistic License 1.0 (Perl)', iri => 'http://dev.perl.org/licenses/artistic.html', text => < [qw(name_name subject_license)] ); license_covered( 'artistic_2', name => 'Artistic License 2.0', iri => 'http://www.perlfoundation.org/artistic_license_2_0', text => < 'bdwgc', iri => 'http://www.hboehm.info/gc/license.txt', text => < [qw(name_name)] ); license_covered( 'bdwgc_matlab', text => < [qw(subject_iri)] ); license_covered( 'bsd_2_clause', name => 'BSD 2-Clause', text => < 'BSD 3-Clause', text => < 'BSD 4-Clause', text => <. 4. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EOF TODO => [qw(name_name)] ); license_covered( 'bsl', name => 'Boost Software License', iri => 'http://www.boost.org/LICENSE_1_0.txt', TODO => [qw(subject_license)] ); license_covered( 'bsl_1', name => 'Boost Software License 1.0', iri => 'http://www.boost.org/LICENSE_1_0.txt', text => < [qw(text_license not_iri_name)] ); license_covered( 'cc_by', name => 'Creative Commons Attribution 4.0 International Public License', TODO => [qw(subject_license)] ); license_covered( 'cc_by_1', name => 'Creative Commons Attribution 1.0 Generic License', iri => 'https://creativecommons.org/licenses/by/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_2', name => 'Creative Commons Attribution 2.0 Generic License', iri => 'https://creativecommons.org/licenses/by/2.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_2_5', name => 'Creative Commons Attribution 2.5 Generic License', iri => 'https://creativecommons.org/licenses/by/2.5/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_3', name => 'Creative Commons Attribution 3.0 Unported License', iri => 'https://creativecommons.org/licenses/by/3.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_4', name => 'Creative Commons Attribution 4.0 International License', iri => 'https://creativecommons.org/licenses/by/4.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc', name => 'Creative Commons Attribution-NonCommercial 4.0 International Public License', TODO => [qw(subject_license)] ); license_covered( 'cc_by_nc_1', name => 'Creative Commons Attribution-NonCommercial 1.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nc/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_2', name => 'Creative Commons Attribution-NonCommercial 2.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nc/2.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_2_5', name => 'Creative Commons Attribution-NonCommercial 2.5 Generic License', iri => 'https://creativecommons.org/licenses/by-nc/2.5/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_3', name => 'Creative Commons Attribution-NonCommercial 3.0 Unported License', iri => 'https://creativecommons.org/licenses/by-nc/3.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_4', name => 'Creative Commons Attribution-NonCommercial 4.0 International License', iri => 'https://creativecommons.org/licenses/by-nc/4.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_nd', name => 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License', TODO => [qw(subject_license)] ); license_covered( 'cc_by_nc_nd_1', name => 'Creative Commons Attribution-NoDerivs-NonCommercial 1.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nd-nc/1.0/', grant => < [qw(iri_iri)] ); license_covered( 'cc_by_nc_nd_2', name => 'Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nc-nd/2.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_nd_2_5', name => 'Creative Commons Attribution-NonCommercial-NoDerivs 2.5 Generic License', iri => 'https://creativecommons.org/licenses/by-nc-nd/2.5/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_nd_3', name => 'Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License', iri => 'https://creativecommons.org/licenses/by-nc-nd/3.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_nd_4', name => 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License', iri => 'https://creativecommons.org/licenses/by-nc-nd/4.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_sa', name => 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License', TODO => [qw(subject_license)] ); license_covered( 'cc_by_nc_sa_1', name => 'Creative Commons Attribution-NonCommercial-ShareAlike 1.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nc-sa/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_sa_2', name => 'Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nc-sa/2.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_sa_2_5', name => 'Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Generic License', iri => 'https://creativecommons.org/licenses/by-nc-sa/2.5/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_sa_3', name => 'Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License', iri => 'https://creativecommons.org/licenses/by-nc-sa/3.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nc_sa_4', name => 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License', iri => 'https://creativecommons.org/licenses/by-nc-sa/4.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nd', name => 'Creative Commons Attribution-NoDerivatives 4.0 International Public License', TODO => [qw(subject_license)] ); license_covered( 'cc_by_nd_1', name => 'Creative Commons Attribution-NoDerivs 1.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nd/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nd_2', name => 'Creative Commons Attribution-NoDerivs 2.0 Generic License', iri => 'https://creativecommons.org/licenses/by-nd/2.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nd_2_5', name => 'Creative Commons Attribution-NoDerivs 2.5 Generic License', iri => 'https://creativecommons.org/licenses/by-nd/2.5/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nd_3', name => 'Creative Commons Attribution-NoDerivs 3.0 Unported License', iri => 'https://creativecommons.org/licenses/by-nd/3.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_nd_4', name => 'Creative Commons Attribution-NoDerivatives 4.0 International License', iri => 'https://creativecommons.org/licenses/by-nd/4.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_sa', name => 'Creative Commons Attribution-ShareAlike 4.0 International Public License', TODO => [qw(subject_license)] ); license_covered( 'cc_by_sa_1', name => 'Creative Commons Attribution-ShareAlike 1.0 Generic License', iri => 'https://creativecommons.org/licenses/by-sa/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_sa_2', name => 'Creative Commons Attribution-ShareAlike 2.0 Generic License', iri => 'https://creativecommons.org/licenses/by-sa/2.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_sa_2_5', name => 'Creative Commons Attribution-ShareAlike 2.5 Generic License', iri => 'https://creativecommons.org/licenses/by-sa/2.5/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_sa_3', name => 'Creative Commons Attribution-ShareAlike 3.0 Unported License', iri => 'https://creativecommons.org/licenses/by-sa/3.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_by_sa_4', name => 'Creative Commons Attribution-ShareAlike 4.0 International License', iri => 'https://creativecommons.org/licenses/by-sa/4.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_cc0', name => 'Creative Commons Zero 1.0 Universal', iri => 'https://en.wikipedia.org/wiki/Creative_Commons_license#Zero_/_public_domain', grant => 'To the extent possible under law, the person who associated CC0 with this work has waived all copyright and related or neighboring rights to this work', TODO => [qw(subject_license)] ); license_covered( 'cc_cc0_1', name => 'Creative Commons Zero 1.0 Universal', iri => 'https://en.wikipedia.org/wiki/Creative_Commons_license#Zero_/_public_domain', grant => 'To the extent possible under law, the person who associated CC0 with this work has waived all copyright and related or neighboring rights to this work', TODO => [qw(name_name subject_license)] ); license_covered( 'cc_nc', name => 'Creative Commons NonCommercial 1.0 Generic Public License', TODO => [qw(iri_iri subject_license)] ); license_covered( 'cc_nc_1', name => 'Creative Commons NonCommercial 1.0 Generic License', iri => 'https://creativecommons.org/licenses/nc/1.0/', grant => < [qw(iri_iri)] ); license_covered( 'cc_nd', name => 'Creative Commons NoDerivs 1.0 Generic Public License', TODO => [qw(iri_iri subject_license)] ); license_covered( 'cc_nd_1', name => 'Creative Commons NoDerivs 1.0 Generic License', iri => 'https://creativecommons.org/licenses/nd/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_sa', name => 'Creative Commons ShareAlike 1.0 Generic Public License', TODO => [qw(iri_iri subject_license)] ); license_covered( 'cc_sa_1', name => 'Creative Commons ShareAlike 1.0 Generic License', iri => 'https://creativecommons.org/licenses/sa/1.0/', grant => < [qw(not_grant_iri)] ); license_covered( 'cc_sp', name => 'Creative Commons Sampling Plus 1.0', TODO => [qw(subject_iri subject_license)] ); license_covered( 'cddl', name => 'Common Development and Distribution License', TODO => [qw(subject_license)] ); license_covered( 'cddl_1', name => 'Common Development and Distribution License 1.0', text => < [qw(subject_iri)] ); license_covered( 'cddl_1_1', name => 'Common Development and Distribution License 1.1', text => < [qw(subject_iri)] ); license_covered( 'cecill', name => 'CeCILL Free Software License Agreement', text => < 'CeCILL Free Software License Agreement v1.0', iri => 'https://cecill.info/licences/Licence_CeCILL_V1-fr.html', text => < [qw(name_name)] ); license_covered( 'cecill_1_1', name => 'CeCILL Free Software License Agreement v1.1', iri => 'https://cecill.info/licences/Licence_CeCILL_V1.1-US.html', text => < [qw(name_name)] ); license_covered( 'cecill_2', name => 'CeCILL Free Software License Agreement v2.0', iri => 'https://cecill.info/licences/Licence_CeCILL_V2-fr.html', text => < [qw(name_name)] ); license_covered( 'cecill_2_1', name => 'CeCILL Free Software License Agreement v2.1', iri => 'https://cecill.info/licences/Licence_CeCILL_V2.1-fr.html', grant => < < [qw(name_name)] ); license_covered( 'cecill_b', name => 'CeCILL-B Free Software License Agreement', iri => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.html', grant => < < [qw(not_iri_name)] ); license_covered( 'cecill_b_1', name => 'CeCILL-B License 1.0', iri => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.html', grant => < < [qw(not_iri_name)] ); license_covered( 'cecill_c', name => 'CeCILL-C Free Software License Agreement', iri => 'https://cecill.info/licences/Licence_CeCILL-C_V1-fr.html', grant => < < [qw(not_iri_name)] ); license_covered( 'cecill_c_1', name => 'CeCILL-C License 1.0', iri => 'https://cecill.info/licences/Licence_CeCILL-C_V1-fr.html', grant => < < [qw(not_iri_name)] ); license_covered( 'cpl', name => 'Common Public License', TODO => [qw(not_iri_name subject_license)] ); license_covered( 'cpl_1', name => 'Common Public License 1.0', text => < [qw(not_iri_name subject_iri)] ); license_covered( 'cube', name => 'Cube License', text => < 'curl License', text => < 'DSDP License', text => < 'Eclipse Public License', text => < [qw(subject_license)] ); license_covered( 'epl_1', name => 'Eclipse Public License 1.0', text => < [qw(not_iri_name subject_iri)] ); license_covered( 'epl_2', name => 'Eclipse Public License 2.0', text => < [qw(not_iri_name subject_iri)] ); license_covered( 'eurosym', name => 'Eurosym License', text => < 'FSF All Permissive License', iri => 'https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html', text => < 'FSF Unlimited License', text => < 'FSF Unlimited License (with License Retention)', text => < [qw(name_name)] ); license_covered( 'ftl', name => 'FreeType Project License', text => < 'GNU Free Documentation License', text => < [qw(subject_license)] ); license_covered( 'isc', name => 'ISC License', text => < 'ICU License', text => < 'The Software shall be used for Good, not Evil.', ); license_covered( 'jython', name => 'Jython License', text => '4. PSF is making Jython available to Licensee on an "AS IS" basis.', ); license_covered( 'kevlin_henney', text => < [qw(subject_iri)] ); license_covered( 'lgpl', name => 'GNU Library General Public License', text => < [qw(subject_license)] ); license_covered( 'lgpl_bdwgc', text => < [qw(subject_iri)] ); license_covered( 'llgpl', name => 'Lisp Lesser General Public License', iri => 'http://opensource.franz.com/preamble.html', text => < [qw(subject_license)] ); license_covered( 'libpng', name => 'libpng License', text => < [qw(name_name)], ); license_covered( 'mit_advertising', text => < 'CMU License', text => < < 'enna License', text => < 'feh License', text => < 'MIT License', iri => 'http://www.jclark.com/xml/copying.txt', text => < < [qw(subject_iri)] ); license_covered( 'mit_old', text => < [qw(subject_iri)] ); license_covered( 'mit_oldstyle', text => < < < 'Mozilla Public License', iri => 'https://www.mozilla.org/MPL', text => < [qw(subject_license)] ); license_covered( 'mpl_1', name => 'Mozilla Public License 1.0', text => < [qw(subject_iri)] ); license_covered( 'mpl_1_1', name => 'Mozilla Public License 1.1', text => < [qw(subject_iri)] ); license_covered( 'mpl_2', name => 'Mozilla Public License 2.0', text => < [qw(subject_iri)] ); license_covered( 'ms_pl', name => 'Microsoft Public License', iri => 'https://en.wikipedia.org/wiki/Shared_source#Microsoft_Public_License_(Ms-PL)', ); license_covered( 'ms_rl', name => 'Microsoft Reciprocal License', iri => 'https://en.wikipedia.org/wiki/Shared_source#Microsoft_Reciprocal_License_(Ms-RL)', ); license_covered( 'ntp', name => 'NTP License', text => <> not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. <> makes no representations about the suitability this software for any purpose. It is provided "as is" without express or implied warranty. EOF ); license_covered( 'ntp_disclaimer', text => < [qw(subject_iri)] ); license_covered( 'ofl', name => 'SIL Open Font License', iri => 'http://scripts.sil.org/OFL', TODO => [qw(subject_license)] ); license_covered( 'ofl_1', name => 'SIL Open Font License 1.0', text => < [qw(subject_iri)] ); license_covered( 'ofl_1_1', name => 'SIL Open Font License 1.1', text => < [qw(subject_iri)] ); license_covered( 'openssl', name => 'OpenSSL License', text => <<'EOF', 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com). Original SSLeay License Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. EOF ); license_covered( 'postgresql', name => 'PostgreSQL License', text => < 'http://www.linfo.org/publicdomain.html', grant => < [qw(subject_license)] ); license_covered( 'python', name => 'Python License', TODO => [qw(name_name subject_license)] ); license_covered( 'python_2', name => 'Python Software Foundation License version 2', text => '4. PSF is making Python available to Licensee on an "AS IS" basis.', ); license_covered( 'qpl', name => 'Q Public License', TODO => [qw(subject_license)] ); license_covered( 'rpsl', name => 'RealNetworks Public Source License', TODO => [qw(subject_license)] ); license_covered( 'rpsl_1', name => 'RealNetworks Public Source License 1.0', text => < 'SGI Free Software License B', iri => 'https://www.sgi.com/projects/FreeB/', TODO => [qw(subject_license not_iri_name)] ); license_covered( 'sgi_b_1', name => 'SGI Free Software License B v1.0', text => < [qw(subject_iri)] ); license_covered( 'sgi_b_1_1', name => 'SGI Free Software License B v1.1', text => < [qw(subject_iri)] ); license_covered( 'sgi_b_2', name => 'SGI Free Software License B v2.0', text => < [qw(subject_iri)] ); license_covered( 'unicode_strict', text => < [qw(subject_iri)] ); license_covered( 'unicode_tou', name => 'Unicode Terms of Use', text => < 'Do What The F*ck You Want To Public License', grant => 'This input method table is licensed under the WTFPL.', ); license_covered( 'wtfpl_1', name => 'Do What The Fuck You Want To Public License, Version 1', iri => 'http://cvs.windowmaker.org/co.php/wm/COPYING.WTFPL', text => < [qw(name_name not_iri_name)] ); license_covered( 'wtfpl_2', name => 'Do What The Fuck You Want To Public License, Version 2', iri => 'http://www.wtfpl.net/', grant => < < [qw(name_name not_iri_name)] ); license_covered( 'wtfnmfpl', name => "Do What The Fuck You Want To But It's Not My Fault Public License", TODO => [qw(name_name subject_license)] ); license_covered( 'wtfnmfpl_1', name => "Do What The Fuck You Want To But It's Not My Fault Public License v1", iri => 'http://www.adversary.org/wp/2013/10/14/do-what-the-fuck-you-want-but-its-not-my-fault/', text => < 'zlib License', iri => 'http://zlib.net/zlib_license.html', text => < [qw(not_iri_name)] ); license_covered( 'zlib_acknowledgement', name => 'zlib/libpng License with Acknowledgement', text => < 'ZPL License', TODO => [qw(subject_license)] ); license_covered( 'zpl_1', name => 'Zope Public License 1.0', iri => 'http://www.zope.org/Resources/ZPL', TODO => [qw(subject_license)] ); license_covered( 'zpl_1_1', name => 'Zope Public License 1.1', iri => 'https://spdx.org/licenses/ZPL-1.1', TODO => [qw(not_iri_name subject_license)] ); license_covered( 'zpl_2', name => 'Zope Public License 2.0', iri => 'http://old.zope.org/Resources/License/ZPL-1.1', TODO => [qw(subject_license)] ); license_covered( 'zpl_2_1', name => 'Zope Public License 2.1', iri => 'http://old.zope.org/Resources/ZPL/', TODO => [qw(subject_license)] ); license_covered( 'bsd', name => 'BSD 4-Clause', iri => 'https://en.wikipedia.org/wiki/BSD_licenses', text => <. 4. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EOF TODO => [qw(not_iri_name)] ); license_covered( 'mit', name => 'MIT License', iri => 'https://en.wikipedia.org/wiki/MIT_License', grant => 'Released under the MIT license', TODO => [qw(name_name subject_license)] ); done_testing; re2.t000644001750001750 274013623771524 16753 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/t#!perl use strict; use warnings; use Test::More tests => 11; use Test::Regexp::Pattern; use Regexp::Pattern; use Test::Requires { 're::engine::RE2' => 0 }; my $re = re( 'License::beerware', engine => 'RE2', subject => 'name' ); isa_ok( $re, 're::engine::RE2' ); is( "$re", '(?-ims:$the?[Bb]eer$D?ware(?: License)?)' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2' }, 'using RE2' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License::Parts', { engine => 'RE2' }, 'parts using RE2' ); # subject regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', subject => 'name' }, 'using RE2 with subject name' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', subject => 'grant' }, 'using RE2 with subject grant' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', subject => 'license' }, 'using RE2 with subject license' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', subject => 'iri' }, 'using RE2 with subject iri' ); # capture regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', capture => 'named' }, 'using RE2 with named capture' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', capture => 'numbered' }, 'using RE2 with numbered capture' ); regexp_patterns_in_module_ok( 'Regexp::Pattern::License', { engine => 'RE2', capture => 'no' }, 'using RE2 without capture' ); MyTest.pm000644001750001750 761013623771524 20430 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/t/libpackage MyTest; my $CLASS = __PACKAGE__; use open ':std', ':encoding(utf8)'; use parent qw(Test::Builder::Module); @EXPORT = qw(license_covered done_testing); use strict; use warnings; use Try::Tiny; use Regexp::Pattern::License; use Regexp::Pattern; my %coverage = ( name => { hit => [qw(name)], miss => [qw(iri)] }, iri => { hit => [qw(iri)], miss => [qw(grant license)] }, grant => { hit => [qw(grant)], miss => [qw(iri name)] }, license => { hit => [qw(text)], miss => [qw(iri name)] }, ); my @subjects = sort keys %coverage; # main pattern is the "best" available, according to this custom priority list my @subjectstack = qw(license grant name iri trait); my @scopestack = qw(line sentence paragraph); sub license_covered (@) { my ( $id, %data ) = @_; my $tb = $CLASS->builder; # $tb->todo_start( join ' ', @{ $data{TODO} } ) # if ( $data{TODO} and @{ $data{TODO} } ); $tb->subtest( "license $id; check coverage", \&_license_covered, @_ ); # $tb->todo_end # if ( $data{TODO} and @{ $data{TODO} } ); } sub _license_covered (@) { my ( $id, %data ) = @_; my $tb = $CLASS->builder; my %todo; for ( @{ $data{TODO} } ) { $todo{$_} = 1; } my $pat = $Regexp::Pattern::License::RE{$id}; $tb->ok( $pat, 'pattern object exists' ) or return; $tb->is_eq( ref($pat), 'HASH', 'pattern object is a hash' ) or return; my @pat = grep {/^pat(?:\.alt\.|[(])?/} keys %{$pat}; $tb->isnt_num( scalar @pat, 0, "license $id: pattern(s) exist" ) or return; my @pat_subject = grep { $$pat{"pat.alt.subject.$_"} } @subjectstack; $tb->ok( scalar @pat_subject, "license $id; subject pattern(s) exist" ) or return; my $gen_subjects = $$pat{gen_args}{subject}{schema}[2]; $tb->ok( scalar @{$gen_subjects}, 'dynamic pattern list exists' ) or return; # TODO: check for uncovered subjects my $re = try { re("License::$id") }; unless ( $tb->ok( $re, "license $id; use" ) ) { return; } $tb->is_eq( ref($re), 'Regexp', "license $id; pattern is a Regexp" ) or $re = qr/$re/; for my $subject (@subjects) { unless ( $coverage{$subject} ) { if ( $todo{"subject_$subject"} ) { $tb->todo_skip( "license $id; subject $subject not yet supported"); } else { $tb->ok( 0, "dynamic pattern $subject is supported" ); } next; } my $re_subject = try { re( "License::$id", subject => $subject ) }; $tb->todo_start if ( $todo{"subject_$subject"} ); unless ( $tb->ok( $re_subject, "license $id; use subject_$subject" ) ) { $tb->todo_end if ( $todo{"subject_$subject"} ); next; } $tb->todo_end if ( $todo{"subject_$subject"} ); $tb->is_eq( ref($re_subject), 'Regexp', "license $id; pattern is a Regexp" ) or $re_subject = qr/$re_subject/; _covered( $id, 'subject', $re_subject, $subject, \%data, \%todo ); } } sub _covered (@) { my ( $id, $type, $re, $subject, $dataref, $todoref ) = @_; my %data = %{$dataref}; my %todo = %{$todoref}; my $tb = $CLASS->builder; for ( @{ $coverage{$subject}{hit} } ) { unless ( $data{$_} ) { $tb->todo_skip("license $id; dataset $_ missing"); next; } $tb->todo_start if ( $type eq 'main' ? $todo{$_} : $todo{"${_}_$subject"} ); $tb->like( $data{$_}, $re, $type eq 'main' ? "license $id; matches pattern $_" : "license $id; matches pattern ${_}_$subject" ); $tb->todo_end if ( $type eq 'main' ? $todo{$_} : $todo{"${_}_$subject"} ); } for ( @{ $coverage{$subject}{miss} } ) { unless ( $data{$_} ) { $tb->todo_skip("license $id; dataset $_ missing"); next; } $tb->todo_start if ( $type eq 'main' ? $todo{"not_$_"} : $todo{"not_${_}_$subject"} ); $tb->unlike( $data{$_}, $re, $type eq 'main' ? "license $id; misses pattern not_$_" : "license $id; misses pattern not_${_}_$subject" ); $tb->todo_end if ( $type eq 'main' ? $todo{"not_$_"} : $todo{"not_${_}_$subject"} ); } } sub done_testing () { my $tb = $CLASS->builder; $tb->done_testing; } 1; License.pm000644001750001750 43053213623771524 23234 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/lib/Regexp/Patternpackage Regexp::Pattern::License; use utf8; use strict; use warnings; use Regexp::Pattern::License::Parts; =head1 NAME Regexp::Pattern::License - Regular expressions for legal licenses =head1 VERSION Version v3.2.0 =cut our $VERSION = version->declare("v3.2.0"); =head1 DESCRIPTION L provides a hash of regular expression patterns related to legal software licenses. L is a convention for organizing reusable regex patterns. =cut # internal patterns compiled into patterns # * must be unique, to not collide at their final use in gen_pat sub # * must be a unit, so that e.g. suffix "?" applies to whole chunk my $B = '[*]'; # bullet my $BB = '[*1-9. ]'; # start-of-sentence bullet or count my $C = '[(c)]'; # copyright mark my $CQ = '[:"]'; # colon and maybe one or two quotes my $D = '[-]'; # dash my $DD = '[ - ]'; # dash with space around my $E = '[ ]'; # end-of-sentence space my $EE = '[ ]'; # end-of-paragraph space my $F = '[.]'; # full stop my $HT = '[http://]'; # http/https protocol my $ND = '[1-9-]'; # number or dash my $Q = '["]'; # quote my $QA = "\['\]"; # apostrophe my $QB = '["*]'; # quote or bullet my $SD = '[ -]'; # space or dash my $SL = '[/]'; # space or slash or none my @_re = ( [ qr/\Q$BB/, '(?:\W{0,5}\S{0,2}\W{0,3})' ], [ qr/\Q$C/, '(?:©|\([Cc]\))' ], [ qr/\Q$CQ/, '(?::\W{0,2})' ], [ qr/\Q$D/, '[–-]' ], [ qr/\Q$DD/, '(?: [–—-]{1,2} )' ], [ qr/\Q$E/, '(?:\s{1,3})' ], [ qr/\Q$EE/, '(?:\s{1,3})' ], [ qr/\Q$F/, '[.]' ], [ qr/\Q$HT/, '(?:(?:https?:?)?(?://)?)' ], [ qr/\Q$ND/, '[\d–-]' ], [ qr/\Q$Q/, '(?:\W{0,2})' ], [ qr/\Q$QB/, '(?:\W{0,2})' ], [ qr/\Q$SD/, '[ –-]' ], [ qr/\Q$SL/, '(?:[ /]?)' ], [ qr/\[à\]/, '(?:[àa]?)' ], [ qr/\[é\]/, '(?:[ée]?)' ], [ qr/\[è\]/, '(?:[èe]?)' ], ); my %P; while ( my ( $key, $val ) = each %Regexp::Pattern::License::Parts::RE ) { $P{$key} = $val->{pat}; } my $the = '(?:[Tt]he )'; my $cc_no_law_firm = "CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES$F "; my $cc_dist_no_rel = "DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY${D}CLIENT RELATIONSHIP$F "; my $cc_dist_no_rel_draft = "DISTRIBUTION OF THIS DRAFT LICENSE DOES NOT CREATE AN ATTORNEY${D}CLIENT RELATIONSHIP$F "; my $cc_dist_no_rel_doc = "DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY${D}CLIENT RELATIONSHIP$F "; my $cc_info_asis_discl = "CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN $Q?AS${D}IS$Q? BASIS$F " . "CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, " . "AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE$F"; my $cc_info_asis_discl_doc = "CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN $Q?AS${D}IS$Q? BASIS$F " . "CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, " . "AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER$F"; my $cc_work_protected = "THE WORK \\(?AS DEFINED BELOW\\)? IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE \\(?$Q?CCPL$Q? OR $Q?LICENSE$Q?\\)?$F " . "THE WORK IS PROTECTED BY COPYRIGHT AND${SL}OR OTHER APPLICABLE LAW$F "; my $cc_auth_lic_prohib = "ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE IS PROHIBITED$F$EE?"; my $cc_auth_lic_copylaw_prohib = "ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED$F$EE?"; my $laws_confer = 'The laws of most jurisdictions throughout the world automatically confer'; my $cc_intro_1 = "(?:(?:\\S+ )?$cc_no_law_firm$cc_dist_no_rel_draft$cc_info_asis_discl(?: \\S+)?$EE)?License$EE$cc_work_protected$cc_auth_lic_prohib"; my $cc_intro = "(?:(?:\\S+ )?$cc_no_law_firm$cc_dist_no_rel$cc_info_asis_discl(?: \\S+)?$EE)?License$EE$cc_work_protected$cc_auth_lic_copylaw_prohib"; my $cc_intro_cc0 = "(?:(?:\\S+ )?$cc_no_law_firm$cc_dist_no_rel_doc$cc_info_asis_discl_doc(?: \\S+)?$EE)?Statement of Purpose$EE$laws_confer"; my $cc_by_exercising_you_accept_this = "(?:By exercising the Licensed Rights \\(?defined below\\)?, You accept and agree to be bound by the terms and conditions of this " . "|BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS )"; my $gnu = '(?:GNU )'; my $gpl = '(?:General Public Licen[cs]e|GENERAL PUBLIC LICEN[CS]E)'; my $fsf = "(?:$the?Free Software Foundation)"; my $by_fsf = "(?: (?:as )?published by $fsf)"; my $niv = "with no Invariant Sections(?:, with no Front${D}Cover Texts, and with no Back${D}Cover Texts)?"; my $fsf_ul = "$fsf gives unlimited permission to copy, distribute and modify it"; my $fsf_ullr = "$fsf gives unlimited permission to copy and${SL}or distribute it, with or without modifications, as long as this notice is preserved"; # internal-only patterns # _lang is "basic variants" regex at # without upper-case chars (as dictated by DefHash) and no capture groups my $_delim = '[.(]'; my $_prop = '(?:[a-z][a-z0-9_]*)'; my $_lang = '(?:\([a-z]{2,4}(?:_(?:[a-z]{4}|[0-9]{3}))?(?:_(?:[a-z]{2}|[0-9]{3}))?\))'; my $_notlang = '[a-z0-9_.]'; my $_any = '[a-z0-9_.()]'; our %RE; =head1 PATTERNS =head2 Single licenses Patterns each covering a single license. Each of these patterns has exactly one of these tags: B< type:singleversion:* > B< type:unversioned > B< type:versioned:decimal >. =over =item * adobe_2006 =cut $RE{adobe_2006} = { name => 'Adobe-2006', 'name.alt.misc.scancode' => 'adobe-scl', 'name.alt.org.fedora.synth.nogrant' => 'Adobe', 'name.alt.org.fedora.web' => 'AdobeLicense', 'name.alt.org.spdx' => 'Adobe-2006', 'name.alt.org.tldr' => 'adobe-systems-incorporated-source-code-license-agreement', caption => 'Adobe Systems Incorporated Source Code License Agreement', 'caption.alt.org.fedora.web.synth.nogrant' => 'Adobe License', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'You agree to indemnify, hold harmless and defend', }; =item * adobe_glyph =cut $RE{adobe_glyph} = { name => 'Adobe-Glyph', 'name.alt.org.fedora.web.mit.short' => 'AdobeGlyph', 'name.alt.org.spdx' => 'Adobe-Glyph', caption => 'Adobe Glyph List License', 'caption.alt.org.fedora.web.mit' => 'Adobe Glyph List Variant', 'caption.alt.org.tldr' => 'Adobe Glyph List License', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => 'and to permit others to do the same, provided that the derived work is not represented as being a copy', }; =item * afl =item * afl_1_1 =item * afl_1_2 =item * afl_2 =item * afl_2_1 =item * afl_3 =cut my $termination_for_patent_including_counterclaim = "${BB}Termination for Patent Action$F$E" . 'This License shall terminate automatically ' . 'and You may no longer exercise any of the rights ' . 'granted to You by this License ' . 'as of the date You commence an action, ' . 'including a cross-claim or counterclaim,'; $RE{afl} = { name => 'AFL', 'name.alt.org.wikidata' => 'Q337279', caption => 'Academic Free License', 'caption.alt.misc.british' => 'Academic Free Licence', 'caption.alt.org.trove' => 'Academic Free License (AFL)', 'caption.alt.org.wikipedia' => 'Academic Free License', tags => ['type:versioned:decimal'], # TODO: readd when children cover same region # 'pat.alt.subject.license.scope.line.scope.paragraph' => # "Exclusions [Ff]rom License Grant$F${E}Neither", }; $RE{afl}{'pat.alt.subject.grant.legal.license'} = 'This ' . $RE{afl}{caption} . ' \(the "License"\) applies to'; $RE{afl_1_1} = { name => 'AFL-1.1', 'name.alt.org.spdx' => 'AFL-1.1', caption => 'Academic Free License Version v1.1', tags => [ 'type:singleversion:afl', 'license:contains:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'The Academic Free License applies to', }; $RE{afl_1_2} = { name => 'AFL-1.2', 'name.alt.org.spdx' => 'AFL-1.2', caption => 'Academic Free License Version v1.2', tags => [ 'type:singleversion:afl', 'license:contains:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'This Academic Free License applies to', }; $RE{afl_2} = { name => 'AFL-2.0', 'name.alt.org.spdx' => 'AFL-2.0', caption => 'Academic Free License Version v2.0', tags => [ 'type:singleversion:afl', 'license:contains:grant' ], 'pat.alt.subject.license.scope.multisection' => "its terms and conditions$F$EE" . $termination_for_patent_including_counterclaim . " for patent infringement", }; $RE{afl_2_1} = { name => 'AFL-2.1', 'name.alt.org.spdx' => 'AFL-2.1', caption => 'Academic Free License Version v2.1', tags => [ 'type:singleversion:afl', 'license:contains:grant' ], 'pat.alt.subject.license.scope.multisection' => "its terms and conditions$F$EE" . $termination_for_patent_including_counterclaim . ' against Licensor or any licensee', }; $RE{afl_3} = { name => 'AFL-3.0', 'name.alt.org.fedora' => 'AFL', 'name.alt.org.fsf' => 'Academic_Free_License_3.0', 'name.alt.org.osi' => 'AFL-3.0', 'name.alt.org.spdx' => 'AFL-3.0', 'name.alt.org.tldr.path.short' => 'afl3', caption => 'Academic Free License version 3.0', 'caption.alt.org.tldr' => 'Academic Free License 3.0 (AFL)', 'iri.alt.old.osi' => 'https://opensource.org/licenses/academic.php', tags => [ 'type:singleversion:afl', 'license:contains:grant' ], 'pat.alt.subject.license.scope.multisection' => "the conditions in Section 1\\(c\\)$F$EE" . $termination_for_patent_including_counterclaim . ' against Licensor or any licensee', }; =item * agpl =item * agpl_1 =item * agpl_2 =item * agpl_3 =cut $RE{agpl} = { name => 'AGPL', 'name.alt.org.gnu' => 'AGPL', 'name.alt.org.wikidata' => 'Q1131681', caption => 'GNU Affero General Public License', 'caption.alt.misc.short' => 'Affero GPL', 'caption.alt.misc.informal' => 'Affero License', 'caption.alt.org.gnu' => 'GNU Affero General Public License (AGPL)', 'caption.alt.org.wikipedia' => 'GNU Affero General Public License', tags => [ 'family:gpl', 'type:versioned:decimal', 'license:contains:grant' ], '_pat.alt.subject.name.misc.extra' => [ "$the?$gnu?Affero $gpl(?: \\(AGPL\\))?$by_fsf?", "$the?$gnu?AFFERO $gpl(?: \\(AGPL\\))?$by_fsf?", "$the$gnu?AGPL", "${gnu}AGPL", ], }; $RE{agpl_1} = { name => 'AGPLv1', 'name.alt.org.debian' => 'AGPL-1', 'name.alt.org.spdx' => 'AGPL-1.0', caption => 'Affero General Public License, Version 1', iri => 'http://www.affero.org/oagpl.html', tags => [ 'family:gpl', 'type:singleversion:agpl', ], '_pat.alt.subject.name.misc.extra' => [ "$the?AFFERO $gpl(?: \\(AGPL\\))?,? [Vv]ersion 1(?: of the license)?", "${the}AGPL(?: [Vv]ersion |[v-]? ?)1", ], 'pat.alt.subject.license.scope.line.scope.sentence' => "${BB}If the Program as you received it is intended to interact", 'pat.alt.subject.license.scope.multisection.part.head' => "AFFERO GENERAL PUBLIC LICENSE${E}Version 1" . ".*$F\\)$EE" . "${BB}If the Program as you received it is intended to interact" . "(?:.*$F$EE" . "12$F [^.]* EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES$F)?", 'pat.alt.subject.license.scope.multisection.part.tail' => "(?:AFFERO GENERAL PUBLIC LICENSE${E}Version 1" . ".*$F\\))?$EE" . "${BB}If the Program as you received it is intended to interact" . "$F$EE" . "12$F [^.]* EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES$F", }; $RE{agpl_2} = { name => 'AGPLv2', 'name.alt.org.debian' => 'AGPL-2', caption => 'Affero General Public License, Version 2', iri => 'http://www.affero.org/agpl2.html', tags => [ 'family:gpl', 'type:singleversion:agpl' ], '_pat.alt.subject.name.misc.extra' => [ "$the?AFFERO $gpl(?: \\(AGPL\\))?,? [Vv]ersion 2(?: of the license)?", "${the}AGPL(?: [Vv]ersion |[v-]? ?)2", ], 'pat.alt.subject.license.scope.line.scope.sentence' => "This is version 2 of the Affero General Public License$F", }; $RE{agpl_3} = { name => 'AGPLv3', 'name.alt.org.debian' => 'AGPL-3', 'name.alt.org.gnu' => 'AGPLv3.0', 'name.alt.org.osi' => 'AGPL-3.0', 'name.alt.org.spdx' => 'AGPL-3.0', 'name.alt.org.tldr.path.short' => 'agpl3', caption => 'GNU Affero General Public License, Version 3', 'caption.alt.org.gnu' => 'GNU Affero General Public License (AGPL) version 3', 'caption.alt.org.trove' => 'GNU Affero General Public License v3', 'caption.alt.org.tldr' => 'GNU Affero General Public License v3 (AGPL-3.0)', iri => 'https://www.gnu.org/licenses/agpl', 'iri.alt.format.txt' => 'https://www.gnu.org/licenses/agpl.txt', 'iri.alt.path.fragmented' => 'https://www.gnu.org/licenses/licenses.html#AGPL', 'iri.alt.path.versioned' => 'http://www.gnu.org/licenses/agpl-3.0.html', tags => [ 'family:gpl', 'type:singleversion:agpl' ], '_pat.alt.subject.name.misc.extra' => [ "$the?$gnu?AFFERO $gpl(?: \\(AGPL\\))?$by_fsf?,? [Vv]ersion 3(?: of the license)?", "(?:$the$gnu?|$gnu)AGPL(?: [Vv]ersion |[v-]? ?)3", ], 'pat.alt.subject.license.scope.line.scope.sentence' => "${Q}This License$Q refers to version 3 of the GNU Affero", 'pat.alt.subject.license.scope.multisection.part.head' => "GNU AFFERO GENERAL PUBLIC LICENSE${E}Version 3" . ".*$F\\)$EE" . "${Q}This License$Q refers to version 3 of the GNU Affero" . "(?:.*$F$EE" . "If the disclaimer .* unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee$F" . "(?:(?:${EE}END OF TERMS AND CONDITIONS)?" . ".* and how to apply and follow the GNU AGPL, see \\S+$F)?)?", 'pat.alt.subject.license.scope.multisection.part.tail' => "(?:GNU AFFERO GENERAL PUBLIC LICENSE${E}Version 3" . ".*$F\\))?$EE" . "${Q}This License$Q refers to version 3 of the GNU Affero" . ".*$F$EE" . "If the disclaimer .* unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee$F" . "(?:(?:${EE}END OF TERMS AND CONDITIONS)?" . ".* and how to apply and follow the GNU AGPL, see \\S+$F)?", }; #FIXME $RE{agpl_3}{_pat_word} = '(?:AGPL|agpl)${D}?3'; =item * aladdin =item * aladdin_8 =item * aladdin_9 =cut $RE{aladdin} = { name => 'Aladdin', 'name.alt.misc.short' => 'AFPL', caption => 'Aladdin Free Public License', 'caption.alt.org.trove' => 'Aladdin Free Public License (AFPL)', tags => ['type:versioned:decimal'], 'pat.alt.subject.grant.scope.line.scope.sentence' => 'under the terms of the Aladdin Free Public License', }; $RE{aladdin_8} = { name => 'Aladdin-8', 'name.alt.org.scancode' => 'afpl-8', 'name.alt.org.spdx' => 'Aladdin', 'name.alt.org.debian' => 'Aladdin-8', caption => 'Aladdin Free Public License, Version 8', tags => ['type:singleversion:aladdin'], 'pat.alt.subject.license.scope.multisection' => "laws of the appropriate country$F${EE}0$F Subject Matter", }; $RE{aladdin_9} = { name => 'Aladdin-9', 'name.alt.org.scancode' => 'afpl-9', 'name.alt.org.tldr.path.short' => 'aladdin', caption => 'Aladdin Free Public License, Version 9', 'caption.alt.org.tldr' => 'Aladdin Free Public License', 'iri.alt.archive.20130804020135' => 'http://www.artifex.com/downloads/doc/Public.htm', tags => ['type:singleversion:aladdin'], 'pat.alt.subject.license.scope.line.scope.sentence' => 'This License is not an Open Source license: among other things', }; =item * apache =item * apache_1 =item * apache_1_1 =item * apache_2 =cut $RE{apache} = { name => 'Apache', 'name.alt.org.wikidata' => 'Q616526', caption => 'Apache License', 'caption.alt.org.trove' => 'Apache Software License', 'caption.alt.org.wikipedia' => 'Apache License', 'caption.alt.misc.british' => 'Apache Licence', iri => 'https://www.apache.org/licenses/LICENSE-2.0', tags => ['type:versioned:decimal'], # FIXME 'pat.alt.subject.name' => "$the?Apache(?: Software)? Licen[cs]e", }; $RE{apache_1} = { name => 'Apache-1.0', 'name.alt.org.spdx' => 'Apache-1.0', caption => 'Apache License 1.0', 'caption.alt.org.tldr' => 'Apache License 1.0 (Apache-1.0)', description => <<'END', Identical to BSD (4 clause), except... * extend advertising clause to also require advertising purpose * extend non-endorsement clause to include contact info * add derivatives-must-rename clause * add redistribution-acknowledgement clause END iri => 'https://www.apache.org/licenses/LICENSE-1.0', tags => [ 'type:singleversion:apache', 'license:contains:license:bsd_4_clause', 'license:is:grant', ], 'pat.alt.subject.license.scope.sentence' => $P{redist_ack_this}, 'pat.alt.subject.license.scope.multisection.part.head' => "$P{repro_copr_cond_discl}$F$EE" . "$BB?$P{ad_mat_ack_this}" . ' the Apache Group for use in the Apache HTTP server project', }; $RE{apache_1_1} = { name => 'Apache-1.1', 'name.alt.org.osi' => 'Apache-1.1', 'name.alt.org.spdx' => 'Apache-1.1', 'name.alt.org.tldr' => 'apache-license-1.1', caption => 'Apache License 1.1', 'caption.alt.org.osi' => 'Apache Software License, version 1.1', 'caption.alt.org.tldr' => 'Apache License 1.1 (Apache-1.1)', description => <<'END', Identical to BSD (3 clause), except... * add documentation-acknowledgement clause (as 3rd clause similar to BSD-4-clause advertising clause) * extend non-endorsement clause to include contact info * add derivatives-must-rename clause END iri => 'https://www.apache.org/licenses/LICENSE-1.1', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Apache_License#Version_1.1', tags => [ 'type:singleversion:apache', 'license:contains:license:bsd_3_clause', 'license:is:grant', ], 'pat.alt.subject.license.scope.multisection' => "without prior written permission of(?: \\S+){1,5}$F$EE" . 'THIS SOFTWARE IS PROVIDED', 'pat.alt.subject.license.scope.multisection.part.head' => "(?:Apache License 1${F}1$EE" . "Copyright $C 2000 The Apache Software Foundation$F" . " All rights reserved$F$EE)?" . "$P{repro_copr_cond_discl}$F$EE" . "$BB?The end-user documentation included", }; $RE{apache_2} = { name => 'Apache-2.0', 'name.alt.org.osi' => 'Apache-2.0', 'name.alt.org.spdx' => 'Apache-2.0', 'name.alt.org.tldr.path.short' => 'apache2', caption => 'Apache License 2.0', 'caption.alt.org.osi' => 'Apache License, Version 2.0', 'caption.alt.org.osi.alt.list' => 'Apache License 2.0 (Apache-2.0)', 'caption.alt.org.tldr' => 'Apache License 2.0 (Apache-2.0)', iri => 'https://www.apache.org/licenses/LICENSE-2.0', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Apache_License#Version_2.0', tags => [ 'type:singleversion:apache', 'license:contains:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'How to apply the Apache License to your work', 'pat.alt.subject.license.scope.multisection' => "Apache License$E" . "Version 2.0, January 2004$E" . 'How to apply the Apache License to your work', }; =item * apafml =cut $RE{apafml} = { name => 'APAFML', 'name.alt.org.fedora' => 'APAFML', 'name.alt.org.fedora.web' => 'AdobePostscriptAFM', 'name.alt.org.spdx' => 'APAFML', caption => 'Adobe Postscript AFM License', tags => ['type:unversioned'], '_pat.alt.subject.license.scope.line.scope.sentence' => [ 'AFM files it accompanies may be used', 'that the AFM files are not distributed', ], }; =item * artistic =item * artistic_1 =item * artistic_1_cl8 =item * artistic_1_perl =item * artistic_2 =cut $RE{artistic} = { name => 'Artistic', 'name.alt.org.wikidata' => 'Q713244', caption => 'Artistic License', 'caption.alt.org.trove' => 'Artistic License', 'caption.alt.org.wikipedia' => 'Artistic License', 'caption.alt.misc.british' => 'Artistic Licence', tags => ['type:versioned:complex'], }; $RE{artistic_1} = { name => 'Artistic-1.0', 'name.alt.org.osi' => 'Artistic-1.0', 'name.alt.org.spdx' => 'Artistic-1.0', caption => 'Artistic License, version 1.0', 'caption.alt.org.osi' => 'Artistic License 1.0 (Artistic-1.0)', 'caption.alt.org.wikipedia' => 'Artistic License 1.0', 'caption.alt.misc.british' => 'Artistic Licence 1.0', 'iri.alt.old.osi' => 'https://opensource.org/licenses/artistic-license-1.0', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Artistic_License#Artistic_License_1.0', tags => ['type:singleversion:artistic'], 'pat.alt.subject.license.scope.multisection' => "${BB}C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package$F$EE" . "${BB}The name of the Copyright Holder", }; $RE{artistic_1_cl8} = { name => 'Artistic-1.0-cl8', 'name.alt.org.spdx' => 'Artistic-1.0-cl8', summary => 'Artistic License 1.0 w/clause 8', tags => ['type:singleversion:artistic'], 'pat.alt.subject.license.scope.multisection' => "this Package$F$EE${BB}Aggregation of this Package", }; $RE{artistic_1_clarified} = { name => 'Artistic-1.0-clarified', 'name.alt.org.spdx' => 'ClArtistic', caption => 'Clarified Artistic License', 'caption.alt.org.fedora' => 'Artistic (clarified)', 'caption.alt.org.fedora.short' => 'Artistic clarified', 'caption.alt.org.fedora.web' => 'Artistic Clarified', 'caption.alt.org.spdx' => 'Clarified Artistic License', 'caption.alt.misc.british' => 'Clarified Artistic Licence', iri => 'http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/', tags => ['type:singleversion:artistic'], 'pat.alt.subject.license.scope.line.scope.sentence' => 'Aggregation of the Standard Version of the Package', }; $RE{artistic_1_perl} = { name => 'Artistic-1.0-Perl', 'name.alt.org.spdx' => 'Artistic-1.0-Perl', caption => 'Artistic License 1.0 (Perl)', 'caption.alt.org.fedora' => 'Artistic 1.0 (original)', 'caption.alt.org.spdx' => 'Artistic License 1.0 (Perl)', iri => 'http://dev.perl.org/licenses/artistic.html', 'iri.alt.old.perl' => 'http://www.perl.com/pub/a/language/misc/Artistic.html', tags => ['type:singleversion:artistic'], 'pat.alt.subject.license.scope.multisection' => "the language$F$EE${BB}Aggregation of this Package", }; $RE{artistic_2} = { name => 'Artistic-2.0', 'name.alt.org.osi' => 'Artistic-2.0', 'name.alt.org.tldr' => 'artistic-license-2.0-(artistic)', 'name.alt.org.tldr.path.short' => 'artistic', caption => 'Artistic License (v2.0)', 'caption.alt.org.tldr' => 'Artistic License 2.0 (Artistic-2.0)', 'caption.alt.org.wikipedia' => 'Artistic License 2.0', 'caption.alt.misc.british' => 'Artistic Licence 2.0', iri => 'http://www.perlfoundation.org/artistic_license_2_0', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Artistic_License#Artistic_License_2.0', tags => ['type:singleversion:artistic'], 'pat.alt.subject.license.scope.line.scope.sentence' => "is governed by this Artistic License$F", }; =item * bdwgc =cut $RE{bdwgc} = { 'name.alt.org.debian' => 'MIT~Boehm', 'name.alt.org.fedora.web.mit.short' => 'AnotherMinimalVariant', caption => 'Boehm GC License', 'caption.alt.org.fedora.web.mit' => 'Another Minimal variant (found in libatomic_ops)', description => <<'END', Origin: Possibly Boehm-Demers-Weiser conservative C/C++ Garbage Collector (libgc, bdwgc, boehm-gc). END iri => 'http://www.hboehm.info/gc/license.txt', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.paragraph' => "$P{perm_granted} $P{to_copy} $P{this_prg} $P{any_purpose}, $P{retain_notices_all}$F$E$P{perm} $P{to_dist_mod} $P{granted}, $P{retain_notices}, and $P{note_mod} with $P{copr}$F", }; =item * bdwgc_matlab =cut $RE{bdwgc_matlab} = { name => 'bdwgc-matlab', description => <<'END', Origin: Possibly Boehm-Demers-Weiser conservative C/C++ Garbage Collector (libgc, bdwgc, boehm-gc). END tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.paragraph' => "$P{perm_granted} $P{to_copy} $P{this_prg} $P{any_purpose}, $P{retain_notices_all}$F$E$P{repro_code_cite_authors_copr}, and $Q$P{used_perm}$F$Q$E$P{repro_matlab_cite_authors}$F$E$P{perm} $P{to_dist_mod} $P{granted}, $P{retain_notices}, and $P{note_mod} with $P{copr}$F$E$P{retain_you_avail_orig}$F", 'pat.alt.subject.license.scope.line.scope.sentence' => 'must cite the Authors', }; =item * beerware =cut $RE{beerware} = { name => 'Beerware', 'name.alt.org.fedora.web' => 'Beerware', 'name.alt.org.spdx' => 'Beerware', 'name.alt.org.tldr.path.short' => 'beerware', 'name.alt.org.wikidata' => 'Q10249', caption => 'Beerware License', 'caption.alt.org.tldr' => 'Beerware License', 'caption.alt.org.wikipedia' => 'Beerware', tags => [ 'type:unversioned', 'license:is:grant', ], 'pat.alt.subject.name' => '$the?[Bb]eer$D?ware(?: License)?', 'pat.alt.subject.license.scope.line.scope.sentence' => 'you can buy me a beer in return', #<<< do not let perltidy touch this (keep long regex on one line) examples => [ { summary => 'pattern with subject "license" matches original license with title omitted', gen_args => { grant => 'license' }, str => 'As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.', matches => 1, }, { summary => 'pattern with subject "grant" matches original license with title omitted (license is commonly granted by stating the whole license)', gen_args => { grant => 'grant' }, str => 'As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.', matches => 1, }, { summary => 'original license with title omitted doesn\'t match name pattern', gen_args => { subject => 'name' }, str => 'As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.', matches => 0, }, { summary => 'pattern with subject "iri" doesn\'t match original license with title omitted', gen_args => { subject => 'iri' }, str => 'As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return.', matches => 0, }, ], #>>> }; =item * bsd_2_clause =cut $RE{bsd_2_clause} = { name => 'BSD-2-Clause', 'name.alt.org.debian' => 'BSD-2-clause', 'name.alt.org.fedora' => 'BSD', 'name.alt.org.fedora.web.bsd' => '2ClauseBSD', 'name.alt.org.osi' => 'BSD-2-Clause', 'name.alt.org.spdx' => 'BSD-2-Clause', 'name.alt.org.tldr' => 'bsd-2-clause-license-(freebsd)', 'name.alt.org.tldr.path.short' => 'freebsd', caption => 'BSD (2 clause)', 'caption.alt.org.fedora' => 'BSD License (two clause)', 'caption.alt.org.osi' => 'The 2-Clause BSD License', 'caption.alt.org.osi.alt.list' => '2-clause BSD license (BSD-2-Clause)', 'caption.alt.org.spdx' => 'BSD 2-clause "Simplified" License', 'caption.alt.org.tldr' => 'BSD 2-Clause License (FreeBSD/Simplified)', 'name.alt.org.wikipedia.bsd' => '2-clause license ("Simplified BSD License" or "FreeBSD License")', 'caption.alt.misc.british' => '2-clause BSD Licence', 'caption.alt.misc.british2' => 'FreeBSD Licence', 'caption.alt.misc.british3' => 'Simplified BSD Licence', 'caption.alt.misc.qemu' => 'BSD Licence (without advertising or endorsement clauses)', tags => [ 'family:bsd', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{repro_copr_cond_discl}$F$EE$P{asis_sw_by_name}", }; =item * bsd_3_clause =cut $RE{bsd_3_clause} = { name => 'BSD-3-Clause', 'name.alt.org.debian' => 'BSD-3-clause', 'name.alt.org.fedora' => 'BSD', 'name.alt.org.fedora.web.bsd' => '3ClauseBSD', 'name.alt.org.osi' => 'BSD-3-Clause', 'name.alt.org.spdx' => 'BSD-3-Clause', 'name.alt.org.tldr.path.short' => 'bsd3', caption => 'BSD (3 clause)', 'caption.alt.org.fedora' => 'BSD License (no advertising)', 'caption.alt.org.osi' => 'The 3-Clause BSD License', 'caption.alt.org.osi.alt.list' => '3-clause BSD license (BSD-3-Clause)', 'caption.alt.org.spdx' => 'BSD 3-clause "New" or "Revised" License', 'caption.alt.org.tldr' => 'BSD 3-Clause License (Revised)', 'caption.alt.org.wikipedia.bsd' => '3-clause license ("BSD License 2.0", "Revised BSD License", "New BSD License", or "Modified BSD License")', 'caption.alt.misc.british' => '3-Clause BSD Licence', 'caption.alt.misc.british2' => 'Modified BSD Licence', 'caption.alt.misc.qemu' => 'BSD Licence (without advertising clause)', tags => [ 'family:bsd', 'type:unversioned', 'license:contains:license:bsd_2_clause', 'license:is:grant', ], 'pat.alt.subject.license.scope.multisection' => "$P{repro_copr_cond_discl}$F?$EE" . "(?:$BB \\[?(?:rescinded 22 July 1999" . "|This condition was removed$F)\\]?)?" . "$BB$P{nopromo_neither}", }; =item * bsd_4_clause =cut $RE{bsd_4_clause} = { name => 'BSD-4-Clause', 'name.alt.org.debian' => 'BSD-4-clause', 'name.alt.org.fedora.web.bsd' => 'BSDwithAdvertising', 'name.alt.org.spdx' => 'BSD-4-Clause', 'name.alt.org.tldr' => '4-clause-bsd', caption => 'BSD (4 clause)', 'caption.alt.org.fedora' => 'BSD License (original)', 'caption.alt.org.fedora.short' => 'BSD with advertising', 'caption.alt.org.spdx' => 'BSD 4-clause "Original" or "Old" License', 'caption.alt.org.tldr' => '4-Clause BSD', 'caption.alt.org.wikipedia.bsd' => '4-clause license (original "BSD License")', 'caption.alt.misc.qemu' => 'BSD Licence (with advertising clause)', tags => [ 'family:bsd', 'type:unversioned', 'license:contains:license:bsd_3_clause', 'license:is:grant', ], 'pat.alt.subject.license.scope.sentence' => $P{ad_mat_ack_this}, 'pat.alt.subject.license.scope.multisection.part.head' => "$P{repro_copr_cond_discl}$F$EE$BB?$P{ad_mat_ack_this}", 'pat.alt.subject.license.scope.multisection.part.tail' => "$BB?$P{ad_mat_ack_this}$F$EE$BB?$P{nopromo_neither}", }; =item * bsl =item * bsl_1 =cut $RE{bsl} = { name => 'BSL', 'name.alt.org.fedora.web.mit.short' => 'Thrift', caption => 'Boost Software License', 'caption.alt.misc.mixedcase' => 'boost Software License', 'caption.alt.org.fedora.web.mit' => 'Thrift variant', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Boost_Software_License#License', 'caption.alt.misc.british' => 'Boost Software Licence', tags => ['type:versioned:decimal'], # FIXME '_pat.alt.subject.name' => [ 'Boost Software License', ], }; $RE{bsl_1} = { name => 'BSL-1.0', 'name.alt.org.osi' => 'BSL-1.0', 'name.alt.org.spdx' => 'BSL-1.0', 'name.alt.org.tldr' => 'boost-software-license-1.0-explained', 'name.alt.org.tldr.path.short' => 'boost', caption => 'Boost Software License 1.0', 'caption.alt.misc.mixedcase' => 'boost Software License, Version 1.0', 'caption.alt.org.tldr' => 'Boost Software License 1.0 (BSL-1.0)', 'caption.alt.org.trove' => 'Boost Software License 1.0 (BSL-1.0)', 'caption.alt.org.facebook' => 'Thrift Software License', 'caption.alt.misc.british' => 'Boost Software Licence 1.0', iri => 'http://www.boost.org/LICENSE_1_0.txt', 'iri.alt.org.facebook.archive.20070630190325' => 'http://developers.facebook.com/thrift/', tags => [ 'type:singleversion:bsl', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => "this license \\(the ${Q}Software$Q\\) to use, reproduce", }; =item * cc_by =item * cc_by_1 =item * cc_by_2 =item * cc_by_2_5 =item * cc_by_3 =item * cc_by_4 =cut my $if_dist_work_or_works_keep_intact_notices = "If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and"; my $if_dist_work_or_collections_keep_intact_notices = "If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4\\(a\\), keep intact all copyright notices for the Work and"; my $credit_author_if_supplied = " give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name \\(or pseudonym if applicable\\) of the Original Author if supplied;"; my $credit_author_or_designated_party = " provide, reasonable to the medium or means You are utilizing:?" . " \\(i\\) the name of the Original Author \\(or pseudonym, if applicable\\) if supplied, and${SL}or" . " \\(ii\\) if the Original Author and${SL}or Licensor designate another party or parties" . " \\(e\\.g\\. a sponsor institute, publishing entity, journal\\)" . " for attribution in Licensor'?s copyright notice, terms of service or by other reasonable means," . " the name of such party or parties;"; #" if the Original Author and${SL}or Licensor designate another party or parties \\(e\\.g\\., a sponsor institute, publishing entity, journal\\) for attribution \\(\"Attribution Parties\"\\) in Licensor'?s copyright notice, terms of service or by other reasonable means, the name of such party or parties;"; #" \\(ii\\) the title of the Work if supplied;"; my $to_extend_URI = " to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work," . " unless such URI does not refer to the copyright notice or licensing information for the Work; and"; # " (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and" #" (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and${SL}or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and${SL}or Attribution Parties. $RE{cc_by} = { name => 'CC-BY', 'name.alt.org.cc' => 'by', caption => 'Creative Commons Attribution Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_by}|BY|$P{cc_url}by))", }; $RE{cc_by_1} = { name => 'CC-BY-1.0', caption => 'Creative Commons Attribution 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution 1.0', iri => 'https://creativecommons.org/licenses/by/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_by' ], 'pat.alt.subject.license.multisection' => "as requested$F$E$BB?" . $if_dist_work_or_works_keep_intact_notices . $credit_author_if_supplied . " the title of the Work if supplied;" . " in the case of a Derivative", }; $RE{cc_by_2} = { name => 'CC-BY-2.0', caption => 'Creative Commons Attribution 2.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution 2.0', iri => 'https://creativecommons.org/licenses/by/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by' ], 'pat.alt.subject.license.multisection' => "as requested$F$E$BB?" . $if_dist_work_or_works_keep_intact_notices . $credit_author_if_supplied . " the title of the Work if supplied;" . $to_extend_URI . " in the case of a Derivative", }; $RE{cc_by_2_5} = { name => 'CC-BY-2.5', caption => 'Creative Commons Attribution 2.5 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution 2.5', iri => 'https://creativecommons.org/licenses/by/2.5/', tags => [ 'family:cc', 'type:singleversion:cc_by' ], 'pat.alt.subject.license.multisection' => "as requested$F$E$BB?" . $if_dist_work_or_works_keep_intact_notices . $credit_author_or_designated_party . " the title of the Work if supplied;" . $to_extend_URI . " in the case of a Derivative", }; $RE{cc_by_3} = { name => 'CC-BY-3.0', caption => 'Creative Commons Attribution 3.0 Unported License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution 3.0 Unported', 'caption.alt.org.tldr.version.cc_by_3' => 'Creative Commons Attribution 3.0 Unported (CC-BY)', iri => 'https://creativecommons.org/licenses/by/3.0/', tags => [ 'family:cc', 'type:singleversion:cc_by' ], 'pat.alt.subject.license.multisection' => "as requested$F$E$BB?" . $if_dist_work_or_collections_keep_intact_notices # . $credit_author_or_designated_party # . " the title of the Work if supplied;" # . " to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and" # . " in the case of a Derivative", }; $RE{cc_by_4} = { name => 'CC-BY-4.0', 'name.alt.org.tldr.path.short' => 'ccby4', caption => 'Creative Commons Attribution 4.0 International License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution 4.0 International', 'caption.alt.org.tldr' => 'Creative Commons Attribution 4.0 International (CC BY 4.0)', iri => 'https://creativecommons.org/licenses/by/4.0/', tags => [ 'family:cc', 'type:singleversion:cc_by' ], }; =item * cc_by_nc =item * cc_by_nc_1 =item * cc_by_nc_2 =item * cc_by_nc_2_5 =item * cc_by_nc_3 =item * cc_by_nc_4 =cut $RE{cc_by_nc} = { name => 'CC-BY-NC', 'name.alt.org.cc' => 'by-nc', caption => 'Creative Commons Attribution-NonCommercial Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_by}$SD$P{cc_nc}|BY${SD}NC|$P{cc_url}by-nc))", }; $RE{cc_by_nc_1} = { name => 'CC-BY-NC-1.0', caption => 'Creative Commons Attribution-NonCommercial 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial 1.0', iri => 'https://creativecommons.org/licenses/by-nc/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc' ], }; $RE{cc_by_nc_2} = { name => 'CC-BY-NC-2.0', 'name.alt.org.tldr' => 'creative-commons-public-license-(ccpl)', caption => 'Creative Commons Attribution-NonCommercial 2.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial 2.0', 'caption.alt.org.tldr' => 'Creative Commons Attribution-NonCommercial 2.0 Generic (CC BY-NC 2.0)', iri => 'https://creativecommons.org/licenses/by-nc/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc' ], }; $RE{cc_by_nc_2_5} = { name => 'CC-BY-NC-2.5', caption => 'Creative Commons Attribution-NonCommercial 2.5 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial 2.5', iri => 'https://creativecommons.org/licenses/by-nc/2.5/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc' ], }; $RE{cc_by_nc_3} = { name => 'CC-BY-NC-3.0', caption => 'Creative Commons Attribution-NonCommercial 3.0 Unported License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial 3.0 Unported', iri => 'https://creativecommons.org/licenses/by-nc/3.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc' ], }; $RE{cc_by_nc_4} = { name => 'CC-BY-NC-4.0', caption => 'Creative Commons Attribution-NonCommercial 4.0 International License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial 4.0 International', 'caption.alt.org.tldr' => 'Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)', iri => 'https://creativecommons.org/licenses/by-nc/4.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc' ], }; =item * cc_by_nc_nd =item * cc_by_nc_nd_1 =item * cc_by_nc_nd_2 =item * cc_by_nc_nd_2_5 =item * cc_by_nc_nd_3 =item * cc_by_nc_nd_4 =cut $RE{cc_by_nc_nd} = { name => 'CC-BY-NC-ND', 'name.alt.org.cc' => 'by-nc-nd', caption => 'Creative Commons Attribution-NonCommercial-NoDerivatives Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_by}$SD(?:$P{cc_nc}$SD$P{cc_nd}|$P{cc_nd}$SD$P{cc_nc})|BY${SD}NC${SD}ND|$P{cc_url}by-nc-nd))", }; $RE{cc_by_nc_nd_1} = { name => 'CC-BY-NC-ND-1.0', caption => 'Creative Commons Attribution-NoDerivs-NonCommercial 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NoDerivs-NonCommercial 1.0', iri => 'https://creativecommons.org/licenses/by-nd-nc/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_nd' ], }; $RE{cc_by_nc_nd_2} = { name => 'CC-BY-NC-ND-2.0', caption => 'Creative Commons Attribution-NonCommercial-NoDerivs 2.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-NoDerivs 2.0', iri => 'https://creativecommons.org/licenses/by-nc-nd/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_nd' ], }; $RE{cc_by_nc_nd_2_5} = { name => 'CC-BY-NC-ND-2.5', caption => 'Creative Commons Attribution-NonCommercial-NoDerivs 2.5 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-NoDerivs 2.5', iri => 'https://creativecommons.org/licenses/by-nc-nd/2.5/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_nd' ], }; $RE{cc_by_nc_nd_3} = { name => 'CC-BY-NC-ND-3.0', caption => 'Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported', iri => 'https://creativecommons.org/licenses/by-nc-nd/3.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_nd' ], }; $RE{cc_by_nc_nd_4} = { name => 'CC-BY-NC-ND-4.0', caption => 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International', iri => 'https://creativecommons.org/licenses/by-nc-nd/4.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_nd' ], }; =item * cc_by_nc_sa =item * cc_by_nc_sa_1 =item * cc_by_nc_sa_2 =item * cc_by_nc_sa_2_5 =item * cc_by_nc_sa_3 =item * cc_by_nc_sa_4 =cut $RE{cc_by_nc_sa} = { name => 'CC-BY-NC-SA', 'name.alt.org.cc' => 'by-nc-sa', caption => 'Creative Commons Attribution-NonCommercial-ShareAlike Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_by}$SD$P{cc_nc}$SD$P{cc_sa}|BY${SD}NC${SD}SA|$P{cc_url}by-nc-sa))", }; $RE{cc_by_nc_sa_1} = { name => 'CC-BY-NC-SA-1.0', caption => 'Creative Commons Attribution-NonCommercial-ShareAlike 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-ShareAlike 1.0', iri => 'https://creativecommons.org/licenses/by-nc-sa/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_sa' ], }; $RE{cc_by_nc_sa_2} = { name => 'CC-BY-NC-SA-2.0', caption => 'Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-ShareAlike 2.0', iri => 'https://creativecommons.org/licenses/by-nc-sa/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_sa' ], }; $RE{cc_by_nc_sa_2_5} = { name => 'CC-BY-NC-SA-2.5', caption => 'Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-ShareAlike 2.5', iri => 'https://creativecommons.org/licenses/by-nc-sa/2.5/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_sa' ], }; $RE{cc_by_nc_sa_3} = { name => 'CC-BY-NC-SA-3.0', caption => 'Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported', iri => 'https://creativecommons.org/licenses/by-nc-sa/3.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_sa' ], }; $RE{cc_by_nc_sa_4} = { name => 'CC-BY-NC-SA-4.0', caption => 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International', 'caption.alt.org.tldr' => 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)', iri => 'https://creativecommons.org/licenses/by-nc-sa/4.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nc_sa' ], }; =item * cc_by_nd =item * cc_by_nd_1 =item * cc_by_nd_2 =item * cc_by_nd_2_5 =item * cc_by_nd_3 =item * cc_by_nd_4 =cut $RE{cc_by_nd} = { name => 'CC-BY-ND', 'name.alt.org.cc' => 'by-nd', caption => 'Creative Commons Attribution-NoDerivatives Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_by}$SD$P{cc_nd}|BY${SD}ND|$P{cc_url}by-nd))", }; $RE{cc_by_nd_1} = { name => 'CC-BY-ND-1.0', caption => 'Creative Commons Attribution-NoDerivs 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NoDerivs 1.0', iri => 'https://creativecommons.org/licenses/by-nd/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nd' ], }; $RE{cc_by_nd_2} = { name => 'CC-BY-ND-2.0', caption => 'Creative Commons Attribution-NoDerivs 2.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NoDerivs 2.0', iri => 'https://creativecommons.org/licenses/by-nd/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nd' ], }; $RE{cc_by_nd_2_5} = { name => 'CC-BY-ND-2.5', caption => 'Creative Commons Attribution-NoDerivs 2.5 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NoDerivs 2.5', iri => 'https://creativecommons.org/licenses/by-nd/2.5/', tags => [ 'family:cc', 'type:singleversion:cc_by_nd' ], }; $RE{cc_by_nd_3} = { name => 'CC-BY-ND-3.0', caption => 'Creative Commons Attribution-NoDerivs 3.0 Unported License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NoDerivs 3.0 Unported', iri => 'https://creativecommons.org/licenses/by-nd/3.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nd' ], }; $RE{cc_by_nd_4} = { name => 'CC-BY-ND-4.0', caption => 'Creative Commons Attribution-NoDerivatives 4.0 International License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-NoDerivatives 4.0 International', 'caption.alt.org.tldr' => 'Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)', iri => 'https://creativecommons.org/licenses/by-nd/4.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_nd' ], }; =item * cc_by_sa =item * cc_by_sa_1 =item * cc_by_sa_2 =item * cc_by_sa_2_5 =item * cc_by_sa_3 =item * cc_by_sa_4 =cut $RE{cc_by_sa} = { name => 'CC-BY-SA', 'name.alt.org.cc' => 'by-sa', caption => 'Creative Commons Attribution-ShareAlike Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_by}$SD$P{cc_sa}|BY${SD}SA|$P{cc_url}by-sa))", }; $RE{cc_by_sa_1} = { name => 'CC-BY-SA-1.0', caption => 'Creative Commons Attribution-ShareAlike 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-ShareAlike 1.0', iri => 'https://creativecommons.org/licenses/by-sa/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_sa' ], }; $RE{cc_by_sa_2} = { name => 'CC-BY-SA-2.0', caption => 'Creative Commons Attribution-ShareAlike 2.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-ShareAlike 2.0', iri => 'https://creativecommons.org/licenses/by-sa/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_sa' ], }; $RE{cc_by_sa_2_5} = { name => 'CC-BY-SA-2.5', caption => 'Creative Commons Attribution-ShareAlike 2.5 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-ShareAlike 2.5', iri => 'https://creativecommons.org/licenses/by-sa/2.5/', tags => [ 'family:cc', 'type:singleversion:cc_by_sa' ], }; $RE{cc_by_sa_3} = { name => 'CC-BY-SA-3.0', caption => 'Creative Commons Attribution-ShareAlike 3.0 Unported License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-ShareAlike 3.0 Unported', iri => 'https://creativecommons.org/licenses/by-sa/3.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_sa' ], }; $RE{cc_by_sa_4} = { name => 'CC-BY-SA-4.0', caption => 'Creative Commons Attribution-ShareAlike 4.0 International License', 'caption.alt.org.cc.legal.license' => 'Creative Commons Attribution-ShareAlike 4.0 International', 'caption.alt.org.tldr' => ' Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)', iri => 'https://creativecommons.org/licenses/by-sa/4.0/', tags => [ 'family:cc', 'type:singleversion:cc_by_sa' ], }; =item * cc_cc0 =item * cc_cc0_1 =cut $RE{cc_cc0} = { name => 'CC0', 'name.alt.org.cc' => 'zero', caption => 'Creative Commons CC0 Public License', 'caption.alt.misc.american' => 'CC0 License', 'caption.alt.misc.british' => 'CC0 Licence', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Creative_Commons_license#Zero_/_public_domain', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_cc0}(?: \\(?$Q?CC0$Q?\\)?)?|CC0|$P{cc_url_pd}zero))", 'pat.alt.subject.grant.scope.line.scope.sentence' => 'has waived all copyright and related or neighboring rights', }; $RE{cc_cc0_1} = { name => 'CC0-1.0', 'name.alt.org.spdx' => 'CC0-1.0', 'name.alt.org.tldr.path.short' => 'cc0-1.0', caption => 'Creative Commons CC0 Universal 1.0 Public Domain Dedication', 'caption.alt.org.cc.legal.license' => 'Creative Commons CC0 1.0 Universal', 'caption.alt.org.tldr' => 'Creative Commons CC0 1.0 Universal (CC-0)', iri => 'https://creativecommons.org/publicdomain/zero/1.0/', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Creative_Commons_license#Zero_/_public_domain', tags => [ 'cc', 'family:cc', 'type:singleversion:cc_cc0' ], 'pat.alt.subject.grant.scope.line.scope.sentence' => 'has waived all copyright and related or neighboring rights', }; =item * cc_nc =item * cc_nc_1 =cut $RE{cc_nc} = { name => 'CC-NC', 'name.alt.org.cc' => 'nc', caption => 'Creative Commons NonCommercial Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], }; $RE{cc_nc_1} = { name => 'CC-NC-1.0', caption => 'Creative Commons NonCommercial 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons NonCommercial 1.0', iri => 'https://creativecommons.org/licenses/nc/2.0/', tags => [ 'family:cc', 'type:singleversion:cc_nc' ], }; =item * cc_nd =item * cc_nd_1 =cut $RE{cc_nd} = { name => 'CC-ND', 'name.alt.org.cc' => 'nd', caption => 'Creative Commons NoDerivs Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], }; $RE{cc_nd_1} = { name => 'CC-ND-1.0', caption => 'Creative Commons NoDerivs 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons NoDerivs 1.0', iri => 'https://creativecommons.org/licenses/nd/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_nd' ], }; =item * cc_sa =item * cc_sa_1 =cut $RE{cc_sa} = { name => 'CC-SA', 'name.alt.org.cc' => 'sa', caption => 'Creative Commons ShareAlike Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], }; $RE{cc_sa_1} = { name => 'CC-SA-1.0', caption => 'Creative Commons ShareAlike 1.0 Generic License', 'caption.alt.org.cc.legal.license' => 'Creative Commons ShareAlike 1.0', iri => 'https://creativecommons.org/licenses/sa/1.0/', tags => [ 'family:cc', 'type:singleversion:cc_sa' ], }; =item * cc_sp =cut $RE{cc_sp} = { name => 'Sampling+', 'name.alt.org.cc' => 'sampling+', caption => 'Creative Commons Sampling Plus Public License', tags => [ 'family:cc', 'type:versioned:decimal' ], 'pat.alt.subject.name' => "(?:$P{cc}$SD(?:$P{cc_sp}|$P{cc_url}sampling\\+))", }; =item * cddl =item * cddl_1 =item * cddl_1_1 =cut $RE{cddl} = { name => 'CDDL', 'name.alt.org.wikidata' => 'Q304628', caption => 'Common Development and Distribution License', 'caption.alt.org.wikipedia' => 'Common Development and Distribution License', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?Common Development and Distribution License(?: \\(CDDL\\))?", "$the?COMMON DEVELOPMENT AND DISTRIBUTION LICENSE(?: \\(CDDL\\))?", "${the}CDDL\\b", ], }; $RE{cddl_1} = { name => 'CDDL-1.0', caption => 'Common Development and Distribution License 1.0', tags => ['type:singleversion:cddl'], 'pat.alt.subject.license.scope.line.scope.sentence' => "Sun Microsystems, Inc$F is the initial license steward", }; $RE{cddl_1_1} = { name => 'CDDL-1.1', caption => 'Common Development and Distribution License 1.1', tags => ['type:singleversion:cddl'], 'pat.alt.subject.license.scope.line.scope.paragraph' => 'Oracle is the initial license steward', }; =item * cecill =item * cecill_1 =item * cecill_1_1 =item * cecill_2 =item * cecill_2_1 =cut $RE{cecill} = { name => 'CECILL', 'name.alt.org.wikidata' => 'Q1052189', caption => 'CeCILL License', 'caption.alt.org.inria(en)' => 'CeCILL FREE SOFTWARE LICENSE AGREEMENT', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL', 'caption.alt.org.wikipedia' => 'CeCILL', 'uri.alt.path.sloppy' => 'http://www.cecill.info', tags => ['type:versioned:decimal'], 'pat.alt.subject.name(en)' => "$the?FREE SOFTWARE LICENSING AGREEMENT CeCILL", '_pat.alt.subject.name(fr)' => [ 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL', '(?:la )?licence CeCILL', ], 'pat.alt.subject.name.misc.short' => 'CeCILL', 'pat.alt.subject.grant.scope.line.scope.sentence.version.none(en)' => 'governed by the CeCILL ?license', 'pat.alt.subject.grant.scope.line.scope.sentence.version.none(fr)' => 'Ce logiciel est r[é]gi par la licence CeCILL soumise', '_pat.alt.subject.license.scope.line.scope.sentence(en)' => [ "Version 1\\.1 of 10${SL}26${SL}2004", "Version 2\\.0 dated 2006${D}09${D}05", "Version 2\\.1 dated 2013${D}06${D}21", ], '_pat.alt.subject.license.scope.line.scope.sentence(fr)' => [ "Version 1 du 21${SL}06${SL}2004", "Version 2\\.0 du 2006${D}09${D}05", "Version 2\\.1 du 2013${D}06${D}21", ], }; $RE{cecill_1} = { name => 'CECILL-1.0', caption => 'CeCILL License 1.0', 'caption.alt.org.inria' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL Version 1', 'caption.alt.misc.v(en)' => 'CeCILL Free Software License Agreement v1.0', iri => 'https://cecill.info/licences/Licence_CeCILL_V1-fr.html', 'iri.alt.format.txt' => 'https://cecill.info/licences/Licence_CeCILL_V1-fr.txt', 'iri.alt.format.pdf' => 'https://cecill.info/licences/Licence_CeCILL-V1_VF.pdf', tags => ['type:singleversion:cecill'], 'pat.alt.subject.name' => "CeCILL(?: License)?${SD}2(?:\.0)?", 'pat.alt.subject.license.scope.line.scope.sentence(fr)' => "Version 1 du 21${SL}06${SL}2004", }; $RE{cecill_1_1} = { name => 'CECILL-1.1', caption => 'CeCILL License 1.1', 'caption.alt.org.inria' => 'FREE SOFTWARE LICENSING AGREEMENT CeCILL Version 1.1', iri => 'https://cecill.info/licences/Licence_CeCILL_V1.1-US.html', 'iri.alt.format.txt' => 'https://cecill.info/licences/Licence_CeCILL_V1.1-US.txt', 'iri.alt.format.pdf' => 'https://cecill.info/licences/Licence_CeCILL-V1.1-VA.pdf', tags => ['type:singleversion:cecill'], 'pat.alt.subject.name' => "CeCILL(?: License)?${SD}1\.1", 'pat.alt.subject.license.scope.line.scope.sentence' => "Version 1\\.1 of 10${SL}26${SL}2004", 'pat.alt.subject.license.scope.sentence.part.1_initial_sw(en)' => 'for the first time ' . 'under the terms and conditions of the Agreement', 'pat.alt.subject.license.scope.sentence.part.2(en)' => 'Agreement is to grant users the right ' . 'to modify and redistribute the software governed', 'pat.alt.subject.license.scope.sentence.part.5_3(en)' => 'redistribute copies ' . 'of the modified or unmodified Software to third parties ', 'pat.alt.subject.license.scope.sentence.part.5_3_2(en)' => 'to all the provisions hereof', 'pat.alt.subject.license.scope.sentence.part.5_3_3(en)' => 'may be distributed under a separate Licensing Agreement', 'pat.alt.subject.license.scope.line.scope.sentence.part.5_3_4(en)' => 'is subject to the provisions of the GPL License', 'pat.alt.subject.license.scope.sentence.part.6_1_1(en)' => 'compliance with the terms and conditions ' . 'under which the Holder has elected to distribute its work ' . 'and no one shall be entitled to and', 'pat.alt.subject.license.scope.sentence.part.6_1_2(en)' => 'the Agreement, for the duration', 'pat.alt.subject.license.scope.sentence.part.7_2(en)' => 'shall be subject to a separate', 'pat.alt.subject.license.scope.line.scope.sentence.part.8_1(en)' => '(?:Subject to the provisions of Article 8\.2, should' . '|subject to providing evidence of it)', 'pat.alt.subject.license.scope.sentence.part.10_2(en)' => 'all licenses that it may have granted ' . 'prior to termination of the Agreement ' . 'shall remain valid subject to their', 'pat.alt.subject.license.scope.sentence.part.12_3(en)' => 'Any or all Software distributed ' . 'under a given version of the Agreement ' . 'may only be subsequently distributed ' . 'under the same version of the Agreement, ' . 'or a subsequent version, ' . 'subject to the provisions of article', 'pat.alt.subject.license.scope.paragraph.part.13_1(en)' => "The Agreement is governed by French law$F " . 'The Parties agree to endeavor to settle', }; $RE{cecill_2} = { name => 'CECILL-2.0', 'name.alt.org.tldr.path.short' => 'cecill-v2', caption => 'CeCILL License 2.0', 'caption.alt.org.inria(en)' => 'CeCILL FREE SOFTWARE LICENSE AGREEMENT Version 2.0', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL Version 2.0', 'caption.alt.org.tldr' => 'CeCILL Free Software License Agreement v2.0 (CECILL-2.0)', 'iri(en)' => 'https://cecill.info/licences/Licence_CeCILL_V2-en.html', 'iri(fr)' => 'https://cecill.info/licences/Licence_CeCILL_V2-fr.html', 'iri.alt.format.txt(en)' => 'https://cecill.info/licences/Licence_CeCILL_V2-en.txt', 'iri.alt.format.txt(fr)' => 'https://cecill.info/licences/Licence_CeCILL_V2-fr.txt', tags => ['type:singleversion:cecill'], 'pat.alt.subject.name' => "CeCILL(?: License)?${SD}2(?:\.0)?", 'pat.alt.subject.license.scope.line.scope.sentence(en)' => "Version 2\\.0 dated 2006${D}09${D}05", 'pat.alt.subject.license.scope.line.scope.sentence(fr)' => "Version 2\\.0 du 2006${D}09${D}05", 'pat.alt.subject.license.scope.line.scope.sentence.part.gpl' => 'subject to the provisions of one of the versions of the GNU GPL, and', }; $RE{cecill_2_1} = { name => 'CECILL-2.1', 'name.alt.org.osi' => 'CECILL-2.1', caption => 'CeCILL License 2.1', 'caption.alt.org.inria(en)' => 'CeCILL FREE SOFTWARE LICENSE AGREEMENT Version 2.1', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL Version 2.1', 'caption.alt.org.trove' => 'CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)', 'iri(en)' => 'https://cecill.info/licences/Licence_CeCILL_V2.1-en.html', 'iri(fr)' => 'https://cecill.info/licences/Licence_CeCILL_V2.1-fr.html', 'iri.alt.format.txt(en)' => 'https://cecill.info/licences/Licence_CeCILL_V2.1-en.txt', 'iri.alt.format.txt(fr)' => 'https://cecill.info/licences/Licence_CeCILL_V2.1-fr.txt', tags => ['type:singleversion:cecill'], 'pat.alt.subject.name' => "CeCILL(?: License)?${SD}2\.1", 'pat.alt.subject.grant.scope.line.scope.sentence.version.none(en)' => 'governed by the CeCILL ?license', 'pat.alt.subject.grant.scope.line.scope.sentence.version.none(fr)' => 'Ce logiciel est r[é]gi par la licence CeCILL soumise', 'pat.alt.subject.license.scope.line.scope.sentence(en)' => "Version 2\\.1 dated 2013${D}06${D}21", 'pat.alt.subject.license.scope.line.scope.sentence(fr)' => "Version 2\\.1 du 2013${D}06${D}21", 'pat.alt.subject.license.scope.line.scope.sentence.part.gpl' => 'subject to the provisions of one of the versions of the GNU GPL, GNU', }; =item * cecill_b =item * cecill_b_1 =cut $RE{cecill_b} = { name => 'CECILL-B', caption => 'CeCILL-B License', 'caption.alt.org.inria(en)' => 'CeCILL-B FREE SOFTWARE LICENSE AGREEMENT', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B', 'caption.alt.org.trove' => 'CeCILL-B Free Software License Agreement (CECILL-B)', 'iri(en)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.html', 'iri(fr)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.html', 'iri.alt.format.txt(en)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.txt', 'iri.alt.format.txt(fr)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-fr.txt', tags => ['type:versioned:decimal'], 'pat.alt.subject.name.misc.short' => "CeCILL${D}B", 'pat.alt.subject.grant.scope.line.scope.sentence(en)' => 'governed by the CeCILL-B license', 'pat.alt.subject.grant.scope.line.scope.sentence(fr)' => 'Ce logiciel est r[é]gi par la licence CeCILL-B soumise', 'pat.alt.subject.license.scope.line.scope.sentence(en)' => 'The exercising of this freedom is conditional upon a strong', 'pat.alt.subject.license.scope.line.scope.sentence(fr)' => 'aux utilisateurs une tr[è]s large libert[é] de', }; $RE{cecill_b_1} = { name => 'CECILL-B-1.0', 'name.alt.org.spdx' => 'CECILL-B', caption => 'CeCILL-B License 1.0', 'caption.alt.org.inria(en)' => 'CeCILL-B FREE SOFTWARE LICENSE AGREEMENT Version 1.0', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B Version 1.0', 'iri(en)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.html', 'iri(fr)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.html', 'iri.alt.format.txt(en)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-en.txt', 'iri.alt.format.txt(fr)' => 'https://cecill.info/licences/Licence_CeCILL-B_V1-fr.txt', tags => ['type:singleversion:cecill_b'], 'pat.alt.subject.name' => "CeCILL${D}B(?: License)?(?:${SD}1(?:\.0)?)?", 'pat.alt.subject.grant.scope.line.scope.sentence(en)' => 'governed by the CeCILL-B license', 'pat.alt.subject.grant.license.scope.line.scope.sentence(fr)' => 'Ce logiciel est r[é]gi par la licence CeCILL-B soumise', 'pat.alt.subject.license.scope.line.scope.sentence(en)' => 'The exercising of this freedom is conditional upon a strong', 'pat.alt.subject.license.scope.line.scope.sentence(fr)' => 'aux utilisateurs une tr[è]s large libert[é] de', }; =item * cecill_c =item * cecill_c_1 =cut # TODO: synthesize patterns (except name) from cecill_c_1: they are all duplicates $RE{cecill_c} = { name => 'CECILL-C', caption => 'CeCILL-C License', 'caption.alt.org.inria(en)' => 'CeCILL-C FREE SOFTWARE LICENSE AGREEMENT', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-C', 'caption.alt.org.trove' => 'CeCILL-C Free Software License Agreement (CECILL-C)', 'iri(en)' => 'https://cecill.info/licences/Licence_CeCILL-C_V1-en.html', 'iri(fr)' => 'https://cecill.info/licences/Licence_CeCILL-C_V1-fr.html', tags => ['type:versioned:decimal'], 'pat.alt.subject.name(fr)' => "CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL${D}C", 'pat.alt.subject.name.misc.short' => "CeCILL${D}C", '_pat.alt.subject.grant.scope.line.scope.sentence(en)' => [ 'under the terms of the CeCILL-C license', 'governed by the CeCILL-C license', ], 'pat.alt.subject.grant.scope.line.scope.sentence(fr)' => 'Ce logiciel est r[é]gi par la licence CeCILL-C soumise', '_pat.alt.subject.license.scope.line.scope.sentence(en)' => [ 'The exercising of this right is conditional upon the obligation', 'the Software modified or not;', ], '_pat.alt.subject.license.scope.line.scope.sentence(fr)' => [ 'aux utilisateurs la libert[é] de modifier et', 'Logiciel modifi[é] ou non;', ], 'pat.alt.subject.license(en)' => "the Software modified or not;$EE${BB}to ensure that use of", 'pat.alt.subject.license(fr)' => "Logiciel modifi[é] ou non;$EE${BB}[à] faire en sorte que", }; $RE{cecill_c_1} = { name => 'CECILL-C-1.0', 'name.alt.org.spdx' => 'CECILL-C', caption => 'CeCILL-C License 1.0', 'caption.alt.org.inria(en)' => 'CeCILL-C FREE SOFTWARE LICENSE AGREEMENT Version 1.0', 'caption.alt.org.inria(fr)' => 'CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-C Version 1.0', 'iri(en)' => 'https://cecill.info/licences/Licence_CeCILL-C_V1-en.html', 'iri(fr)' => 'https://cecill.info/licences/Licence_CeCILL-C_V1-fr.html', 'iri.alt.format.txt(en)' => 'https://cecill.info/licences/Licence_CeCILL-C_V1-en.txt', 'iri.alt.format.txt(fr)' => 'https://cecill.info/licences/Licence_CeCILL-C_V1-fr.txt', tags => ['type:singleversion:cecill_c'], 'pat.alt.subject.name.misc.short' => "CeCILL${D}C(?: License)?(?:${SD}1(?:\.0)?)?", '_pat.alt.subject.grant.scope.line.scope.sentence(en)' => [ 'under the terms of the CeCILL-C license', 'governed by the CeCILL-C license', ], 'pat.alt.subject.grant.scope.line.scope.sentence(fr)' => 'Ce logiciel est r[é]gi par la licence CeCILL-C soumise', '_pat.alt.subject.license.scope.line.scope.sentence(en)' => [ 'The exercising of this right is conditional upon the obligation', 'the Software modified or not;', ], '_pat.alt.subject.license.scope.line.scope.sentence(fr)' => [ 'aux utilisateurs la libert[é] de modifier et', 'Logiciel modifi[é] ou non;', ], 'pat.alt.subject.license.scope.all(en)' => "the Software modified or not;$EE${BB}to ensure that use of", 'pat.alt.subject.license.scope.all(fr)' => "Logiciel modifi[é] ou non;$EE${BB}[à] faire en sorte que", }; =item * cpl =item * cpl_1 =cut $RE{cpl} = { name => 'CPL', 'name.alt.org.wikidata' => 'Q2477807', caption => 'Common Public License', 'caption.alt.org.wikipedia' => 'Common Public License', 'caption.alt.misc.british' => 'Common Public Licence', description => <<'END', Origin: IBM Public License (IPL) END tags => ['type:versioned:decimal'], }; $RE{cpl_1} = { name => 'CPL-1.0', caption => 'Common Public License 1.0', 'caption.alt.misc.legal' => 'Common Public License Version 1.0', tags => ['type:singleversion:cpl'], 'pat.alt.subject.license.scope.sentence' => "IBM is the initial Agreement Steward", 'pat.alt.subject.license.scope.multisection.part.head' => "(?:Common Public License Version 1\\.0${EE})?" . "THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE \\(${Q}AGREEMENT$Q\\)$F$E" . "ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT${Q}S ACCEPTANCE OF THIS AGREEMENT$F(?: |$EE)" . "$BB$EE?DEFINITIONS$EE" . "${Q}Contribution${Q} means$CQ?$EE" . "${BB}in the case of the initial Contributor, the initial code", }; =item * cube =cut $RE{cube} = { name => 'Cube', 'name.alt.org.spdx' => 'Cube', caption => 'Cube License', tags => [ 'family:zlib', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}$F$E$P{use_ack_apprec_not_req}$F$EE$P{altered_srcver_mark}$F$EE$P{notice_no_alter_any}$F${EE}additional clause specific to Cube:?$E$P{src_no_relicense}", }; =item * curl =cut $RE{curl} = { 'name.alt.org.spdx' => 'curl', caption => 'curl License', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{note_copr_perm}$F$EE$P{asis_sw_warranty}", }; =item * dsdp =cut $RE{dsdp} = { name => 'DSDP', 'name.alt.org.fedora.web' => 'DSDP', 'name.alt.org.spdx' => 'DSDP', caption => 'DSDP License', 'caption.alt.org.fedora.web.mit' => 'PetSC variant', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'This program discloses material protectable', 'pat.alt.subject.license.scope.paragraph' => "$P{asis_expr_warranty}$F$E$P{perm_granted}", }; =item * epl =item * epl_1 =item * epl_2 =cut $RE{epl} = { name => 'EPL', 'name.alt.org.wikidata' => 'Q1281977', caption => 'Eclipse Public License', 'caption.alt.org.wikipedia' => 'Eclipse Public License', 'caption.alt.misc.british' => 'Eclipse Public Licence', description => <<'END', Origin: Common Public License (CPL) END tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?Eclipse Public Licen[cs]e(?: \\(EPL\\))?", "${the}EPL\\b", ], # TODO: readd when children cover same region # 'pat.alt.subject.license.scope.sentence' => # "The Eclipse Foundation is the initial Agreement Steward", }; $RE{epl_1} = { name => 'EPL-1.0', caption => 'Eclipse Public License 1.0', 'caption.alt.misc.legal' => 'Eclipse Public License - v 1.0', tags => ['type:singleversion:epl'], 'pat.alt.subject.license.scope.sentence' => "Eclipse Public License $D v 1\\.0${EE}THE ACCOMPANYING", 'pat.alt.subject.license.scope.multisection.part.head' => "(?:Eclipse Public License $D v 1\\.0${EE})?" . "THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE \\(${Q}AGREEMENT$Q\\)$F$E" . "ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT${Q}S ACCEPTANCE OF THIS AGREEMENT$F(?: |$EE)" . "$BB$EE?DEFINITIONS$EE" . "${Q}Contribution${Q} means$CQ?$EE" . "${BB}in the case of the initial Contributor, the initial code", }; $RE{epl_2} = { name => 'EPL-2.0', caption => 'Eclipse Public License 2.0', 'caption.alt.misc.legal' => 'Eclipse Public License - v 2.0', tags => ['type:singleversion:epl'], 'pat.alt.subject.license.scope.sentence' => "Eclipse Public License $D v 2\\.0${EE}THE ACCOMPANYING", 'pat.alt.subject.license.scope.multisection.part.head' => "(?:Eclipse Public License $D v 1\\.0${EE})?" . "THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE \\(${Q}AGREEMENT$Q\\)$F$E" . "ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT${Q}S ACCEPTANCE OF THIS AGREEMENT$F(?: |$EE)" . "$BB$EE?DEFINITIONS$EE" . "${Q}Contribution${Q} means$CQ?$EE" . "${BB}in the case of the initial Contributor, the initial content", }; =item * eurosym =cut $RE{eurosym} = { name => 'Eurosym', 'name.alt.org.spdx' => 'Eurosym', caption => 'Eurosym License', tags => [ 'family:zlib', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}$F$E$P{use_ack_apprec}$F$EE$P{altered_srcver_mark}$F$EE$BB?$P{you_not_use_ad_dist} $P{without_written_prior}$F$EE$BB?$P{change_redist_share}$F$EE$P{notice_no_alter}", }; =item * fsfap =cut $RE{fsfap} = { name => 'FSFAP', 'name.alt.org.gnu' => 'GNUAllPermissive', 'name.alt.org.spdx' => 'FSFAP', caption => 'FSF All Permissive License', 'caption.alt.org.gnu' => 'GNU All-Permissive License', iri => 'https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => 'Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved', }; =item * fsful =cut $RE{fsful} = { name => 'FSFUL', 'name.alt.org.spdx' => 'FSFUL', caption => 'FSF Unlimited License', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "This configure script is free software; $fsf_ul", }; =item * fsfullr =cut $RE{fsfullr} = { name => 'FSFULLR', 'name.alt.org.spdx' => 'FSFULLR', caption => 'FSF Unlimited License (with Retention)', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "This file is free software; $fsf_ullr", }; =item * ftl =cut $RE{ftl} = { name => 'FTL', 'name.alt.org.spdx' => 'FTL', caption => 'FreeType License', 'caption.alt.legal.license' => 'The Freetype Project LICENSE', 'caption.alt.org.tldr' => 'Freetype Project License (FTL)', iri => 'https://www.freetype.org/license.html', tags => ['type:unversioned'], '_pat.alt.subject.name' => [ "$the?FreeType(?: [Pp]roject)? [Ll]icense(?: \\(FTL\\))?", 'The FreeType Project LICENSE', ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'This license applies to all files found in such packages', }; =item * gfdl =cut $RE{gfdl} = { name => 'GFDL', 'name.alt.org.gnu' => 'FDL', caption => 'GNU Free Documentation License', 'caption.alt.misc.british' => 'GNU Free Documentation Licence', 'caption.alt.misc.trove' => 'GNU Free Documentation License (FDL)', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?$gnu?Free Documentation Licen[cs]e(?: \\(GFDL\\))?$by_fsf?", "$the$gnu?GFDL", "${gnu}GFDL", ], }; =item * gfdl_niv =cut $RE{gfdl_niv} = { name => 'GFDL-NIV', caption => 'GNU Free Documentation License (no invariant sections)', 'caption.alt.misc.british' => 'GNU Free Documentation Licence (no invariant sections)', summary => 'GNU Free Documentation License, with no Front-Cover or Back-Cover Texts or Invariant Sections', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?$gnu?Free Documentation Licen[cs]e(?: \\(GFDL\\))?$by_fsf?[,;]? $niv", "$the$gnu?GFDL${D}NIV", "${gnu}GFDL${D}NIV", ], }; =item * gpl =cut $RE{gpl} = { name => 'GPL', 'name.alt.org.gnu' => 'GNUGPL', 'name.alt.org.osi' => 'GPL', 'name.alt.org.osi' => 'gpl-license', 'name.alt.org.wikidata' => 'Q7603', caption => 'GNU General Public License', 'caption.alt.org.gnu' => 'GNU General Public License (GPL)', 'caption.alt.org.osi' => 'GNU General Public License', 'caption.alt.org.osi.alt.list' => 'GNU General Public License (GPL)', 'caption.alt.org.trove' => 'GNU General Public License (GPL)', 'caption.alt.org.wikipedia' => 'GNU General Public License', 'caption.alt.misc.british' => 'GNU General Public Licence', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?$gnu?$gpl(?: \\(GPL\\))?$by_fsf?", "$the$gnu?GPL", "${the}GNU [Ll]icense", "${gnu}GPL", ], }; =item * isc =cut $RE{isc} = { name => 'ISC', 'name.alt.org.osi' => 'ISC', 'name.alt.org.spdx' => 'ISC', 'name.alt.org.tldr' => '-isc-license', 'name.alt.org.tldr.path.short' => 'isc', 'name.alt.org.wikidata' => 'Q386474', caption => 'ISC License', 'caption.alt.misc.openbsd' => 'OpenBSD License', 'caption.alt.org.tldr' => 'ISC License', 'caption.alt.org.trove' => 'ISC License (ISCL)', 'caption.alt.org.wikipedia' => 'ISC license', 'caption.alt.misc.british' => 'ISC licence', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{note_copr_perm}$F$EE$P{asis_sw_name_discl}", }; =item * icu =cut $RE{icu} = { name => 'ICU', caption => 'ICU License', 'caption.alt.org.fedora.web.mit' => 'Modern style (ICU Variant)', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{note_copr_perm} of the Software and that $P{repro_copr_perm_appear_doc}$F$EE$P{asis_sw_warranty}(?:[^.]+$F$E){2}$P{nopromo_except}", }; =item * ipl =item * ipl_1 =cut $RE{ipl} = { name => 'IPL', 'name.alt.org.wikidata' => 'Q288745', caption => 'IBM Public License', 'caption.alt.org.wikipedia' => 'IBM Public License', 'caption.alt.misc.british' => 'IBM Public Licence', tags => ['type:versioned:decimal'], }; $RE{ipl_1} = { name => 'IPL-1.0', caption => 'IBM Public License 1.0', 'caption.alt.misc.legal' => 'IBM Public License Version 1.0', tags => ['type:singleversion:ipl'], 'pat.alt.subject.license.scope.sentence' => 'UNDER THE TERMS OF THIS IBM', 'pat.alt.subject.license.scope.multisection.part.head' => "(?:IBM Public License Version 1\\.0${EE})?" . "THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM PUBLIC LICENSE \\(${Q}AGREEMENT$Q\\)$F$E" . "ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT${Q}S ACCEPTANCE OF THIS AGREEMENT$F$EE" . "$BB$EE?DEFINITIONS$EE" . "${Q}Contribution${Q} means$CQ?$EE" . "${BB}in the case of International Business Machines Corporation \\(${Q}IBM$Q\\), the Original Program", }; =item * json =cut $RE{json} = { name => 'JSON', caption => 'JSON License', 'caption.alt.org.tldr' => 'The JSON License', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => "The Software shall be used for Good, not Evil$F", }; =item * jython =cut $RE{jython} = { name => 'Jython', 'name.alt.org.spdx' => 'CNRI-Jython', caption => 'Jython License', 'caption.alt.org.spdx' => 'CNRI Jython License', 'caption.alt.legal.license' => 'The Jython License', iri => 'http://www.jython.org/license.txt', tags => ['type:unversioned'], 'pat.alt.subject.license.scope.line.scope.sentence' => "${BB}PSF is making Jython available to Licensee", }; =item * kevlin_henney =cut $RE{kevlin_henney} = { name => 'Kevlin-Henney', caption => 'Kevlin Henney License', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{note_copr_perms_deriv}$F$EE$P{asis_sw_expr_warranty}", }; =item * lgpl =cut $RE{lgpl} = { name => 'LGPL', 'name.alt.org.gnu' => 'LGPL', 'name.alt.org.osi' => 'lgpl-license', 'name.alt.org.wikidata' => 'Q192897', caption => 'GNU Lesser General Public License', 'caption.alt.org.gnu' => 'GNU Lesser General Public License (LGPL)', 'caption.alt.org.osi' => 'GNU LGPL', 'caption.alt.org.osi.alt.list' => 'GNU Lesser General Public License (LGPL)', 'caption.alt.org.trove' => 'GNU Library or Lesser General Public License (LGPL)', 'caption.alt.org.wikipedia' => 'GNU Lesser General Public License', 'caption.alt.org.osi' => 'GNU LGPL', 'caption.alt.org.osi.alt.list' => 'GNU Lesser General Public License (LGPL)', 'caption.alt.misc.british' => 'GNU Lesser General Public Licence', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?$gnu?Library $gpl(?: \\(LGPL\\))?$by_fsf?", "$the?$gnu?Lesser(?: \\(Library\\))? $gpl(?: \\(LGPL\\))?$by_fsf?", "$the?$gnu?LIBRARY GENERAL PUBLIC LICEN[CS]E(?: \\(LGPL\\))?$by_fsf?", "$the?$gnu?LESSER GENERAL PUBLIC LICEN[CS]E(?: \\(LGPL\\))?$by_fsf?", "$the$gnu?LGPL", "${gnu}LGPL", ], }; =item * lgpl_bdwgc =cut $RE{lgpl_bdwgc} = { name => 'LGPL-bdwgc', caption => 'GNU Lesser General Public License (modified-code-notice clause)', summary => 'The GNU Lesser General Public License, with modified-code-notice clause', description => <<'END', Origin: Possibly Boehm-Demers-Weiser conservative C/C++ Garbage Collector (libgc, bdwgc, boehm-gc). END tags => ['type:unversioned'], 'pat.alt.subject.license.scope.multisection' => "$P{perm_granted} $P{to_copy} $P{this_prg} under the terms of $the${gnu}LGPL, $P{retain_copr_avail_orig}$F$EE$P{repro_code_modcode_cite_copr_avail_note}, and $Q$P{used_perm}$F$Q$E$P{perm} $P{to_dist_mod} $P{granted}, $P{retain_copr_avail_note}, and $P{note_mod}$F", 'pat.alt.subject.license.scope.line.scope.sentence' => 'code must cite the Copyright', }; =item * libpng =cut $RE{libpng} = { name => 'Libpng', 'name.alt.org.spdx' => 'Libpng', caption => 'Libpng License', tags => ['type:unversioned'], 'pat.alt.subject.license.scope.multisection' => "$P{origin_src_no_misrepresent}$F$EE$P{altered_ver_mark}$F$EE$P{copr_no_alter}", }; =item * llgpl =cut $RE{llgpl} = { name => 'LLGPL', 'name.alt.org.tldr' => 'lisp-lesser-general-public-license', caption => 'Lisp Lesser General Public License', 'caption.alt.org.tldr' => 'Lisp Lesser General Public License (LLGPL)', iri => 'http://opensource.franz.com/preamble.html', 'iri.alt.misc.cliki' => 'http://www.cliki.net/LLGPL', tags => [ 'type:unversioned', 'license:contains:license:llgpl_2_1' ], '_pat.alt.subject.name' => [ "$the?Lisp Lesser $gpl(?: \\(LLGPL\\))?", "${the}LLGPL\\b", ], }; =item * mit_advertising =cut $RE{mit_advertising} = { name => 'MIT-advertising', 'name.alt.org.spdx' => 'MIT-advertising', caption => 'Enlightenment License (e16)', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "$P{note_marketing}\\b[^.,]+, and $P{ack_doc_mat_pkg_use}", }; =item * mit_cmu =cut $RE{mit_cmu} = { name => 'MIT-CMU', 'name.alt.org.spdx' => 'MIT-CMU', caption => 'CMU License', 'caption.alt.org.fedora.web.mit' => 'CMU Style', description => <<'END', Identical to NTP, except... * omit explicit permission for charging fee * exclude suitability disclaimer * exclude terse "as is" warranty disclaimer * include elaborate warranty disclaimer * include liability disclaimer SPDX and fedora sample seem not generic but the unique file COPYING from project net-snmp. END tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "Permission $P{to_dist} $P{sw_doc} $P{any_purpose} and $P{nofee} $P{granted}, $P{retain_copr_appear} and that $P{repro_copr_perm_appear_doc}, and that $P{nopromo_name_written}$F", 'pat.alt.subject.license.scope.line.scope.sentence' => 'without specific written permission', }; =item * mit_cmu_warranty =cut $RE{mit_cmu_warranty} = { 'name.alt.org.debian' => 'MIT-CMU~warranty', caption => 'CMU License (retain warranty disclaimer)', 'caption.alt.org.fedora.web.mit' => 'Standard ML of New Jersey Variant', 'caption.alt.org.fedora.web.mit.short' => 'MLton variant', description => <<'END', Identical to MIT-CMU, except... * add requirement of "warranty disclaimer" appearing in documentation END tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "Permission $P{to_dist} $P{sw_doc} $P{any_purpose} and $P{nofee} $P{granted}, $P{retain_copr_appear} and that $P{repro_copr_perm_warr_appear_doc}, and that $P{nopromo_name_written_prior}$F", 'pat.alt.subject.license.scope.line.scope.sentence' => 'warranty disclaimer appear', }; =item * mit_enna =cut $RE{mit_enna} = { name => 'MIT-enna', 'name.alt.org.fedora.web.mit.short' => 'enna', 'name.alt.org.spdx' => 'MIT-enna', caption => 'enna License', 'caption.alt.org.fedora.web.mit' => 'enna variant', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.section' => "$P{perm_granted}, $P{free_charge}, $P{to_pers} $P{the_sw}, $P{to_deal_the_sw_rights} $P{to_mod_sublic} $P{sw}, and $P{to_perm_pers}, $P{subj_cond}:?$E$P{retain_copr_perm_sw_copr}$F$E$P{ack_pub_use_nosrc}$F${E}This includes acknowledgments in either Copyright notices, Manuals, Publicity and Marketing documents or any documentation provided with any product containing this software$F$E$P{license_not_lib}$F", 'pat.alt.subject.license.scope.line' => $P{ack_pub_use_nosrc}, }; =item * mit_feh =cut $RE{mit_feh} = { name => 'MIT-feh', 'name.alt.org.fedora.web.mit.short' => 'feh', 'name.alt.org.spdx' => 'MIT-feh', caption => 'feh License', 'caption.alt.org.fedora.web.mit' => 'feh variant', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.paragraph' => "$P{perm_granted}, $P{free_charge}, $P{to_pers} $P{the_sw}, $P{to_deal_the_sw_rights} $P{to_mod_sublic} $P{sw}, and $P{to_perm_pers}, $P{subj_cond}:?$E$P{retain_copr_perm_sw_doc} and $P{ack_doc_pkg_use}$F", }; =item * mit_new =cut $RE{mit_new} = { 'name.alt.org.debian' => 'Expat', 'name.alt.org.fedora' => 'MIT', 'name.alt.org.osi' => 'MIT', 'name.alt.org.spdx' => 'MIT', 'name.alt.org.tldr' => 'mit-license', 'name.alt.org.tldr.path.short' => 'mit', caption => 'MIT License', 'caption.alt.org.debian' => 'Expat License', 'caption.alt.org.fedora.web.mit' => 'Modern Style with sublicense', 'caption.alt.org.osi' => 'The MIT License', 'caption.alt.org.osi.alt.list' => 'MIT license (MIT)', 'caption.alt.org.tldr' => 'MIT License (Expat)', 'caption.alt.misc.british' => 'MIT licence', iri => 'http://www.jclark.com/xml/copying.txt', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/MIT_License', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "$P{to_mod_sublic} $P{sw}\\b[^.]+\\s+$P{retain_copr_perm_subst}", }; =item * mit_new_materials =cut $RE{mit_new_materials} = { name => 'Khronos', caption => 'Khronos License', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "$P{perm_granted}, $P{free_charge}, $P{to_pers} $P{the_material}, $P{to_deal_mat}", }; =item * mit_old =cut $RE{mit_old} = { 'name.alt.org.debian' => 'MIT~old', 'name.alt.org.gentoo' => 'Old-MIT', caption => 'MIT (old)', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => "$P{perm_granted}, $P{free_agree_fee}", }; =item * mit_oldstyle =cut $RE{mit_oldstyle} = { 'name.alt.org.debian' => 'MIT~oldstyle', caption => 'MIT (Old Style)', 'caption.alt.org.fedora.web.mit' => 'Old Style', description => <<'END', Origin: Possibly by Jamie Zawinski in 1993 for xscreensaver. END tags => [ 'mit', 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.paragraph' => "documentation$F${E}No representations are made", }; =item * mit_oldstyle_disclaimer =cut $RE{mit_oldstyle_disclaimer} = { 'name.alt.org.debian' => 'MIT~oldstyle~disclaimer', caption => 'MIT (Old Style, legal disclaimer)', 'caption.alt.org.fedora.web.mit' => 'Old Style with legal disclaimer', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "supporting documentation$F$EE$P{asis_name_sw}", }; =item * mit_oldstyle_permission =cut $RE{mit_oldstyle_permission} = { 'name.alt.org.debian' => 'MIT~oldstyle~permission', 'caption.alt.org.fedora.web.mit' => 'Old Style (no advertising without permission)', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{without_written_prior}$F$EE$P{asis_name_sw}", }; =item * mpl =item * mpl_1 =item * mpl_1_1 =item * mpl_2 =cut $RE{mpl} = { name => 'MPL', 'name.alt.org.wikidata' => 'Q308915', caption => 'Mozilla Public License', 'name.alt.org.wikipedia' => 'Mozilla Public License', 'name.alt.misc.british' => 'Mozilla Public Licence', iri => 'https://www.mozilla.org/MPL', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?Mozilla Public Licen[cs]e(?: \\($Q?(?:https?:?//mozilla.org/)?MPL$Q?\\))?(?: (?:as )?published by $the\{0,2}Mozilla Foundation)?", "${the}MPL\\b", ], }; $RE{mpl_1} = { name => 'MPL-1.0', caption => 'Mozilla Public License 1.0', tags => ['type:singleversion:mpl'], 'pat.alt.subject.license.scope.multiparagraph.part.head' => "MOZILLA PUBLIC LICENSE${E}Version 1\\.0$EE${BB}Definitions", }; $RE{mpl_1_1} = { name => 'MPL-1.1', caption => 'Mozilla Public License 1.1', tags => ['type:singleversion:mpl'], 'pat.alt.subject.license.scope.multiparagraph.part.head' => "Mozilla Public License Version 1\\.1$EE${BB}Definitions", }; $RE{mpl_2} = { name => 'MPL-2.0', caption => 'Mozilla Public License 2.0', tags => ['type:singleversion:mpl'], 'pat.alt.subject.license.scope.multiparagraph.part.head' => "Mozilla Public License Version 2\\.0$EE${BB}Definitions", }; =item * ms_pl =cut $RE{ms_pl} = { name => 'MS-PL', 'name.alt.org.osi' => 'MS-PL', 'name.alt.org.spdx' => 'MS-PL', 'name.alt.org.tldr.path.short' => 'mspl', caption => 'Microsoft Public License', 'caption.alt.org.tldr' => 'Microsoft Public License (Ms-PL)', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Shared_source#Microsoft_Public_License_(Ms-PL)', tags => [ 'type:unversioned', 'license:is:grant' ], '_pat.alt.subject.name' => [ "$the?Microsoft Public License(?: \\(Ms${D}PL\\))?", "${the}Ms${D}PL\\b", ], 'pat.alt.subject.license.scope.multiparagraph' => "Microsoft Public License \\(Ms-PL\\)${EE}This license governs use", }; =item * ms_rl =cut $RE{ms_rl} = { name => 'MS-RL', 'name.alt.org.osi' => 'MS-RL', 'name.alt.org.spdx' => 'MS-RL', 'name.alt.org.tldr.path.short' => 'nsrl', caption => 'Microsoft Reciprocal License', 'caption.alt.org.tldr' => 'Microsoft Reciprocal License (Ms-RL)', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/Shared_source#Microsoft_Reciprocal_License_(Ms-RL)', tags => [ 'type:unversioned', 'license:is:grant' ], '_pat.alt.subject.name' => [ "$the?Microsoft Reciprocal License(?: \\(Ms${D}RL\\))?", "${the}Ms${D}RL\\b", ], 'pat.alt.subject.license.scope.line.scope.sentence' => "Reciprocal Grants$D For any file you distribute that contains code", 'pat.alt.subject.license.scope.multiparagraph' => "Microsoft Reciprocal License \\(Ms${D}RL\\)${EE}This license governs use", }; =item * ntp =cut $RE{ntp} = { name => 'NTP', 'name.alt.org.osi' => 'NTP', 'name.alt.org.spdx' => 'NTP', caption => 'NTP License', 'caption.alt.org.tldr' => 'NTP License (NTP)', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => $P{asis_expr_warranty}, }; =item * ntp_disclaimer =cut $RE{ntp_disclaimer} = { 'name.alt.org.debian' => 'NTP~disclaimer', caption => 'NTP License (legal disclaimer)', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.paragraph' => "$P{asis_expr_warranty}$F$E$P{discl_name_warranties}", }; =item * ofl =item * ofl_1 =item * ofl_1_no_rfn =item * ofl_1_rfn =item * ofl_1_1 =item * ofl_1_1_no_rfn =item * ofl_1_1_rfn =cut $RE{ofl} = { name => 'OFL', caption => 'SIL Open Font License', 'caption.alt.misc.british' => 'SIL Open Font Licence', iri => 'http://scripts.sil.org/OFL', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?(?:SIL )?OPEN FONT LICEN[CS]E(?: \\(OFL\\))?", "$the?(?:SIL )?[Oo]pen [Ff]ont [Ll]icen[cs]e(?: \\(OFL\\))?", ], }; $RE{ofl_1} = { name => 'OFL-1.0', caption => 'SIL Open Font License 1.0', tags => ['type:singleversion:ofl'], 'pat.alt.subject.license.scope.line.scope.sentence' => "${Q}Font Software${Q} refers to any and all of the following", }; $RE{ofl_1_no_rfn} = { name => 'OFL-1.0-no-RFN', caption => 'SIL Open Font License 1.0 with no Reserved Font Name', description => <<'END', Usage: Should only be used when there is no Reserved Font Name. END tags => ['type:usage:ofl_1:no_rfn'], }; $RE{ofl_1_rfn} = { name => 'OFL-1.0-RFN', caption => 'SIL Open Font License 1.0 with Reserved Font Name', description => <<'END', Usage: Should only be used when a Reserved Font Name applies. END tags => ['type:usage:ofl_1:rfn'], }; $RE{ofl_1_1} = { name => 'OFL-1.1', caption => 'SIL Open Font License 1.1', tags => ['type:singleversion:ofl'], 'pat.alt.subject.license.scope.line.scope.sentence' => "${Q}Font Software${Q} refers to the set of files released", }; $RE{ofl_1_1_no_rfn} = { name => 'OFL-1.1-no-RFN', caption => 'SIL Open Font License 1.1 with no Reserved Font Name', description => <<'END', Usage: Should only be used when there is no Reserved Font Name. END tags => ['type:usage:ofl_1_1:no_rfn'], }; $RE{ofl_1_1_rfn} = { name => 'OFL-1.1-RFN', caption => 'SIL Open Font License 1.1 with Reserved Font Name', description => <<'END', Usage: Should only be used when a Reserved Font Name applies. END tags => ['type:usage:ofl_1_1:rfn'], }; =item * openssl =cut $RE{openssl} = { name => 'OpenSSL', 'name.alt.org.spdx' => 'OpenSSL', caption => 'OpenSSL License', 'caption.alt.org.tldr' => 'OpenSSL License (OpenSSL)', 'caption.alt.misc.british' => 'OpenSSL Licence', tags => ['type:unversioned'], 'pat.alt.subject.license.scope.multisection' => "$P{redist_ack_this} the OpenSSL Project for use in the OpenSSL Toolkit \\(${HT}www\\.openssl\\.org/\\)$Q$EE" . "THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ${Q}AS IS$Q" . " AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED$F" . " IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES" . " \\(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION\\)" . " HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \\(INCLUDING NEGLIGENCE OR OTHERWISE\\)" . " ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE$F$EE" . "This product includes cryptographic software written by Eric Young \\(eay[@]cryptsoft\\.com\\)$F${E}This product includes software written by Tim Hudson \\(tjh[@]cryptsoft\\.com\\)$F$EE" }; =item * postgresql =cut $RE{postgresql} = { name => 'PostgreSQL', 'name.alt.org.osi' => 'PostgreSQL', 'name.alt.org.spdx' => 'PostgreSQL', caption => 'PostgreSQL License', 'caption.alt.org.fedora.web' => 'PostgreSQL License', 'caption.alt.org.fedora.web.mit' => 'PostgreSQL License (MIT Variant)', 'caption.alt.org.tldr' => 'PostgreSQL License (PostgreSQL)', 'caption.alt.org.trove' => 'PostgreSQL License', 'caption.alt.misc.british' => 'PostgreSQL Licence', tags => [ 'family:mit', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => $P{permission_use_fee_agree}, }; =item * public_domain =cut $RE{public_domain} = { name => 'public-domain', 'name.alt.org.cc' => 'publicdomain', 'name.alt.org.gnu' => 'PublicDomain', 'name.alt.misc.case_and_dash' => 'Public-Domain', caption => 'Public domain', 'caption.alt.org.trove' => 'Public Domain', 'iri.alt.org.cc' => 'https://creativecommons.org/licenses/publicdomain', 'iri.alt.org.cc' => 'https://creativecommons.org/publicdomain/mark/1.0/', 'iri.alt.org.linfo' => 'http://www.linfo.org/publicdomain.html', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.name' => "$the?(?:[Pp]ublic|PUBLIC)${SD}(?:[Dd]omain|DOMAIN)", }; $RE{public_domain}{'pat.alt.subject.grant.scope.line.scope.sentence'} = [ "(?:[Tt]his is|[Tt]hey are|[Ii]t's) in $RE{public_domain}{'pat.alt.subject.name'}", "(?:[Tt]his|[Tt]he) +(?:(?:source )?code|document|file|library|macros|opening book|work) +is(?: put)?(?: in)? $RE{public_domain}{'pat.alt.subject.name'}", "are dedicated to $RE{public_domain}{'pat.alt.subject.name'}", "for use in $RE{public_domain}{'pat.alt.subject.name'}", "placed in(?:to)? $RE{public_domain}{'pat.alt.subject.name'}", "considered to be in $RE{public_domain}{'pat.alt.subject.name'}", "offered to use in $RE{public_domain}{'pat.alt.subject.name'}", "provided ${Q}as${SD}is$Q into $RE{public_domain}{'pat.alt.subject.name'}", "released to $RE{public_domain}{'pat.alt.subject.name'}", "RELEASED INTO $RE{public_domain}{'pat.alt.subject.name'}", ]; =item * python =item * python_2 =cut $RE{python} = { name => 'Python', 'name.alt.misc.short' => 'PSFL', 'name.alt.misc.shortest' => 'PSF', 'name.alt.org.wikidata' => 'Q2600299', caption => 'Python Software Foundation License', 'caption.alt.org.osi' => 'Python License', 'caption.alt.org.python' => 'PSF License Agreement', 'caption.alt.org.trove' => 'Python Software Foundation License', 'caption.alt.misc.desc' => 'new Python license', 'caption.alt.org.wikipedia' => 'Python Software Foundation License', 'summary.alt.org.osi' => 'Python License (overall Python license)', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?Python Software Foundation License", "PYTHON SOFTWARE FOUNDATION LICENSE", ], }; $RE{python_2} = { name => 'Python-2', 'name.alt.org.debian.misc.short' => 'PSF-2', 'name.alt.org.osi' => 'Python-2.0', 'name.alt.org.spdx' => 'Python-2.0', 'name.alt.org.tldr.path.short' => 'python2', caption => 'Python Software Foundation License version 2', 'caption.alt.legal.license' => 'PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2', 'caption.alt.org.osi' => 'Python License, Version 2', 'caption.alt.org.tldr' => 'Python License 2.0', 'summary.alt.org.osi' => 'Python License (overall Python license), Version 2', iri => 'https://www.python.org/psf/license/', tags => [ 'type:singleversion:python', 'license:contains:license:cnri_python' ], 'pat.alt.subject.license.scope.line.scope.sentence' => "${BB}PSF is making Python available to Licensee", }; =item * qpl =cut $RE{qpl} = { name => 'QPL', 'name.alt.org.wikidata' => 'Q1396282', caption => 'Q Public License', 'caption.alt.org.trove' => 'Qt Public License (QPL)', 'caption.alt.org.wikipedia' => 'Q Public License', 'caption.alt.misc.british' => 'Q Public Licence', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?Q Public Licen[cs]e(?: \\(QPL\\))?", "$the?Q PUBLIC LICEN[CS]E(?: \\(QPL\\))?", "${the}QPL\\b", ], }; =item * rpsl =item * rpsl_1 =cut $RE{rpsl} = { name => 'RPSL', 'name.alt.org.wikidata' => 'Q7300815', caption => 'RealNetworks Public Source License', 'caption.alt.org.wikipedia' => 'RealNetworks Public Source License', tags => ['type:versioned:decimal'], 'pat.alt.subject.name' => "$the?RealNetworks Public Source License", }; $RE{rpsl_1} = { name => 'RPSL-1.0', 'name.alt.org.osi' => 'RPSL-1.0', 'name.alt.org.spdx' => 'RPSL-1.0', caption => 'RealNetworks Public Source License 1.0', 'caption.alt.org.osi' => 'RealNetworks Public Source License V1.0', 'caption.alt.legal.license' => 'RealNetworks Public Source License Version 1.0', 'caption.alt.org.tldr' => 'RealNetworks Public Source License v1.0 (RPSL-1.0)', tags => [ 'type:singleversion:rpsl', 'license:contains:name:afl', 'license:contains:name:apache', 'license:contains:name:artistic', 'license:contains:name:bsd', 'license:contains:name:cpl', 'license:contains:name:gpl_1', 'license:contains:name:lgpl_1', 'license:contains:name:intel', 'license:contains:name:expat', 'license:contains:name:Motosoto', 'license:contains:name:mpl_1', 'license:contains:name:mpl_1_1', 'license:contains:name:nokia', 'license:contains:name:python', 'license:contains:name:rscpl', 'license:contains:name:siss_1_1', 'license:contains:name:ncsa', 'license:contains:name:zpl', 'license:contains:name:w3c', 'license:contains:name:xnet', 'license:contains:name:zlib', 'license:contains:name:libpng' ], 'pat.alt.subject.license.scope.line.scope.sentence' => "General Definitions$F This License applies to any program or other work", }; =item * sgi_b =item * sgi_b_1 =item * sgi_b_1_1 =item * sgi_b_2 =cut $RE{sgi_b} = { name => 'SGI-B', caption => 'SGI Free Software License B', iri => 'https://www.sgi.com/projects/FreeB/', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?SGI Free Software License B(?: \\(SGI${D}B\\))?", "$the?SGI FREE SOFTWARE LICENSE B(?: \\(SGI${D}B\\))?", '(?:SGI )?FreeB\b', "${the}SGI${D}B\\b", ], }; $RE{sgi_b_1} = { name => 'SGI-B-1.0', caption => 'SGI Free Software License B v1.0', tags => ['type:singleversion:sgi_b'], 'pat.alt.subject.license.scope.line.scope.paragraph' => "License Grant$F Subject to the provisions", 'pat.alt.subject.license.scope.multiparagraph.part.head' => "SGI FREE SOFTWARE LICENSE B${E}\\(Version 1\\.0 1${SL}25${SL}2000\\)$EE${BB}Definitions$F", }; $RE{sgi_b_1_1} = { name => 'SGI-B-1.1', caption => 'SGI Free Software License B v1.1', tags => ['type:singleversion:sgi_b'], 'pat.alt.subject.license.scope.line.scope.sentence' => 'SGI License Grant', 'pat.alt.subject.license.scope.multiparagraph.part.head' => "SGI FREE SOFTWARE LICENSE B${E}\\(Version 1\\.1 02${SL}22${SL}2000\\)$EE${BB}Definitions$F", }; $RE{sgi_b_2} = { name => 'SGI-B-2.0', caption => 'SGI Free Software License B v2.0', tags => ['type:singleversion:sgi_b'], 'pat.alt.subject.license.scope.line.scope.sentence' => 'The above copyright notice including the dates of first publication', 'pat.alt.subject.license.scope.multiparagraph.part.head' => "SGI FREE SOFTWARE LICENSE B${EE}" . "\\(Version 2\\.0, Sept\\. 18, 2008\\) " . "Copyright $C \\[dates of first publication\\] Silicon Graphics, Inc\\. " . "All Rights Reserved$F$EE" . $P{perm_granted}, }; =item * ssleay =cut $RE{ssleay} = { name => 'SSLeay', tags => [ 'type:unversioned', 'license:contains:license:bsd_2_clause', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'If this package is used in a product', 'pat.alt.subject.license.scope.multisection' => "$P{repro_copr_cond_discl}$F$EE$BB$P{ad_mat_ack_ssleay}?", 'pat.alt.subject.license.scope.line.scope.sentence.part.clause4_2' => "The word ${Q}cryptographic$Q can be left out", }; =item * unicode_strict =cut $RE{unicode_strict} = { name => 'Unicode-strict', 'name.alt.misc.scancode' => 'unicode-mappings', caption => 'Unicode strict', tags => [ 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'hereby grants the right to freely use', }; =item * unicode_tou =cut $RE{unicode_tou} = { name => 'Unicode-TOU', 'name.alt.org.spdx' => 'Unicode-TOU', caption => 'Unicode Terms of Use', tags => ['type:unversioned'], 'pat.alt.subject.license.scope.line.scope.sentence' => 'distribute all documents and files solely for informational', }; =item * wtfpl =item * wtfpl_1 =item * wtfpl_2 =cut $RE{wtfpl} = { name => 'WTFPL', 'name.alt.org.spdx' => 'WTFPL', 'name.alt.org.wikidata' => 'Q152481', 'name.alt.org.wikipedia' => 'WTFPL', caption => 'do What The Fuck you want to Public License', 'caption.alt.misc.censored' => 'Do What The F*ck You Want To Public License', 'caption.alt.misc.shorter' => 'WTF Public License', iri => 'http://www.wtfpl.net/', 'iri.alt.misc.old' => 'http://sam.zoy.org/wtfpl/COPYING', tags => ['type:versioned:decimal'], '_pat.alt.subject.name' => [ "$the?[Dd]o What The F(?:u|${B})ck [Yy]ou [Ww]ant(?: [Tt]o)? Public License(?: \\(WTFPL\\))?", "$the?DO WHAT THE F(?:U|${B})CK YOU WANT(?: TO)? PUBLIC LICENSE(?: \\(WTFPL\\))?", "${the}WTFPL\\b", ], 'pat.alt.subject.license.scope.sentence' => "[Yy]ou just${EE}DO WHAT THE FUCK YOU WANT TO$F", }; $RE{wtfpl_1} = { name => 'WTFPL-1.0', caption => 'Do What The Fuck You Want To Public License, Version 1', 'caption.alt.org.tldr' => 'Do What The F*ck You Want To Public License (WTFPL)', iri => 'http://cvs.windowmaker.org/co.php/wm/COPYING.WTFPL', tags => [ 'type:singleversion:wtfpl', 'license:is:grant' ], 'pat.alt.subject.license.scope.sentence' => "simple and you just${EE}DO WHAT THE FUCK YOU WANT TO$F", }; $RE{wtfpl_2} = { name => 'WTFPL-2', 'name.alt.org.tldr.path.short' => 'wtfpl', caption => 'Do What The Fuck You Want To Public License, Version 2', 'caption.alt.legal.license' => 'DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE, Version 2', 'caption.alt.org.tldr' => 'Do What The F*ck You Want To Public License v2 (WTFPL-2.0)', iri => 'http://www.wtfpl.net/', 'iri.alt.misc.old' => 'http://sam.zoy.org/wtfpl/COPYING', tags => [ 'type:singleversion:wtfpl', 'license:is:grant' ], 'pat.alt.subject.grant.scope.line.scope.sentence' => 'of the Do What The Fuck You Want To Public License', 'pat.alt.subject.license.scope.sentence' => "${BB}You just${EE}DO WHAT THE FUCK YOU WANT TO$F", }; =item * wtfnmfpl =item * wtfnmfpl_1 =cut $RE{wtfnmfpl} = { name => 'WTFNMFPL', 'caption.alt.org.tldr' => "Do What The Fuck You Want To But It's Not My Fault Public License v1 (WTFNMFPL-1.0)", tags => ['type:versioned:decimal'], }; $RE{wtfnmfpl_1} = { name => 'WTFNMFPL-1.0', 'name.alt.misc.short' => 'WTFNMFPLv1', caption => "Do What The Fuck You Want To But It's Not My Fault Public License v1", 'caption.alt.legal.license' => "DO WHAT THE FUCK YOU WANT TO BUT IT'S NOT MY FAULT PUBLIC LICENSE, Version 1", 'caption.alt.org.tldr' => "Do What The Fuck You Want To But It's Not My Fault Public License v1 (WTFNMFPL-1.0)", iri => 'http://www.adversary.org/wp/2013/10/14/do-what-the-fuck-you-want-but-its-not-my-fault/', 'iri.alt.web.github' => 'https://github.com/adversary-org/wtfnmf', tags => [ 'type:singleversion:wtfnmfpl', 'license:is:grant' ], 'pat.alt.subject.license.scope.line.scope.sentence' => 'Do not hold the author\(s\), creator\(s\), developer\(s\) or distributor\(s\)', }; =item * zlib =cut $RE{zlib} = { name => 'Zlib', 'name.alt.org.fsf' => 'Zlib', 'name.alt.org.osi' => 'Zlib', 'name.alt.org.spdx' => 'Zlib', 'name.alt.org.tldr.path.short' => 'zlib', 'name.alt.org.wikidata' => 'Q207243', caption => 'zlib/libpng license', 'caption.alt.org.osi' => 'The zlib/libpng License', 'caption.alt.org.tldr' => 'Zlib-Libpng License (Zlib)', 'caption.alt.org.trove' => 'zlib/libpng License', 'caption.alt.org.wikipedia' => 'zlib License', 'caption.alt.org.wikipedia.misc.case' => 'zlib license', iri => 'http://zlib.net/zlib_license.html', 'iri.alt.org.gzip' => 'http://www.gzip.org/zlib/zlib_license.html', tags => [ 'family:zlib', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}$F$E$P{use_ack_apprec_not_req}$F$EE$P{altered_srcver_mark}$F$EE$P{notice_no_alter}", }; =item * zlib_acknowledgement =cut $RE{zlib_acknowledgement} = { name => 'Nunit', 'name.alt.misc.orig' => 'NUnit', 'name.alt.org.spdx' => 'zlib-acknowledgement', caption => 'Nunit License', 'caption.alt.misc.orig' => 'NUnit License', 'caption.alt.org.spdx' => 'zlib/libpng License with Acknowledgement', tags => [ 'family:zlib', 'type:unversioned', 'license:is:grant' ], 'pat.alt.subject.license.scope.multisection' => "$P{origin_sw_no_misrepresent}; $P{you_not_claim_wrote}$F$E$P{use_ack_req}$F${EE}Portions Copyright \\S+ $ND+ Charlie Poole or Copyright \\S+ $ND+ James W\\. Newkirk, Michael C\\. Two, Alexei A\\. Vorontsov or Copyright \\S+ $ND+ Philip A\\. Craig$EE$P{altered_srcver_mark}$F$EE$P{notice_no_alter}", }; =item * zpl =item * zpl_1 =item * zpl_1_1 =item * zpl_2 =item * zpl_2_1 =cut $RE{zpl} = { name => 'ZPL', 'name.alt.org.wikidata' => 'Q3780982', 'name.alt.org.wikipedia' => 'Zope_Public_License', caption => 'Zope Public License', 'caption.alt.org.trove.synth.nogrant' => 'Zope Public License', 'caption.alt.org.wikipedia' => 'Zope Public License', tags => ['type:versioned:decimal'], }; $RE{zpl_1} = { name => 'ZPL-1.0', 'name.alt.org.fsf' => 'ZopePLv1.0', caption => 'Zope Public License (ZPL) Version 1.0', 'caption.alt.misc.plain' => 'Zope Public License 1.0', 'iri.alt.archive.20000816090640' => 'http://www.zope.org/Resources/ZPL', tags => ['type:singleversion:zpl'], }; $RE{zpl_1_1} = { name => 'ZPL-1.1', 'name.alt.org.spdx' => 'ZPL-1.1', caption => 'Zope Public License 1.1', tags => ['type:singleversion:zpl'], }; $RE{zpl_2} = { name => 'ZPL-2.0', 'name.alt.org.osi' => 'ZPL-2.0', 'name.alt.org.spdx' => 'ZPL-2.0', 'name.alt.org.tldr.path.short' => 'zpl-2.0', caption => 'Zope Public License 2.0', 'caption.alt.org.osi' => 'The Zope Public License Ver.2.0', 'caption.alt.org.tldr' => 'Zope Public License 2.0 (ZPL-2.0)', iri => 'http://old.zope.org/Resources/License/ZPL-1.1', tags => ['type:singleversion:zpl'], 'pat.alt.subject.license.scope.sentence' => 'The name Zope Corporation \(tm\) must not be used to endorse', }; $RE{zpl_2_1} = { name => 'ZPL-2.1', 'name.alt.org.fsf' => 'ZPL-2.1', 'name.alt.org.spdx' => 'ZPL-2.1', caption => 'Zope Public License 2.1', 'caption.alt.org.fsf' => 'Zope Public License Version 2.1', iri => 'http://old.zope.org/Resources/ZPL/', tags => ['type:singleversion:zpl'], }; =back =head2 Licensing traits Patterns each covering a single trait occuring in licenses. Each of these patterns has the tag B< type:trait >. =over =item * any_of =cut $RE{any_of} = { caption => 'license grant "any of the following" phrase', tags => ['type:trait'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '(?P<_any_of>(?:any|one or more) of the following(?: licen[cs]es(?: at your choice)?)?)[.:]? ?', }; =item * clause_retention =cut $RE{'clause_retention'} = { caption => 'retention clause', tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $P{retain_notice_cond_discl}, }; =item * clause_reproduction =cut $RE{'clause_reproduction'} = { caption => 'reproduction clause', tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $P{repro_copr_cond_discl}, }; =item * clause_advertising =cut $RE{'clause_advertising'} = { caption => 'advertising clause', tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $P{ad_mat_ack_this}, }; =item * clause_advertising_always =cut $RE{'clause_advertising_always'} = { caption => 'advertising clause (always)', tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $P{redist_ack_this}, }; =item * clause_non_endorsement =cut $RE{'clause_non_endorsement'} = { caption => 'non-endorsement clause', tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $P{nopromo_neither}, }; =item * fsf_unlimited =cut $RE{'fsf_unlimited'} = { tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $fsf_ul, }; =item * fsf_unlimited_retention =cut $RE{'fsf_unlimited_retention'} = { tags => ['type:trait'], 'pat.alt.subject.trait.scope.sentence' => $fsf_ullr, }; =item * license_label =cut $RE{license_label} = { caption => 'license grant "License:" phrase', tags => ['type:trait:grant:prefix'], 'pat.alt.subject.trait.scope.line.scope.sentence' => "(?P<_license_label>[Ll]icen[sc]e|[Ii]dentifier)$CQ", }; =item * license_label_trove =cut $RE{license_label_trove} = { caption => 'license grant "License:" phrase', tags => ['type:trait:grant:prefix'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '(?P<_license_label_trove>License(?: ::)? OSI Approved(?: ::)?)', }; =item * licensed_under =cut $RE{licensed_under} = { caption => 'license grant "licensed under" phrase', tags => ['type:trait:grant:prefix'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '(?P<_licensed_under>' . '(?:(?:[Ll]icen[sc]ed(?: for use)?|[Dd]istribut(?:able|ed)|[Ff]or distribution|permitted|provided|[Pp]ublished|[Rr]eleased) under' . '|[Ll]icen[sc]ed using|is subject to the provisions of' . '|(?:in form of source code|may be copied|placed their code|to [Yy]ou) under' . '|(?:[Tt]his|[Mm]y) (?:software|file|work) is under' # vague: object required . '|(?:are|is) release under' # vague: object required . '|which I release under' # vague: subject required . '|(?:according|[Ss]ubject) to|in accordance with' . '|(?:[Cc]overed|governed) by)' . '(?: (?:the )?(?:conditions|terms(?: and conditions)?) (?:described in|of))?' # strong: terms optional . '|[Uu]nder (?:the )?(?:terms|(?:terms and )?conditions) (?:described in|of)' # vague: terms required . ') ', }; =item * or_at_option =cut $RE{'or_at_option'} = { caption => 'license grant "or at your option" phrase', tags => ['type:trait'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '(?P<_or_at_option>(?:and|or)(?: ?\(?at your (?:option|choice)\)?)?)', }; =item * usage_rfn =cut $RE{usage_rfn} = { caption => 'license usage "with Reserved Font Name" phrase', tags => ['type:trait:usage:rfn'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '(?P<_usage_rfn>with Reserved Font Name)', }; =item * version =cut $RE{'version'} = { tags => ['type:trait'], }; =item * version_later =cut $RE{'version_later'} = { caption => 'version "or later"', tags => ['type:trait'], }; =item * version_later_paragraph =cut $RE{'version_later_paragraph'} = { caption => 'version "or later" postfix (paragraphs)', tags => ['type:trait'], 'pat.alt.subject.trait.scope.paragraph' => '(?P<_version_later_paragraph>Later versions are permitted)', }; =item * version_later_postfix =cut $RE{'version_later_postfix'} = { caption => 'version "or later" (postfix)', tags => ['type:trait'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '\(?(?P<_version_later_postfix>' . $RE{or_at_option}{'pat.alt.subject.trait.scope.line.scope.sentence'} . '(?: any)? (?:later|above|newer)(?: version)?' . '|or any later at your option)\)?', }; $RE{version_later}{'pat.alt.subject.trait.scope.line.scope.sentence'} = ",? (?P" . "$RE{version_later_postfix}{'pat.alt.subject.trait.scope.line.scope.sentence'})"; $RE{version_later}{'pat.alt.subject.trait.scope.paragraph'} = "$F$E(?P" . "$RE{version_later_paragraph}{'pat.alt.subject.trait.scope.paragraph'})"; $RE{version_later}{'pat.alt.subject.trait'} = "(?:$F$E|,? )(?P" . $RE{version_later_paragraph}{'pat.alt.subject.trait.scope.paragraph'} . "|$RE{version_later_postfix}{'pat.alt.subject.trait.scope.line.scope.sentence'})"; =item * version_number =cut $RE{'version_number'} = { caption => 'version number', tags => ['type:trait'], 'pat.alt.subject.trait.scope.line.scope.sentence' => '(?P\d(?:\.\d)*)', }; =item * version_numberstring =cut $RE{'version_numberstring'} = { caption => 'version numberstring', tags => ['type:trait'], }; =item * version_prefix =cut $RE{'version_prefix'} = { caption => 'version prefix', tags => ['type:trait'], 'pat.alt.subject.trait.scope.line.scope.sentence' => "(?:$D|[,;]?(?: (?:only |either )?)?|$DD)?\\(?(?:[Vv]ersion [Vv]?|VERSION |[Vv]\\.? ?)?", 'pat.alt.subject.trait.scope.paragraph' => ":?$E\\(?(?:Version [Vv]?|VERSION )?", 'pat.alt.subject.trait' => "(?:$D|[,;](?: (?:either )?)?|$DD|:?$E)?\\(?(?:[Vv]ersion [Vv]?|VERSION |[Vv]\\.? ?)?", }; $RE{version_numberstring}{'pat.alt.subject.trait.scope.line.scope.sentence'} = $RE{version_prefix}{'pat.alt.subject.trait.scope.line.scope.sentence'} . $RE{version_number}{'pat.alt.subject.trait.scope.line.scope.sentence'} . '(?:(?: of the)? Licen[cs]e)?'; $RE{version_numberstring}{'pat.alt.subject.trait.scope.paragraph'} = $RE{version_prefix}{'pat.alt.subject.trait.scope.paragraph'} . $RE{version_number}{'pat.alt.subject.trait.scope.line.scope.sentence'} . '(?:(?: of the)? Licen[cs]e)?'; $RE{version_numberstring}{'pat.alt.subject.trait'} = $RE{version_prefix}{'pat.alt.subject.trait'} . $RE{version_number}{'pat.alt.subject.trait.scope.line.scope.sentence'} . '(?:(?: of the)? Licen[cs]e)?'; $RE{version}{'pat.alt.subject.trait.scope.line.scope.sentence'} = '(?P<_version>' . $RE{version_numberstring} {'pat.alt.subject.trait.scope.line.scope.sentence'} . "(?:$RE{version_later}{'pat.alt.subject.trait.scope.line.scope.sentence'})?)\\)?"; $RE{version}{'pat.alt.subject.trait.scope.paragraph'} = '(?P<_version>' . $RE{version_numberstring}{'pat.alt.subject.trait.scope.paragraph'} . "(?:$RE{version_later}{'pat.alt.subject.trait.scope.paragraph'})?)\\)?"; $RE{version}{'pat.alt.subject.trait'} = '(?P<_version>' . $RE{version_numberstring}{'pat.alt.subject.trait'} . "(?:$RE{version_later}{'pat.alt.subject.trait'})?)\\)?"; =back =head2 License combinations Patterns each covering a combination of multiple licenses. Each of these patterns has the tag B< type:combo >. =over =item * perl =back =cut $RE{'perl'} = { name => 'Perl', 'name.alt.org.spdx' => 'Artistic or GPL-1+', caption => 'The Perl 5 License', 'caption.alt.misc.short' => 'Perl License', 'caption.alt.misc.long' => 'The Perl 5 programming language License', summary => 'the same terms as the Perl 5 programming language itself (Artistic or GPL)', 'summary.alt.misc.short' => 'same terms as Perl', tags => ['type:combo'], 'pat.alt.subject.grant.scope.line.scope.sentence.org.software_license' => 'same terms as the Perl 5 programming language system itself', }; =head2 License groups Patterns each covering either of multiple licenses. Each of these patterns has the tag B< type:group >. =over =item * bsd =cut $RE{'bsd'} = { name => 'BSD', 'name.alt.org.debian' => 'BSD~unspecified', 'name.alt.org.fedora.web' => 'BSD', 'name.alt.org.wikidata' => 'Q191307', caption => 'BSD license', 'caption.alt.org.debian' => 'BSD (unspecified)', 'caption.alt.org.trove' => 'BSD License', 'caption.alt.org.wikipedia' => 'BSD licenses', 'caption.alt.misc.long' => 'Berkeley Software Distribution License', 'caption.alt.misc.british' => 'BSD licence', 'caption.alt.misc.british2' => 'Berkeley Software Distribution Licence', summary => 'a BSD-style license', tags => ['type:group'], 'pat.alt.subject.license.scope.multisection' => "$P{repro_copr_cond_discl}(?:$F$EE(?:$BB?$P{ad_mat_ack_this}$F$EE)?$BB?$P{nopromo_neither})?", }; =item * gnu =cut $RE{'gnu'} = { name => 'AGPL/GPL/LGPL', 'name.alt.org.debian' => 'GNU~unspecified', caption => 'GNU license', 'caption.alt.misc.british' => 'GNU licence', summary => 'a GNU license (AGPL or GPL or LGPL)', tags => ['type:group'], '_pat.alt.subject.name' => [ $RE{agpl}{'_pat.alt.subject.name'}, $RE{gpl}{'_pat.alt.subject.name'}, $RE{lgpl}{'_pat.alt.subject.name'}, ], }; =item * mit =cut $RE{'mit'} = { name => 'MIT', 'name.alt.org.debian' => 'MIT~unspecified', 'name.alt.org.fedora.web' => 'MIT', 'name.alt.org.wikidata' => 'Q334661', caption => 'MIT license', 'caption.alt.org.trove' => 'MIT License', 'caption.alt.org.wikipedia' => 'MIT License', 'caption.alt.misc.british' => 'MIT Licence', 'iri.alt.org.wikipedia' => 'https://en.wikipedia.org/wiki/MIT_License', summary => 'an MIT-style license', tags => ['type:group'], 'pat.alt.subject.name' => "${the}MIT\\b", }; =back =head1 STRUCTURE The regexp patterns follows the L specification, and more specifically the structure of L, defining access to one pattern per DefHash object, as C. Additionally, (sub)patterns are available in plaintext form, as C. =head2 SUBJECT Each pattern targets one or more subjects, i.e. ways to directly or indirectly represent a license. Beware that not all pattern objects fully cover all subjects. =over =item trait Distinguishing trait or feature expressed in licensing strings, e.g. an advertising clause or granting "...or any later version." Coverage for this subject is currently rather weak. =item name Distinguishing name, e.g. usable in license grant. =item grant Text granting the license. =item license Text containing licensing terms. Texts containing both license grant and licensing terms (e.g. BSD- and MIT-style licensing) may be classified as either subject L or subject L. This may change, as needs for distinction is better understood. =back =head2 SCOPE Each pattern can process material within some scope, i.e. a certain sample size of the full subject. As an example, L use line-based processing, where patterns spanning multiple lines are not applicable. =over =item line Pattern typically found within a single line. Typically this means less than 70 characters within scope. =item sentence Pattern matching within a sentence. May span multiple lines, but not across multiple sentences. Typically this means no full-stop or colon within scope. =item paragraph Pattern matching distinguishing paragraph. May span multiple sentences, but not multiple paragraphs. Typically this means no newline within scope. =item section Pattern matching distinguishing section. May span multiple paragraphs, but not multiple sections. Typically this means blank line within scope. =item multisection Pattern may span multiple sections. =back =cut my @gnu_locales = qw(en ar ca de el es fr it ja nl pl pt-br ru sq sr zh-cn zh-tw); my @_OBJECTS = grep {/^[a-z]/} keys(%RE); # must be simple word (no underscore), to survive getting joined in cache # more ideal first: first available is default my @_SUBJECTSTACK = qw(license grant name iri trait); my %_TYPE; my %_SERIES; # process metadata tags for my $id (@_OBJECTS) { # resolve series for ( @{ $RE{$id}{tags} } ) { /^type:($_prop)(?::($_prop))?/; $_TYPE{$id} = $1 if ($1); push @{ $_SERIES{$id} }, $2 if ( $2 and $1 eq 'singleversion' ); } # synthesize type:versioned metadata caption from type:singleversion _prop_populate( $id, 'caption', $_ ) for ( @{ $_SERIES{$id} } ); } # process metadata caption for my $id (@_OBJECTS) { # synthesize metadata: name from caption CAPTION: for ( keys %{ $RE{$id} } ) { my ( $slug, $org ) = (/^caption\.(alt\.org\.($_prop)$_any*)/); next CAPTION unless ($org); next CAPTION if ( $RE{$id}{"name.$slug"} ); if ( $org eq 'fedora' and $slug =~ /alt\.org\.fedora\.web/ ) { $_ = $RE{$id}{$_}; s/\s/_/g; s/\(/.28/g; s/\)/.29/g; $RE{$id}{"name.$slug"} = $_; next CAPTION; } if ( $org eq 'tldr' ) { $_ = lc( $RE{$id}{$_} ); s/ /-/g; $RE{$id}{"name.$slug"} = $_ if ( $slug eq 'alt.org.tldr' ); $RE{$id}{"name.alt.org.$slug"} = $_ if ( $slug eq 'alt.org.tldr.path.short' ); next CAPTION; } if ( $org eq 'wikipedia' ) { $_ = $RE{$id}{$_}; s/ /_/g; s/"/%22/g; #" $RE{$id}{"name.$slug"} = $_; next CAPTION; } } # synthesize metadata: series alternate name from name _prop_populate( $id, 'name', $_ ) for ( @{ $_SERIES{$id} } ); } # process metadata name for my $id (@_OBJECTS) { # synthesize metadata: iri from name NAME: for ( keys %{ $RE{$id} } ) { my ( $slug, $org, $trail, $web, $weborg, $webtrail ) = ( /^name\.(alt\.org\.($_prop)((?:\.(web\b)\.?($_prop?))?($_any*)))/ ); $RE{$id}{"iri.alt.org.fedora.$weborg$webtrail"} ||= "https://fedoraproject.org/wiki/Licensing/BSD#$RE{$id}{$_}" and next NAME if ( $weborg and $org eq 'fedora' and $weborg eq 'bsd' ); $RE{$id}{"iri.alt.org.fedora.$weborg$webtrail"} ||= "https://fedoraproject.org/wiki/Licensing/MIT#$RE{$id}{$_}" and next NAME if ( $weborg and $org eq 'fedora' and $weborg eq 'mit' ); $RE{$id}{"iri.alt.org.fedora$webtrail"} ||= "https://fedoraproject.org/wiki/Licensing/$RE{$id}{$_}" and next NAME if ( $web and !$weborg and $org eq 'fedora' ); $RE{$id}{"iri.alt.org.fedora$trail"} ||= "https://fedoraproject.org/wiki/Licensing/$RE{$id}{$_}" and next NAME if ( $org and !$web and $org eq 'fedora' ); $RE{$id}{"iri.$slug"} ||= "https://directory.fsf.org/wiki?title=License:$RE{$id}{$_}" and next NAME if ( $org and $org eq 'fsf' ); if ( $org and $org eq 'gnu' ) { $RE{$id}{"iri.$slug"} ||= "https://www.gnu.org/licenses/license-list.html#$RE{$id}{$_}"; for my $lang (@gnu_locales) { $RE{$id}{"iri.$slug($lang)"} ||= "https://www.gnu.org/licenses/license-list.$lang.html#$RE{$id}{$_}"; } next NAME; } $RE{$id}{"iri.$slug"} ||= "https://tldrlegal.com/l/$RE{$id}{$_}" and next NAME if ( $slug and $slug eq 'alt.org.tldr.path.short' ); $RE{$id}{"iri.$slug"} ||= "https://tldrlegal.com/license/$RE{$id}{$_}" and next NAME if ( $slug and $slug eq 'alt.org.tldr' ); $RE{$id}{"iri.$slug"} ||= "https://opensource.org/licenses/$RE{$id}{$_}" and next NAME if ( $org and $org eq 'osi' ); if ( $org and $org eq 'spdx' ) { $RE{$id}{"iri.$slug"} ||= "https://spdx.org/licenses/$RE{$id}{$_}"; for my $ext (qw(txt html json)) { $RE{$id}{"iri.$slug.format.$ext"} ||= "https://spdx.org/licenses/$RE{$id}{$_}.$ext"; } next NAME; } if ( $org and $org eq 'wikidata' ) { $RE{$id}{"iri.$slug"} ||= "https://www.wikidata.org/wiki/Special:EntityPage/$RE{$id}{$_}"; $RE{$id}{"iri.$slug.path.wiki"} ||= "https://www.wikidata.org/wiki/$RE{$id}{$_}"; next NAME; } $RE{$id}{"iri.$slug"} ||= "https://en.wikipedia.org/wiki/$RE{$id}{$_}" and next NAME if ( $org and $org eq 'wikipedia' ); } # synthesize metadata: series alternate iri from iri _prop_populate( $id, 'iri', $_ ) for ( @{ $_SERIES{$id} } ); } # process patterns for my $id (@_OBJECTS) { # synthesize patterns: iri from metadata iri unless ( $RE{$id}{'pat.alt.subject.iri'} ) { my @subpat; for ( map { $RE{$id}{$_} } grep {/^iri(?:[.(]|\z)/} keys %{ $RE{$id} } ) { s/([ .()\[\]])/\\$1/g; s/-/$D/g; s!^https?://!$HT!; s!/$!/?!; push @subpat, $_; } my $pat = _join_pats(@subpat); $RE{$id}{'pat.alt.subject.iri'} = $pat if ($pat); } # synthesize subject pattern name from metadata name and caption unless ( $RE{$id}{'_pat.alt.subject.name.synth.caption'} or $_TYPE{$id} eq 'trait' ) { my @pat; for ( grep { !/-\(/ } grep { !/,[_~]/ } map { $RE{$id}{$_} } grep { !/^name\.alt\.org\.wikidata(?:$_delim|\z)/ } grep {/^(?:caption|name)(?:$_delim|\z)/} grep { !/\.synth\.nogrant(?:$_delim|\z)/ } keys %{ $RE{$id} } ) { s/([()])/\\$1/g; unless (/ /) { s/^(?:\\b)?/\\b/; s/(?:\\b)?$/\\b/; } s/^$the?/$the?/; s/(?: [Ll]icense)/\(?: \[Ll\]icense\)?/; s/,/,?/g; s/ - /${DD}/g; if (/$RE{version}{'pat.alt.subject.trait.scope.line.scope.sentence'}$/ ) { my $pos = $-[0]; substr( $_, $pos ) = $RE{version_prefix} {'pat.alt.subject.trait.scope.line.scope.sentence'} . $2 =~ s/\.0$/\(?:\\.0\)?/r . '(?:[^\d.]|\.\D|\.\z|\z)'; } push @pat, $_; } push @{ $RE{$id}{'_pat.alt.subject.name.synth.caption'} }, @pat if (@pat); } # synthesize subject pattern grant from metadata name and subject pattern name # TODO: maybe include also subject pattern iri # TODO: separately synthesize SPDX-License-Identifier unless ( $RE{$id}{'_pat.alt.subject.grant.synth.name'} or $_TYPE{$id} eq 'trait' ) { my %pat; for ( grep { !/-\(/ } grep { !/,[_~]/ } map { $RE{$id}{$_} } grep { !/^name\.alt\.org\.wikidata(?:$_delim|\z)/ } grep {/^name(?:$_delim|\z)/} keys %{ $RE{$id} } ) { $_ = quotemeta; s/\\-/$D/g; if (/\d$/) { s/\\\.0$/\(?:\\.0\)?/; $_ .= '(?:[^\d.]|\.\D|\.\z|\z)'; } else { $_ .= '(?:[\s]|\z)'; } $pat{$_} = 1; } if ( $RE{$id}{'_pat.alt.subject.name.synth.caption'} ) { $pat{$_} = 1 for @{ $RE{$id}{'_pat.alt.subject.name.synth.caption'} }; } $RE{$id}{'_pat.alt.subject.grant.synth.name'} = $RE{license_label} {'pat.alt.subject.trait.scope.line.scope.sentence'} . ' ?' . _join_pats( keys %pat ); } # synthesize subject pattern grant from Trove caption unless ( $RE{$id}{'_pat.alt.subject.grant.synth.trove'} or $_TYPE{$id} eq 'trait' ) { my %pat; for ( grep { !/-\(/ } grep { !/,[_~]/ } map { $RE{$id}{$_} } grep {/^caption\.alt\.org\.trove(?:$_delim|\z)/} keys %{ $RE{$id} } ) { $_ = quotemeta; s/\\-/$D/g; if (/\d$/) { s/\\\.0$/\(?:\\.0\)?/; $_ .= '(?:[^\d.]|\.\D|\.\z|\z)'; } else { $_ .= '(?:[\s]|\z)'; } $pat{$_} = 1; } $RE{$id}{'_pat.alt.subject.grant.synth.trove'} = $RE{license_label_trove} {'pat.alt.subject.trait.scope.line.scope.sentence'} . ' ?' . _join_pats( keys %pat ) if (%pat); } # synthesize subject pattern grant from subject pattern name unless ( $RE{$id}{'_pat.alt.subject.grant.synth.caption'} or $_TYPE{$id} eq 'trait' ) { # TODO: use resolved patterns (not subpatterns) my $pat = _join_pats( @{ $RE{$id}{'_pat.alt.subject.name.synth.caption'} } ) or next; $RE{$id}{'_pat.alt.subject.grant.synth.caption'} = $RE{licensed_under} {'pat.alt.subject.trait.scope.line.scope.sentence'} . $pat; } # synthesize CC subject pattern license from metadata caption if ( $id eq 'cc_cc0_1' ) { $RE{$id}{'pat.alt.subject.license.scope.sentence.synth.cc'} ||= "(?:$RE{$id}{'caption.alt.org.cc.legal.license'})?" . "$EE$cc_intro_cc0"; } elsif ( $id =~ /^cc.*_1$/ ) { $RE{$id}{'pat.alt.subject.license.scope.sentence.synth.cc'} ||= $RE{$id}{'caption.alt.org.cc.legal.license'} . "$EE$cc_intro_1"; } elsif ( $id =~ /^cc.*_(?:2|2_5|3)$/ ) { $RE{$id}{'pat.alt.subject.license.scope.sentence.synth.cc'} ||= $RE{$id}{'caption.alt.org.cc.legal.license'} . "$EE$cc_intro"; } elsif ( $id =~ /^cc.*_4$/ ) { $RE{$id}{'pat.alt.subject.license.scope.sentence.synth.cc'} ||= $RE{$id}{'caption.alt.org.cc.legal.license'} . "(?: Public License)?$EE" . $cc_by_exercising_you_accept_this . $RE{$id}{'caption.alt.org.cc.legal.license'}; } # resolve subject patterns from subpatterns for my $subject (@_SUBJECTSTACK) { # use explicit pattern next if $RE{$id}{"pat.alt.subject.$subject"}; # synthesize from seed pattern my $pat = _join_pats( $RE{$id}{"_pat.alt.subject.$subject"} ); if ($pat) { $RE{$id}{"pat.alt.subject.$subject"} = $pat; next; } # synthesize from alternatives or their seeds my @pat; for ( grep {/^_?pat\.alt\.subject\.$subject$_delim/} keys %{ $RE{$id} } ) { s/_\K//; push @pat, $RE{$id}{$_} || $RE{$id}{"_$_"}; } $pat ||= _join_pats(@pat); $RE{$id}{"pat.alt.subject.$subject"} = $pat if ($pat); } # resolve available patterns my @pat_subject = grep { $RE{$id}{"pat.alt.subject.$_"} } @_SUBJECTSTACK; # provide default dynamic pattern: all available patterns $RE{$id}{gen} = sub { my %args = @_; my $capture = $args{capture} || 'no'; my $subjects = $args{subject} ? [ split( /,/, $args{subject} ) ] : [@pat_subject]; my $pat = _join_pats( map { $RE{$id}{"pat.alt.subject.$_"} } @{$subjects} ); return '' unless ($pat); $pat =~ s/$_->[0]/$_->[1]/g for (@_re); if ( $capture eq 'named' ) { $pat =~ s/\(\?P<\K_//g; } elsif ( $capture eq 'numbered' ) { $pat =~ s/\(\?P<_[^>]+>/(?:/g; $pat =~ s/\(\?P<[^>]+>/(/g; } else { $pat =~ s/\(\?P<[^>]+>/(?:/g; } $pat =~ s/$_->[0]/$_->[1]/g for (@_re); if ( $args{engine} ) { if ( $args{engine} eq 'RE2' ) { use re::engine::RE2; return qr/$pat/; } else { die "Unsupported regexp engine \"$args{engine}\""; } } else { return qr/$pat/; } }; # option keep: include capturing parantheses in pattern $RE{$id}{'gen_args'}{capture} = { summary => 'include capturing parantheses, named or numbered', schema => [ 'str*', in => [qw(named numbered no)] ], default => 'no', req => 1, }; # option subject: which subject(s) to cover in pattern $RE{$id}{'gen_args'}{subject} = { summary => 'Choose subject (or several, comma-separated)', schema => [ 'str*', in => [@pat_subject] ], default => join ',', @pat_subject, req => 1, }; # option engine: which regular expression engine to compile pattern with $RE{$id}{'gen_args'}{engine} = { summary => 'Enable custom regexp engine (perl module re::engine::*)', schema => ['str*'], }; } # mirror property + attributes to alternate attributes of series object sub _prop_populate { my ( $id, $property, $series ) = @_; for ( keys %{ $RE{$id} } ) { my ( $stem, $slug, $lang ) = (/^($property)(?:\.alt)?($_notlang?)($_lang?)/); $RE{$series}{"$property.alt$slug.version.$id$lang"} ||= $RE{$id}{$_} if ($stem); } } sub _join_pats { return '' unless (@_); # skip empty patterns, and expand references my @pats = map { if ( !ref ) { ($_) } elsif ( ref eq 'ARRAY' ) { _join_pats( @{$_} ) } else { die "Bad ref: $_"; } } grep { defined && ($_) } @_; unless (@pats) { return ''; } return $pats[0] if ( @pats < 2 ); return '(?:' . join( '|', @pats ) . ')'; } =head2 TAGS Pattern defhashes optionally includes tags, which may help in selecting multiple related patterns. Tags are hierarchical, with C<:> as separator, and may be extended without notice. Therefore take care to permit sub-parts when tag-matching, e.g. using a regex like C< /\Asome:tag(?:\z|:)/ >. =over =item * family:bsd =item * family:cc =item * family:gpl =item * family:mit =item * family:zlib Pattern covers a license part of a family of licenses. =item * license:contains:grant License mentions a preferred form for granting the license. This implies that license is commonly granted by use of a different (typically far shorter) text. =item * license:contains:license:* License contains another license. Wildcard is the key to corresponding license pattern. =item * license:contains:name:* License mentions name of another license. =item * license:is:grant License is commonly granted by stating the whole license. =item * type:usage:*:* Pattern covers a specific usage of a license. Third part is the key of the corresponding non-usage-specific pattern. Fourth part is the key of the corresponding usage trait pattern. =item * type:combo Pattern covers a combination of multiple licenses. =item * type:group Pattern covers either of multiple licenses. =item * type:singleversion:* Pattern covers a specific version of a license. Last part of tag is the key of the corresponding non-version-specific pattern. =item * type:trait Pattern covers a single trait occuring in licenses. =item * type:unversioned Pattern covers a license without versioning scheme. =item * type:versioned:decimal Pattern covers a license using decimal number versioning scheme. =back =head3 DEPRECATED TAGS Tags not documented in this POD, specifically non-hierarchical tags, are deprecated and will be dropped in a future release. =cut push @{ $RE{$_}{tags} }, 'bsd' for (qw(bsd_2_clause bsd_3_clause bsd_4_clause)); push @{ $RE{$_}{tags} }, 'cc' for ( qw(cc_by cc_by_nc cc_by_nc_nd cc_by_nc_sa cc_by_nd cc_by_sa cc_cc0 cc_sp) ); push @{ $RE{$_}{tags} }, 'mit' for ( qw(curl dsdp isc icu mit_advertising mit_cmu mit_cmu_warranty mit_enna mit_feh mit_new mit_new_materials mit_old mit_oldstyle mit_oldstyle_disclaimer mit_oldstyle_permission ntp ntp_disclaimer postgresql) ); push @{ $RE{$_}{tags} }, 'zlib' for (qw(cube eurosym zlib zlib_acknowledgement)); push @{ $RE{$_}{tags} }, 'trait' for ( qw(clause_non_endorsement fsf_unlimited fsf_unlimited_retention version_later version_later_paragraph version_later_postfix version_number version_prefix) ); push @{ $RE{perl}{tags} }, 'combo'; push @{ $RE{$_}{tags} }, 'group' for (qw(bsd gnu mit)); =encoding UTF-8 =head1 AUTHOR Jonas Smedegaard C<< >> =head1 COPYRIGHT AND LICENSE Copyright © 2016-2017 Jonas Smedegaard 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 3, 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, see . =cut 1; Parts.pm000644001750001750 3070613623771524 24304 0ustar00jonasjonas000000000000Regexp-Pattern-License-v3.2.0/lib/Regexp/Pattern/Licensepackage Regexp::Pattern::License::Parts; use utf8; use strict; use warnings; =head1 NAME Regexp::Pattern::License::Parts - Regular expressions for licensing sub-parts =head1 VERSION Version v3.2.0 =cut our $VERSION = version->declare("v3.2.0"); =head STATUS This module is considered part of Regexp-Pattern-License's internals. =head DESCRIPTION This is not considered part of Regexp-Pattern-License's public API. It is a class of internally used patterns. =cut # internal patterns compiled into patterns # * must be unique, to not collide at their final use in gen_pat sub # * must be a unit, so that e.g. suffix "?" applies to whole chunk my $BB = '[*1-9. ]'; # start-of-sentence bullet or count my $E = '[ ]'; # end-of-sentence space my $Q = '["]'; # quote my $QB = '["*]'; # quote or bullet my $SD = '[ -]'; # space or dash my $SL = '[/]'; # space or slash or none our %RE = ( # assets (original or derived) doc_mat_dist => { pat => "the documentation and${SL}or other materials provided with the distribution" }, sw => { pat => 'the Software' }, the_material => { pat => "this software and(?:${SL}or)? associated documentation files \\(?the ${Q}Materials?$Q\\)?" }, cp_sw => { pat => 'all copies of the Software' }, cp_sw_copr => { pat => 'all copies of the Software and its Copyright notices' }, cp_sw_doc => { pat => 'all copies of the Software and its documentation' }, sw_doc => { pat => 'this software and its documentation' }, the_sw => { pat => "this software and associated documentation files \\(the ${Q}Software$Q\\)" }, this_prg => { pat => 'this program' }, # rights perm => { pat => 'Permission' }, any_purpose => { pat => 'for any purpose' }, to_deal_mat => { pat => 'to deal in the Materials without restriction' }, granted => { pat => 'is(?: hereby)? granted' }, to_deal_the_sw_rights => { pat => 'to deal in the Software without restriction, including without limitation the rights' }, to_copy => { pat => 'to use or copy' }, to_dist => { pat => 'to use, copy, modify,? and distribute' }, to_dist_mod => { pat => 'to modify the code and to distribute modified code' }, to_mod_sublic => { pat => "to use, copy, modify, merge, publish, distribute, sublicense, and${SL}or sell copies of" }, to_perm_pers => { caption => 'to permit person', pat => 'to permit persons to whom the Software is furnished to do so' }, # agents to_pers => { pat => 'to any person obtaining a copy of' }, # charges free_charge => { pat => 'free of charge' }, free_agree_fee => { pat => 'without written agreement and without license or royalty fees' }, nofee => { pat => 'without fee' }, # conditions subj_cond => { pat => 'subject to the following conditions' }, ack_doc_mat_pkg_use => { pat => 'acknowledgment shall be given in the documentation, materials and software packages that this Software was used' }, ack_doc_pkg_use => { pat => 'acknowledgment shall be given in the documentation and software packages that this Software was used' }, ack_pub_use_nosrc => { pat => 'In addition publicly documented acknowledgment must be given that this software has been used if no source code of this software is made available publicly' }, altered_srcver_mark => { pat => "$BB?Altered source versions must be plainly marked as such,? and must not be misrepresented as being the original software" }, altered_ver_mark => { pat => "$BB?Altered versions must be plainly marked as such,? and must not be misrepresented as being the original source" }, change_redist_share => { pat => 'If you change this software and redistribute parts or all of it in any form, you must make the source code of the altered version of this software available' }, incl => { pat => 'shall be included' }, name => { pat => '[Tt]he names?(?: \S+){1,15}' }, namenot => { pat => '[Tt]he names?(?: \S+){1,15} (?:may|must|shall) not' }, neithername => { pat => 'Neither the (?:names?(?: \S+){1,15}|authors?) nor the names of(?: (?:its|their|other|any))? contributors\W? may' }, notice_no_alter => { pat => "$BB?This notice may not be removed or altered" }, notice_no_alter_any => { pat => "$BB?This notice may not be removed or altered from any source distribution" }, copr_no_alter => { pat => "$BB?This Copyright notice may not be removed or altered from any source or altered source distribution" }, license_not_lib => { pat => 'This License does not apply to any software that links to the libraries provided by this software \(statically or dynamically\), but only to the software provided' }, redist_bin_repro => { pat => 'Redistributions in binary form must reproduce' }, src_no_relicense => { pat => "$BB?Source versions may not be ${Q}relicensed$Q under a different license without my explicitly written permission" }, used_endorse_deriv => { pat => 'be used to endorse or promote products derived from this software' }, used_ad => { pat => 'be used in advertising' }, used_ad_dist => { pat => 'be used in (?:any )?advertising or publicity pertaining to distribution of the software' }, you_not_use_ad_dist => { pat => 'You must not use any of the names of the authors or copyright holders of the original software for advertising or publicity pertaining to distribution' }, without_prior_written => { pat => 'without specific prior written permission' }, without_written => { pat => 'without specific written permission' }, without_written_prior => { pat => 'without specific, written prior permission' }, origin_sw_no_misrepresent => { pat => "$BB?The origin of this software must not be misrepresented" }, origin_src_no_misrepresent => { pat => "$BB?The origin of this source code must not be misrepresented" }, you_not_claim_wrote => { pat => 'you must not claim that you wrote the original software' }, use_ack_apprec => { pat => 'If you use this software in a product, an acknowledgment in the product documentation would be appreciated' }, use_ack_apprec_not_req => { pat => 'If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required' }, use_ack_req => { pat => 'If you use this software in a product, an acknowledgment \(see the following\) in the product documentation is required' }, # disclaimers asis_expr_warranty => { pat => "provided $Q?as${SD}is$Q? without express or implied warranty" }, asis_name_sw => { pat => '(?:\S+ ){1,15}PROVIDES? THIS SOFTWARE' }, asis_sw_by_name => { pat => 'THIS SOFTWARE IS PROVIDED BY' }, asis_sw_expr_warranty => { pat => "This software is supplied $Q?as${SD}is$Q? without express or implied warranty" }, asis_sw_name_discl => { pat => "THE SOFTWARE IS PROVIDED ${QB}AS$QB?$SD$QB?IS$QB(?:,?|AND) (?:\\S+ ){1,15}DISCLAIMS" }, asis_sw_warranty => { pat => "THE SOFTWARE IS PROVIDED ${QB}AS$QB?$SD$QB?IS$QB,? WITHOUT WARRANTY" }, # Creative Commons cc => { pat => '(?:Creative Commons|CC)' }, cc_by => { pat => '(?:Attribution)' }, cc_cc0 => { pat => '(?:CC0|Zero|0)' }, cc_nc => { pat => "(?:Non$SD?Commercial)" }, cc_nd => { pat => "(?:No$SD?Deriv(?:ative)?s)" }, cc_sa => { pat => "(?:Share$SD?Alike)" }, cc_sp => { pat => "(?:Sampling$SD?Plus)" }, cc_url => { pat => '(?:(?:https?:?)?(?://)?creativecommons.org/licenses/)' }, cc_url_pd => { pat => '(?:(?:https?:?)?(?://)?creativecommons.org/publicdomain/)' }, # texts ack_dev_by => { pat => "the following acknowledge?ments?:?$E$Q?This product includes software developed by" }, ack_written_by => { pat => "the following acknowledge?ment:?$E$Q?This product includes(?: cryptographic)? software written by" }, authors_copr => { pat => 'the Authors, the Copyright' }, copr => { pat => '[Tt]he above copyright notice' }, copr_avail_orig => { pat => 'the Copyright, this License, and the Availability of the original version' }, copr_avail_note => { pat => 'the Copyright, this License, (?:and )?the Availability note' }, copr_perm => { pat => '(?:both t|t|T)(?:hat|he|he above) copyright notice(?:s|\(s\))? and this permission notice' }, copr_perm_warr => { pat => '(?:both t|t|T)(?:hat|he|he above) copyright notice(?:s|\(s\))? and this permission notice and warranty disclaimer' }, copr_perms => { pat => 'this copyright and permissions notice' }, copr_cond_discl => { pat => 'the above copyright notice, this list of conditions,? and the following disclaimer' }, notices => { pat => '[Tt]he above notices' }, used_perm => { pat => '[Uu]sed by permission' }, # combinations discl_name_warranties => { pat => '(?:\S+ ){1,15}DISCLAIMS? ALL WARRANTIES' }, permission_use_fee_agree => { pat => 'and without a written agreement' }, ); $RE{perm_granted}{pat} = "$RE{perm}{pat} $RE{granted}{pat}"; $RE{ad_mat_ack_this}{pat} = "All advertising materials mentioning features or use of this software must display $RE{ack_dev_by}{pat}"; $RE{ad_mat_ack_ssleay}{pat} = "All advertising materials mentioning features or use of this software must display $RE{ack_written_by}{pat}"; $RE{note_copr_perm}{pat} = "provided that$BB? $RE{copr_perm}{pat} appear in all copies"; $RE{note_copr_perms_deriv}{pat} = "provided that$BB? $RE{copr_perms}{pat} appear in all copies and derivatives"; $RE{repro_code_cite_authors_copr}{pat} = "User documentation of any code that uses this code must cite $RE{authors_copr}{pat}"; $RE{repro_code_modcode_cite_copr_avail_note}{pat} = "User documentation of any code that uses this code or any modified version of this code must cite $RE{copr_avail_note}{pat}"; $RE{repro_copr_perm_warr_appear_doc}{pat} = "$RE{copr_perm_warr}{pat} appear in supporting documentation"; $RE{repro_matlab_cite_authors}{pat} = 'If this code is accessible from within Matlab, then typing(?: \S+){2,5} \(with no arguments\) must cite the Authors'; $RE{note_marketing}{pat} = "$RE{incl}{pat} in $RE{cp_sw}{pat}, its documentation and marketing"; $RE{note_mod}{pat} = 'a notice that the code was modified is included'; $RE{retain_copr_appear}{pat} = "provided that $RE{copr}{pat} appears? in all copies"; $RE{retain_copr_avail_note}{pat} = "provided $RE{copr_avail_note}{pat} are retained"; $RE{retain_copr_avail_orig}{pat} = "provided that $RE{copr_avail_orig}{pat} is retained on all copies"; $RE{retain_copr_perm_subst}{pat} = "$RE{copr_perm}{pat} $RE{incl}{pat} in all copies or substantial portions of the Software"; $RE{retain_copr_perm_sw_copr}{pat} = "$RE{copr_perm}{pat} $RE{incl}{pat} in $RE{cp_sw_copr}{pat}"; $RE{retain_copr_perm_sw_doc}{pat} = "$RE{copr_perm}{pat} $RE{incl}{pat} in $RE{cp_sw_doc}{pat}"; $RE{retain_notice_cond_discl}{pat} = "Redistributions of source code must retain $RE{copr_cond_discl}{pat}"; $RE{retain_notices}{pat} = "provided $RE{notices}{pat} are retained"; $RE{retain_notices_all}{pat} = "$RE{retain_notices}{pat} on all copies"; $RE{retain_you_avail_orig}{pat} = 'You must also retain the Availability information below, of the original version'; $RE{nopromo_except}{pat} = "Except as contained in this notice, $RE{namenot}{pat} $RE{used_ad}{pat}"; $RE{nopromo_name_written}{pat} = "$RE{name}{pat} not $RE{used_ad_dist}{pat} $RE{without_written}{pat}"; $RE{nopromo_name_written_prior}{pat} = "$RE{name}{pat} not $RE{used_ad_dist}{pat} $RE{without_written_prior}{pat}"; $RE{repro_copr_cond_discl}{pat} = "$RE{redist_bin_repro}{pat} $RE{copr_cond_discl}{pat} in $RE{doc_mat_dist}{pat}"; $RE{repro_copr_perm_appear_doc}{pat} = "$RE{copr_perm}{pat} appear in supporting documentation"; $RE{nopromo_neither}{pat} = "(?:$RE{neithername}{pat}|$RE{namenot}{pat}) $RE{used_endorse_deriv}{pat} $RE{without_prior_written}{pat}"; $RE{redist_ack_this}{pat} = "Redistributions of any form whatsoever must retain $RE{ack_dev_by}{pat}"; =encoding UTF-8 =head1 AUTHOR Jonas Smedegaard C<< >> =head1 COPYRIGHT AND LICENSE Copyright © 2016-2017 Jonas Smedegaard 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 3, 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, see . =cut 1;