Embperl::Recipe.3pm

Langue: en

Version: 2009-11-07 (ubuntu - 24/10/10)

Section: 3 (Bibliothèques de fonctions)

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.