目錄

名稱

TAP::Parser::Multiplexer - 多重 TAP::Parser

版本

版本 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::Parser 蒐集輸入。內部會呼叫 select 處理這些 parser 的輸入檔案句柄,以等待一個或多個 parser 有可用的輸入。

請參閱 TAP::Harness 以取得使用範例。

方法

類別方法

new

my $mux = TAP::Parser::Multiplexer->new;

傳回新的 TAP::Parser::Multiplexer 物件。

實例方法

add

$mux->add( $parser, $stash );

將 TAP::Parser 加入多重處理器。$stash 是可選的不透明參考,將會與 parser 和下一個結果一起從 next 傳回。

parsers

my $count   = $mux->parsers;

傳回 parser 數量。當 parser 的輸入用盡時,會從多重處理器中移除該 parser。

next

傳回下一個可用的 parser 的結果。傳回包含結果來源的 parser、對應於該 parser 的 stash 和結果的清單。

my ( $parser, $stash, $result ) = $mux->next;

如果 $result 未定義,表示對應的 parser 已達輸入結尾(且會自動從多重處理器中移除)。

當所有解析器都已用盡時,將會傳回一個空清單。

if ( my ( $parser, $stash, $result ) = $mux->next ) {
    if ( ! defined $result ) {
        # End of this parser
    }
    else {
        # Process result
    }
}
else {
    # All parsers finished
}

另請參閱

TAP::Parser

TAP::Harness