TAP::Parser::Source - TAP 源码及元数据
版本 3.44
use TAP::Parser::Source;
my $source = TAP::Parser::Source->new;
$source->raw( \'reference to raw TAP source' )
->config( \%config )
->merge( $boolean )
->switches( \@switches )
->test_args( \@args )
->assemble_meta;
do { ... } if $source->meta->{is_file};
# see assemble_meta for a full list of data available
TAP 源 是指为解析器提供 TAP 流的来源,例如可执行文件、文本文件、存档、IO 处理程序、数据库等。TAP::Parser::Source
封装了这些原始 源,并提供了一些有用的元数据。它们由 TAP::Parser::SourceHandler 使用,后者负责从原始 源中生成和捕获 TAP 流,并将其打包到 TAP::Parser::Iterator 中供解析器使用。
除非您正在编写新的 TAP::Parser::SourceHandler、插件或子类化 TAP::Parser,否则您可能不需要直接使用此模块。
new
my $source = TAP::Parser::Source->new;
返回一个新的 TAP::Parser::Source
对象。
raw
my $raw = $source->raw;
$source->raw( $some_value );
原始 TAP 源的链式 getter/setter。这是一个引用,因为它可能包含大量数据(例如:原始 TAP)。
meta
my $meta = $source->meta;
$source->meta({ %some_value });
关于源的元数据的链式 getter/setter。默认情况下为空哈希引用。有关更多信息,请参阅 "assemble_meta"。
has_meta
如果源具有元数据,则为真。
config
my $config = $source->config;
$source->config({ %some_value });
源配置的链式 getter/setter(如果有)。如何使用取决于您。默认情况下为空哈希引用。有关更多信息,请参阅 "config_for"。
merge
my $merge = $source->merge;
$source->config( $bool );
指示是否应合并 STDOUT 和 STDERR(在适当情况下)的标志的链式 getter/setter。默认值为 undef。
switches
my $switches = $source->switches;
$source->config([ @switches ]);
应传递给源的命令行开关列表的链式 getter/setter(在适当情况下)。默认值为 undef。
test_args
my $test_args = $source->test_args;
$source->config([ @test_args ]);
应传递给源的命令行参数列表的链式 getter/setter(在适当情况下)。默认值为 undef。
assemble_meta
my $meta = $source->assemble_meta;
收集有关"原始"源的元数据,将其存储在"元数据"中,并将其作为哈希引用返回。这样做是为了避免TAP::Parser::SourceHandler重复常见的检查。目前这包括
is_scalar => $bool,
is_hash => $bool,
is_array => $bool,
# for scalars:
length => $n
has_newlines => $bool
# only done if the scalar looks like a filename
is_file => $bool,
is_dir => $bool,
is_symlink => $bool,
file => {
# only done if the scalar looks like a filename
basename => $string, # including ext
dir => $string,
ext => $string,
lc_ext => $string,
# system checks
exists => $bool,
stat => [ ... ], # perldoc -f stat
empty => $bool,
size => $n,
text => $bool,
binary => $bool,
read => $bool,
write => $bool,
execute => $bool,
setuid => $bool,
setgid => $bool,
sticky => $bool,
is_file => $bool,
is_dir => $bool,
is_symlink => $bool,
# only done if the file's a symlink
lstat => [ ... ], # perldoc -f lstat
# only done if the file's a readable text file
shebang => $first_line,
}
# for arrays:
size => $n,
shebang
获取脚本文件的shebang行。
my $shebang = TAP::Parser::Source->shebang( $some_script );
可以作为类方法调用
config_for
my $config = $source->config_for( $class );
返回给定$class的"配置"。类名可以是完全限定的或缩写的,例如
# these are equivalent
$source->config_for( 'Perl' );
$source->config_for( 'TAP::Parser::SourceHandler::Perl' );
如果给出了完全限定的$class,则首先检查其缩写版本。
Steve Purkis。
TAP::Object,TAP::Parser,TAP::Parser::IteratorFactory,TAP::Parser::SourceHandler