jonasbn > Workflow-1.39 > Workflow::Condition::Evaluate

Download:
Workflow-1.39.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  4
Open  2
View/Report Bugs
Module Version: 1.03   Source   Latest Release: Workflow-1.41

NAME ^

Workflow::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>

syntax highlighting: