TAP::Parser::Multiplexer - 多路复用多个 TAP::Parsers
版本 3.44
use TAP::Parser::Multiplexer;
my $mux = TAP::Parser::Multiplexer->new;
$mux->add( $parser1, $stash1 );
$mux->add( $parser2, $stash2 );
while ( my ( $parser, $stash, $result ) = $mux->next ) {
# do stuff
}
TAP::Parser::Multiplexer
从多个 TAP::Parsers 收集输入。在内部,它调用 select 函数,对这些解析器的输入文件句柄进行等待,直到其中一个或多个解析器有输入可用。
参见 TAP::Harness 以了解其用法的示例。
new
my $mux = TAP::Parser::Multiplexer->new;
返回一个新的 TAP::Parser::Multiplexer
对象。
add
$mux->add( $parser, $stash );
将一个 TAP::Parser 添加到多路复用器中。$stash
是一个可选的不透明引用,它将与解析器和下一个结果一起从 next
返回。
parsers
my $count = $mux->parsers;
返回解析器的数量。当解析器的输入耗尽时,解析器将从多路复用器中移除。
next
从下一个可用的解析器返回结果。返回一个列表,其中包含结果来自的解析器、与该解析器对应的存储区以及结果。
my ( $parser, $stash, $result ) = $mux->next;
如果$result
未定义,则相应的解析器已到达其输入的末尾(并将自动从多路复用器中移除)。
当所有解析器都耗尽时,将返回一个空列表。
if ( my ( $parser, $stash, $result ) = $mux->next ) {
if ( ! defined $result ) {
# End of this parser
}
else {
# Process result
}
}
else {
# All parsers finished
}