内容

名称

CPAN::Meta::Merge - 合并 CPAN 元数据片段

版本

版本 2.150010

概要

my $merger = CPAN::Meta::Merge->new(default_version => "2");
my $meta = $merger->merge($base, @additional);

描述

方法

new

这将创建一个 CPAN::Meta::Merge 对象。它接受一个必填的命名参数 version,声明用于合并的元数据规范版本。它可以选择接受一个 extra_mappings 参数,允许为特定元素添加额外的合并函数。

extra_mappings 参数接受一个哈希引用,其结构与 CPAN::Meta::Spec 中描述的结构相同,但其值是 定义的合并策略 之一,或是一个指向合并函数的代码引用。

my $merger = CPAN::Meta::Merge->new(
    default_version => '2',
    extra_mappings => {
        'optional_features' => \&custom_merge_function,
        'x_custom' => 'set_addition',
        'x_meta_meta' => {
            name => 'identical',
            tags => 'set_addition',
        }
    }
);

merge(@fragments)

将所有 @fragments 合并在一起。它将接受 CPAN::Meta 对象和(可能不完整的)元数据哈希引用。

合并策略

merge 使用各种策略来合并 CPAN::Meta 对象的不同元素。以下策略可与 new 的 extra_mappings 参数一起使用。

identical

元素必须相同。

set_addition

两个数组引用的并集。

[ a, b ] U [ a, c]  = [ a, b, c ]
uniq_map

来自右侧哈希的键值对被合并到左侧哈希中。仅当键值相同的情况下才允许键冲突。此合并函数将递归进入嵌套的哈希引用,遵循相同的合并规则。

improvise

此合并策略将尝试根据元素类型选择合适的预定义策略。数组引用将尝试使用 set_addition 策略,哈希引用将尝试使用 uniq_map 策略,其他所有元素将尝试使用 identical 策略。

AUTHORS

COPYRIGHT AND LICENSE

此软件版权所有 (c) 2010 年 David Golden、Ricardo Signes、Adam Kennedy 和贡献者。

这是自由软件;您可以在 Perl 5 编程语言系统本身的相同条款下重新分发和/或修改它。