内容

名称

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::ObjectTAP::ParserTAP::Parser::IteratorFactoryTAP::Parser::SourceHandler