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.