Data::Hopen::G::Runnable - parent class for runnable things in a hopen graph
Anything with "run" inherits from this. TODO should this be a role?
(Not currently used) Inputs this Runnable requires. A Data::Hopen::Util::NameSet, with the restriction that
need may not contain regexes. ("Sorry, I can't run unless you give me every variable in the world that starts with Q." I don't think so!) Or maybe later an arrayref? TODO.
(Not currently used) Inputs this Runnable accepts but does not require. A Data::Hopen::Util::NameSet, which may include regexes. Or maybe later an arrayref? TODO.
Run the operation, whatever that means. Returns a new hashref. Usage:
my $hrOutputs = $op->run([options])
If given, an instance that supports
visit_node()calls. A Data::Hopen::G::DAG instance invokes those calls after processing each goal or other node, respectively. They are invoked after the goal or node has run. They are, however, given access to the Data::Hopen::Scope that the node used for its inputs, in the
The return value from
-nocontext=>1is specified, don't link a context scope into this one. May not be specified together with
See the source for this function, which contains as an example of setting the scope.
The internal method that implements "run". Must be implemented by subclasses. When
_run is called,
$self->scope has been hooked to the context scope, if any.
The only parameter is
-visitor, which is always passed by name (
_run is always called in scalar context, and must return a new hashref.
I recommend starting your
_run function with:
my ($self, %args) = getparameters('self', [qw(; visitor)], @_);
and working from there.
Returns a new hashref of this Runnable's local values, as defined by "local" in Data::Hopen::Scope. Usage:
my $hashref = $runnable->passthrough([-context => $outer_scope]); # To use $outer_scope as the context my $hashref = $runnable->passthrough(-nocontext => 1); # To ignore the context
Other valid options include -levels.