Workflow::Condition::EUseraContributed Perl DoWorkflow::Condition::Evaluate(3)NAMEWorkflow::Condition::Evaluate - Inline condition that evaluates perl
code for truth
VERSION
This documentation describes version 1.02 of this package
SYNOPSIS
<state name="foo">
<action name="foo action">
<condition test="$context->{foo} =~ /^Pita chips$/" />
DESCRIPTION
If you've got a simple test you can use Perl code inline instead of
specifying a condition class. We differentiate by the 'test' attribute
-- if it's present we assume it's Perl code to be evaluated.
While it's easy to abuse something like this with:
<condition>
<test><![CDATA[
if ( $context->{foo} =~ /^Pita (chips|snacks|bread)$/" ) {
return $context->{bar} eq 'hummus';
}
else { ... }
]]>
</test>
</condition>
It should provide a good balance.
OBJECT METHODS
new( \%params )
One of the "\%params" should be 'test', which contains the text to
evaluate for truth.
evaluate( $wf )
Evaluate the text passed into the constructor: if the evaluation
returns a true value then the condition passes; if it throws an
exception or returns a false value, the condition fails.
We use Safe to provide a restricted compartment in which we evaluate
the text. This should prevent any sneaky bastards from doing something
like:
<state...>
<action...>
<condition test="system( 'rm -rf /' )" />
The text has access to one variable, for the moment:
$context
A hashref of all the parameters in the Workflow::Context object
SEE ALSO
Safe - From some quick research this module seems to have been packaged
with core Perl 5.004+, and that's sufficiently ancient for me to not
worry about people having it. If this is a problem for you shoot me an
email.
COPYRIGHT
Copyright (c) 2004 Chris Winters. All rights reserved.
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
AUTHORS
Chris Winters <chris@cwinters.com>
perl v5.14.1 2011-07-21 Workflow::Condition::Evaluate(3)