| Text-MicroMason documentation | Contained in the Text-MicroMason distribution. |
Text::MicroMason::QuickTemplate - Alternate Syntax like Text::QuickTemplate
Instead of using this class directly, pass its name to be mixed in:
use Text::MicroMason; my $mason = Text::MicroMason::Base->new( -QuickTemplate );
Use the standard compile and execute methods to parse and evalute templates:
print $mason->compile( text=>$template )->( @%args ); print $mason->execute( text=>$template, @args );
Or use Text::QuickTemplate's calling conventions:
$template = Text::MicroMason->new( -HTMLTemplate, text=>'simple.tmpl' );
print $template->fill( %arguments );
Text::QuickTemplate provides a syntax to embed values into a text template:
Good {{timeofday}}, {{name}}!
This mixin class overrides several methods to allow MicroMason to emulate the template syntax and some of the other features of Text::QuickTemplate.
This class automatically includes the following other mixins: TemplateDir, HasParams, and StoreOne.
This is not a drop-in replacement for Text::QuickTemplate, as the implementation is quite different, but it should be able to process most existing templates without major changes.
The following features of EmbPerl syntax are supported:
The interface being emulated is described in Text::QuickTemplate.
For an overview of this templating framework, see Text::MicroMason.
This is a mixin class intended for use with Text::MicroMason::Base.
For distribution, installation, support, copyright and license information, see Text::MicroMason::Docs::ReadMe.
| Text-MicroMason documentation | Contained in the Text-MicroMason distribution. |
package Text::MicroMason::QuickTemplate; require Text::MicroMason::Base; require Text::MicroMason::StoreOne; require Text::MicroMason::HasParams; push @ISA, map "Text::MicroMason::$_", qw( StoreOne HasParams ); require Exporter; $DONTSET = \""; sub import { @EXPORT = '$DONTSET'; goto &Exporter::import } ###################################################################### sub defaults { (shift)->NEXT('defaults'), delimiters => [ '{{', '}}' ], } ###################################################################### sub lex_token { my $self = shift; my ($l_delim, $r_delim) = @{ $self->{'delimiters'} }; /\G \Q$l_delim\E (.*?) \Q$r_delim\E/gcxs ? ( expr => 'my @param = $m->param(' . "'\Q$1\E'" . '); scalar @param or die "could not resolve the following symbol: ' . $1 . '"; ( $param[0] eq "' . $DONTSET . '" ) ? "{{' . $1 . '}}" : $param[0]' ) : # Things that don't match the above /\G ( (?: [^\{] | \{(?!\{) )+ ) /gcxs ? ( 'text' => $1 ) : () } ###################################################################### sub fill { (shift)->execute_again( @_ ) } sub pre_fill { unshift @{ (shift)->{params} }, { @_ } } sub clear_values { @{ (shift)->{params} } = () } ###################################################################### 1; __END__ ######################################################################