内容

名称

CPAN::Meta::Converter - 转换 CPAN 分发元数据结构

版本

版本 2.150010

概要

my $struct = decode_json_file('META.json');

my $cmc = CPAN::Meta::Converter->new( $struct );

my $new_struct = $cmc->convert( version => "2" );

描述

此模块将 CPAN 元数据结构从一种形式转换为另一种形式。主要用途是将较旧的结构转换为最新版本的规范,但未来可能根据需要实现其他转换。(例如,删除所有自定义字段或删除所有可选字段。)

方法

new

my $cmc = CPAN::Meta::Converter->new( $struct );

应向构造函数传递有效的元数据结构,但无效结构是可以接受的。如果未提供元规范版本,则将假定版本 1.0。

或者,您可以在 $struct 后提供一个 default_version 参数

my $cmc = CPAN::Meta::Converter->new( $struct, default_version => "1.4" );

仅当转换不包含 meta-spec 字段的元数据片段时才需要此参数。

convert

my $new_struct = $cmc->convert( version => "2" );

返回一个新的哈希引用,其中元数据已转换为不同的形式。如果任何转换/标准化仍然导致无效结构,convert 将终止。

有效参数包括

转换依次通过每个版本进行。例如,版本 1.2 结构可能会转换为 1.3,然后是 1.4,最后是版本 2。转换过程会尝试清除简单的错误并标准化数据。例如,如果 author 被指定为标量,它将转换为包含该项的数组引用。(将结构转换为其自己的版本也将清除和标准化。)

清除和标准化数据时,如果可能,将用合理默认值替换缺失或无效字段。这可能会造成损失或不准确。例如,CPAN 上一些结构不良的 META.yml 文件将先决模块列为键和值

requires => { 'Foo::Bar' => 'Bam::Baz' }

这些将被拆分,并分别转换为具有零最小版本的先决条件。

当一些强制字段缺失或无效时,转换将尝试提供合理默认值或用 'unknown' 值填充它们。例如,缺失或无法识别的 license 字段将导致 license 字段为 'unknown'。可能获得 'unknown' 的字段包括

upgrade_fragment

my $new_struct = $cmc->upgrade_fragment;

返回一个新的哈希引用,其中元数据已转换为 CPAN 元规范的最新版本。不会对结果进行验证 -- 您必须在将片段合并到完整的元数据文档后进行验证。

自版本 2.141170 起可用。

BUGS

请使用 CPAN 请求跟踪器报告任何错误或功能。可以通过 http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Meta 上的 Web 界面提交错误

提交错误或请求时,请包含一个测试文件或现有测试文件的补丁,以说明错误或所需功能。

AUTHORS

版权和许可证

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

这是免费软件;你可以根据与 Perl 5 编程语言系统本身相同的条款重新分发和/或修改它。