logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Template::Parser - LALR(1) parser for compiling template documents

Author

Configuration Options

       The "Template::Parser" module accepts the following configuration options.  Please see
       Template::Manual::Config for further details on each option.

   START_TAG,END_TAG
       The START_TAG and END_TAG options are used to specify character sequences or regular expressions that
       mark the start and end of a template directive.

           my $parser = Template::Parser->new({
               START_TAG => quotemeta('<+'),
               END_TAG   => quotemeta('+>'),
           });

   TAG_STYLE
       The TAG_STYLE option can be used to set both START_TAG and END_TAG according to pre-defined tag styles.

           my $parser = Template::Parser->new({
               TAG_STYLE => 'star',     # [* ... *]
           });

   PRE_CHOMP,POST_CHOMP
       The PRE_CHOMP and POST_CHOMP can be set to remove any whitespace before or after a directive tag,
       respectively.

           my $parser = Template::Parser-E<gt>new({
               PRE_CHOMP  => 1,
               POST_CHOMP => 1,
           });

   INTERPOLATE
       The INTERPOLATE flag can be set to allow variables to be embedded in plain text blocks.

           my $parser = Template::Parser->new({
               INTERPOLATE => 1,
           });

       Variables should be prefixed by a "$" to identify them, using curly braces to explicitly scope the
       variable name where necessary.

           Hello ${name},

           The day today is ${day.today}.

   ANYCASE
       The ANYCASE option can be set to allow directive keywords to be specified in any case.

           # with ANYCASE set to 1
           [% INCLUDE foobar %]    # OK
           [% include foobar %]    # OK
           [% include = 10   %]    # ERROR, 'include' is a reserved word

   GRAMMAR
       The GRAMMAR configuration item can be used to specify an alternate grammar for the parser. This allows a
       modified or entirely new template language to be constructed and used by the Template Toolkit.

           use MyOrg::Template::Grammar;

           my $parser = Template::Parser->new({
               GRAMMAR = MyOrg::Template::Grammar->new();
           });

       By default, an instance of the default Template::Grammar will be created and used automatically if a
       "GRAMMAR" item isn't specified.

   DEBUG
       The DEBUG option can be used to enable various debugging features of the "Template::Parser" module.

           use Template::Constants qw( :debug );

           my $template = Template->new({
               DEBUG => DEBUG_PARSER | DEBUG_DIRS,
           });

Description

       The "Template::Parser" module implements a LALR(1) parser and associated methods for parsing template
       documents into Perl code.

Name

       Template::Parser - LALR(1) parser for compiling template documents

Public Methods

new(\%params)
       The new() constructor creates and returns a reference to a new "Template::Parser" object.

       A reference to a hash may be supplied as a parameter to provide configuration values.  See "CONFIGURATION
       OPTIONS" below for a summary of these options and Template::Manual::Config for full details.

           my $parser = Template::Parser->new({
               START_TAG => quotemeta('<+'),
               END_TAG   => quotemeta('+>'),
           });

   parse($text)
       The parse() method parses the text passed in the first parameter and returns a reference to a hash array
       of data defining the compiled representation of the template text, suitable for passing to the
       Template::Document new() constructor method. On error, undef is returned.

           $data = $parser->parse($text)
               || die $parser->error();

       The $data hash reference returned contains a "BLOCK" item containing the compiled Perl code for the
       template, a "DEFBLOCKS" item containing a reference to a hash array of sub-template "BLOCK"s defined
       within in the template, and a "METADATA" item containing a reference to a hash array of metadata values
       defined in "META" tags.

See Also

       Template, Template::Grammar, Template::Directive

perl v5.40.0                                       2024-10-20                              Template::Parser(3pm)

Synopsis

           use Template::Parser;

           $parser   = Template::Parser->new(\%config);
           $template = $parser->parse($text)
               || die $parser->error(), "\n";

See Also