內容

名稱

CPAN::Meta::Merge - 合併 CPAN Meta 片段

版本

版本 2.150010

語法

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

說明

方法

new

這會建立一個 CPAN::Meta::Merge 物件。它會接受一個強制性的命名參數,version,宣告合併時必須使用的 meta-spec 版本。它可以選擇性地接受一個 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 策略。

作者

版權和授權

此軟體的版權為 (c) 2010 David Golden、Ricardo Signes、Adam Kennedy 和貢獻者所有。

這是免費軟體;您可以在與 Perl 5 程式語言系統相同的條款下重新散布或修改它。