CPAN::Meta::Requirements - CPAN 发行版的一组版本要求
版本 2.140
use CPAN::Meta::Requirements;
my $build_requires = CPAN::Meta::Requirements->new;
$build_requires->add_minimum('Library::Foo' => 1.208);
$build_requires->add_minimum('Library::Foo' => 2.602);
$build_requires->add_minimum('Module::Bar' => 'v1.2.3');
$METAyml->{build_requires} = $build_requires->as_string_hash;
CPAN::Meta::Requirements 对象模拟了一组版本约束,例如在 CPAN 发行版的 META.yml 或 META.json 文件中指定的约束,以及由 CPAN::Meta::Spec 定义的约束;它可以通过添加越来越多的约束来构建,并且会将它们简化为最简单的表示形式。
逻辑上不可能的约束将立即通过抛出异常来识别。
my $req = CPAN::Meta::Requirements->new;
此方法返回一个新的 CPAN::Meta::Requirements 对象。它接受一个可选的哈希引用参数。目前,只支持一个键
bad_version_hook
-- 如果提供,当版本无法解析为版本对象时,此代码引用将使用无效版本字符串作为第一个参数,模块名称作为第二个参数调用。它必须返回一个有效的版本对象。
所有其他键都会被忽略。
$req->add_minimum( $module => $version );
此方法添加一个新的最小版本要求。如果新的要求与现有规范冗余,则不会产生任何影响。
最小要求是包含性的。$version
是必需的,以及任何更大的版本号。
此方法返回要求对象。
$req->add_maximum( $module => $version );
此方法添加一个新的最大版本要求。如果新的要求与现有规范冗余,则不会产生任何影响。
最大要求是包含性的。不允许任何严格大于给定版本的版本。
此方法返回要求对象。
$req->add_exclusion( $module => $version );
此方法添加一个新的排除版本。例如,您可以使用以下三个方法调用
$req->add_minimum( $module => '1.00' );
$req->add_maximum( $module => '1.82' );
$req->add_exclusion( $module => '1.75' );
1.00 和 1.82(含)之间的任何版本都是可以接受的,除了 1.75。
此方法返回要求对象。
$req->exact_version( $module => $version );
此方法将给定模块所需的版本设置为完全等于给定版本。任何其他版本都不会被认为是可接受的。
此方法返回要求对象。
$req->add_requirements( $another_req_object );
此方法将给定 CPAN::Meta::Requirements 对象中的所有要求添加到其被调用的要求对象中。如果存在任何冲突,则会抛出异常。
此方法返回要求对象。
my $bool = $req->accepts_module($module => $version);
给定一个模块和版本,此方法返回 true 如果模块的版本规范接受提供的版本。换句话说,给定
Module => '>= 1.00, < 2.00'
我们将接受 1.00 和 1.75,但不接受 0.50 或 2.00。
对于未出现在要求中的模块,此方法将返回 true。
$req->clear_requirement( $module );
此方法从对象中删除给定模块的要求。
此方法返回要求对象。
$req->requirements_for_module( $module );
此方法返回一个字符串,其中包含给定模块的版本要求,格式如 CPAN::Meta::Spec 中所述,如果给定模块没有要求,则返回 undef。 此方法仅用于信息目的,例如错误消息,不应解释或用于比较(请参阅 "accepts_module")。
$req->structured_requirements_for_module( $module );
此方法返回一个数据结构,其中包含给定模块的版本要求,如果给定模块没有要求,则返回 undef。 此方法不应用于版本检查(请参阅 "accepts_module")。
在版本 2.134 中添加。
此方法返回已指定要求的所有模块的列表。
$req->clone;
此方法返回调用者的克隆。 克隆和原始对象可以独立地进行更改。
此方法仅当所有要求都是包含最小值时返回 true,也就是说,如果它们的字符串表达式只是版本号。
此方法在对要求调用 finalize
方法后,如果要求已完成,则返回 true。
此方法标记要求已完成。 随后尝试更改要求将是致命的,如果它们会导致更改。 如果它们不会更改要求,则它们不会有任何影响。
如果完成的要求集被克隆,则克隆的要求也不会完成。
此方法返回对哈希的引用,该哈希使用 CPAN::Meta::Spec 规范中的字符串描述要求。
例如,在以下程序之后
my $req = CPAN::Meta::Requirements->new;
$req->add_minimum('CPAN::Meta::Requirements' => 0.102);
$req->add_minimum('Library::Foo' => 1.208);
$req->add_maximum('Library::Foo' => 2.602);
$req->add_minimum('Module::Bar' => 'v1.2.3');
$req->add_exclusion('Module::Bar' => 'v1.2.8');
$req->exact_version('Xyzzy' => '6.01');
my $hashref = $req->as_string_hash;
$hashref
将包含
{
'CPAN::Meta::Requirements' => '0.102',
'Library::Foo' => '>= 1.208, <= 2.206',
'Module::Bar' => '>= v1.2.3, != v1.2.8',
'Xyzzy' => '== 6.01',
}
$req->add_string_requirement('Library::Foo' => '>= 1.208, <= 2.206');
$req->add_string_requirement('Library::Foo' => v1.208);
此方法解析传入的字符串,并为给定模块添加适当的要求。 版本可以是 Perl 的“v-string”。 它理解 "CPAN::Meta::Spec 中的版本范围" 中描述的版本范围。 例如
没有运算符的版本号等效于指定最小值 (>=
)。 允许额外的空格。
my $req = CPAN::Meta::Requirements->from_string_hash( \%hash );
my $req = CPAN::Meta::Requirements->from_string_hash( \%hash, \%opts );
这是 CPAN::Meta::Requirements 对象的另一种构造函数。 它接受模块名称和版本要求字符串的哈希,并返回一个新的 CPAN::Meta::Requirements 对象。 与 add_string_requirement 一样,版本可以是 Perl 的“v-string”。 可选地,您可以提供选项的哈希引用,与 "new" 方法完全相同。
请通过以下问题跟踪器报告任何 Bug 或功能请求:https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements/issues。您将自动收到有关问题进展的通知。
这是一个开源软件。代码库可供公众根据许可条款进行审查和贡献。
https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements
git clone https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements.git
David Golden <[email protected]>
Ricardo Signes <[email protected]>
Ed J <[email protected]>
Karen Etheridge <[email protected]>
Leon Timmermans <[email protected]>
robario <[email protected]>
本软件版权 (c) 2010 由 David Golden 和 Ricardo Signes 所有。
这是一个自由软件;您可以根据与 Perl 5 编程语言系统本身相同的条款重新发布和/或修改它。