The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DTA::CAB::Chain::Multi - serial multi-analyzer pipelines with name-based dispatch

SYNOPSIS

use DTA::CAB::Chain::Multi;

##========================================================================
## Constructors etc.

$obj = CLASS_OR_OBJ->new(%args);

##========================================================================
## Methods: Chain selection

$ach = $ach->setupChains();
$ach = $ach->ensureChain();
\@analyzers = $ach->chain();
\@analyzers = $ach->subAnalyzers();


##========================================================================
## Methods: Persistence: Perl

@keys = $class_or_obj->noSaveKeys();

##========================================================================
## Methods: XML-RPC

\%analyzerHash = $anl->xmlRpcAnalyzers();

DESCRIPTION

DTA::CAB::Chain::Multi is an abstract DTA::CAB::Chain subclass which supports user selection from a pre-defined set of named processing chains at runtime.

Constructors etc.

new
$obj = CLASS_OR_OBJ->new(%args);

%$obj, %args

chains => undef, ##-- ($chainName=>\@chainAnalyzers,...): see setupChains() method
chain => undef,  ##-- default chain: see setupChains() method

Methods: Chain selection

setupChains
$ach = $ach->setupChains();

Setup default named sub-chains in $ach->{chains}; should also set default chain $ach->{chain}.

Default implementation just sets ($key=>[$ach->{$key}]) for each analyzer value in %$ach, and sets default chain to sorted list of analyzer values in %$ach.

Subclasses will probably need to override this method.

ensureChain
$ach = $ach->ensureChain();

Checks for $ach->{chain}, calls $ach->setupChains() if needed.

chain
\@analyzers = $ach->chain();
\@analyzers = $ach->chain(\%opts)

Get selected analyzer chain.

  • Override calls setupChains() if $ach->{chain} is empty

  • Override checks for $opts{chain} and returns $ach->{chains}{ $opts{chain} } if available (runtime user chain selection).

  • OVERRIDE splits $opts{chain} on /[\,\s]+/ and constructs chain (runtime construction of user-specified chain).

subAnalyzers
\@analyzers = $ach->subAnalyzers();
\@analyzers = $ach->subAnalyzers(\%opts)

Returns a list of all sub-analyzers. Override returns all defined analyzers in any chain in $ach->{chains} or in values(%$ach).

Methods: Persistence: Perl

noSaveKeys
@keys = $class_or_obj->noSaveKeys();

Returns list of keys not to be saved Override appends {chain},{chains} to superclass list.

Methods: XML-RPC

xmlRpcAnalyzers
\%analyzerHash = $anl->xmlRpcAnalyzers();
\%analyzerHash = $anl->xmlRpcAnalyzers($prefix)

Returns pseudo hash for use with DTA::CAB::Server::XmlRpc 'as' attribute.

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2010-2019 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.1 or, at your option, any later version of Perl 5 you may have available.

SEE ALSO

dta-cab-analyze.perl(1), DTA::CAB::Chain::DTA(3pm), DTA::CAB::Chain(3pm), DTA::CAB::Analyzer(3pm), DTA::CAB(3pm), perl(1), ...

1 POD Error

The following errors were encountered while parsing the POD:

Around line 459:

You forgot a '=back' before '=head1'