.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Text::MicroMason::TextTemplate 3pm" .TH Text::MicroMason::TextTemplate 3pm "2023-08-10" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Text::MicroMason::TextTemplate \- Alternate Syntax like Text::Template .SH "SYNOPSIS" .IX Header "SYNOPSIS" Instead of using this class directly, pass its name to be mixed in: .PP .Vb 2 \& use Text::MicroMason; \& my $mason = Text::MicroMason::Base\->new( \-TextTemplate ); .Ve .PP Use the standard compile and execute methods to parse and evaluate templates: .PP .Vb 2 \& print $mason\->compile( text=>$template )\->( @%args ); \& print $mason\->execute( text=>$template, @args ); .Ve .PP Text::Template provides a syntax to mix Perl into a text template: .PP .Vb 4 \& { my $hour = (localtime)[2]; \& my $daypart = ( $hour > 11 ) ? \*(Aqafternoon\*(Aq : \*(Aqmorning\*(Aq; \& \*(Aq\*(Aq } \& Good { $daypart }, { $name }! .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This mixin class overrides several methods to allow MicroMason to emulate the template syntax and some of the other features of Text::Template. .SS "Compatibility with Text::Template" .IX Subsection "Compatibility with Text::Template" This is not a drop-in replacement for Text::Template, as the Perl calling interface is quite different, but it should be able to process most existing templates without major changes. .PP This should allow current Text::Template users to take advantage of MicroMason's one-time compilation feature, which in theory could be faster than Text::Template's repeated evals for each expression. (No benchmarking yet.) .PP Contributed patches to more closely support the syntax of Text::Template documents would be welcomed by the author. .SS "Template Syntax" .IX Subsection "Template Syntax" The following elements are recognized by the TextTemplate lexer: .IP "\(bu" 4 \&\fIliteral_text\fR .Sp Anything not specifically parsed by the below rule is interpreted as literal text. .IP "\(bu" 4 { \fIperl_expr\fR } .Sp A Perl expression to be interpolated into the result. .Sp .Vb 1 \& Good { (localtime)[2]>11 ? \*(Aqafternoon\*(Aq : \*(Aqmorning\*(Aq }. .Ve .Sp The block may span multiple lines and is scoped inside a \*(L"do\*(R" block, so it may contain multiple Perl statements and it need not end with a semicolon. .Sp .Vb 2 \& Good { my $h = (localtime)[2]; $h > 11 ? \*(Aqafternoon\*(Aq \& : \*(Aqmorning\*(Aq }. .Ve .Sp To make a block silent, use an empty string as the final expression in the block. .Sp .Vb 2 \& { warn "Interpreting template"; \*(Aq\*(Aq } \& Hello there. .Ve .Sp Although the blocks are not in the same a lexical scope, you can use local variables defined in one block in another: .Sp .Vb 2 \& { $phase = (localtime)[2]>11 ? \*(Aqafternoon\*(Aq : \*(Aqmorning\*(Aq; \*(Aq\*(Aq } \& Good { $phrase }. .Ve .SS "Argument Passing" .IX Subsection "Argument Passing" Like Text::Template, this package clobbers a target namespace to pass in template arguments as package variables. For example, if you pass in an argument list of \f(CW\*(C`foo => 23\*(C'\fR, it will set the variable \f(CW$foo\fR in your package. .PP The strict pragma is disabled to facilitate these variable references. .PP Internally, this module inherits this functionality from the PassVariables mixin. If you are using the TextTemplate mixin, do not also specify the PassVariables mixin or it will be included twice. For more information, see Text::MicroMason::PassVariables. .SS "Supported Attributes" .IX Subsection "Supported Attributes" .IP "package" 4 .IX Item "package" Target package namespace. .SS "Private Methods" .IX Subsection "Private Methods" .IP "\fBprepare()\fR" 4 .IX Item "prepare()" If a package has not been specified, this method generates a new package namespace to use only for compilation of a single template. .IP "\fBlex()\fR" 4 .IX Item "lex()" Lexer for matched braces \- produces only text and expr tokens. Uses Text::Balanced. .SH "SEE ALSO" .IX Header "SEE ALSO" The interface being emulated is described in Text::Template. .PP For an overview of this templating framework, see Text::MicroMason. .PP This is a mixin class intended for use with Text::MicroMason::Base. .PP For distribution, installation, support, copyright and license information, see Text::MicroMason::Docs::ReadMe.