Embperl::Recipe provides basic features that are necessary for createing
your own recipes.
To do so you have to create a class that provides a get_recipe method which returns
a array reference that contains the description what to do.
get_recipe ($class, $r, $recipe) | top |
| $class | | The class name | | | $r | | The Embperl request record object (Embperl::Req), maybe a derived
object when running under EmbperlObject. | | | $recipe | | The name of the recipe | |
The function must return an array that describes the desired action.
The array contains a tree structure of providers.
| file | | read file data Parameter: | filename | | Gives the file to read | |
| | | memory | | get data from a scalar Parameter: | source | | Gives the source as a scalar reference | | | name | | Gives the name under which this item should be cache | |
| | | epparse | | parse file into a Embperl tree structure Parameter: | source | | Gives the source | | | syntax | | Syntax to use | |
| | | epcompile | | compile Embperl tree structure Parameter: | source | | Gives the source | |
| | | eprun | | execute Embperl tree structure Parameter: | source | | Gives the source | | | cache_key | | See description of cacheing | | | cache_key_options | | See description of cacheing | | | cache_key_func | | See description of cacheing | |
| | | eptostring | | convert Embperl tree structure to string Parameter: | source | | Gives the source | |
| | | libxslt-parse-xml | | parse xml source for libxslt Parameter: | source | | Gives the xml source | |
| | | libxslt-compile-xsl | | parse and compile stylesheet for libxslt Parameter: | stylesheet | | Gives the stylesheet source | |
| | | libxslt | | do a xsl transformation via libxslt Parameter: | source | | Gives the parsed xml source | | | stylesheet | | Gives the compiled stylesheet source | | | param | | Gives the parameters as hash ref | |
| | | xalan-parse-xml | | parse xml source for xalan Parameter: | source | | Gives the xml source | |
| | | xalan-compile-xsl | | parse and compile stylesheet for xalan Parameter: | stylesheet | | Gives the stylesheet source | |
| | | xalan | | do a xsl transformation via xalan Parameter: | source | | Gives the parsed xml source | | | stylesheet | | Gives the compiled stylesheet source | | | param | | Gives the parameters as hash ref | |
| |
| expires_in | | expires_func | | expires_filename | | cache |
Heres an example that show how the recipe must be build: sub get_recipe
{
my ($class, $r, $recipe) = @_ ;
my $param = $r -> component -> param ;
my @recipe ;
push @recipe, {'type' => 'file' } ;
push @recipe, {'type' => 'epparse' } ;
push @recipe, {'type' => 'epcompile', cache => 1 } ;
push @recipe, {'type' => 'eprun' } ;
my $config = $r -> component -> config ;
my $xsltproc = $config -> xsltproc ;
my @stylesheet =
(
{ type => 'file', filename => $config -> xsltstylesheet, },
{ type => $xsltproc . '-compile-xsl', cache => 1 },
) ; push @recipe, {'type' => 'eptostring' } ;
push @recipe, {'type' => $xsltproc . '-parse-xml', } ;
push @recipe, {'type' => $xsltproc, stylesheet => \@stylesheet } ;
return \@recipe ;
} This corresponds to the following diagramm (when xsltproc = xalan): +-------------------+ +--------------------+
+ file {inputfile} + +file{xsltstylesheet}+
+-------------------+ +--------------------+
| |
v v
+-------------------+ +-------------------+
+ xalan-parse-xml + + xalan-compile-xsl +
+-------------------+ +-------------------+
| |
| |
| +-----------+ |
+-------> + xalan + <-+
+-----------+ Take a look at the recipes that comes with Embperl to get more
ideas what can be done.
|