Provided by: libembperl-perl_2.5.0-17_amd64 bug

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.