NAME
Embperl::Recipe - base class for defining custom recipes
SYNOPSIS
EMBPERL_RECIPE "XSLT Embperl"
DESCRIPTION
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)
- $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.
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
 
 
Cache parameter
- expires_in
 - expires_func
 - expires_filename
 - cache
 
Format
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.