Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

mojo::template(3pm) [debian man page]

Mojo::Template(3pm)					User Contributed Perl Documentation				       Mojo::Template(3pm)

NAME
Mojo::Template - Perl-ish templates! SYNOPSIS
use Mojo::Template; my $mt = Mojo::Template->new; # Simple my $output = $mt->render(<<'EOF'); % use Time::Piece; <!DOCTYPE html> <html> <head><title>Simple</title></head> % my $now = localtime; <body>Time: <%= $now->hms %></body> </html> EOF say $output; # More advanced my $output = $mt->render(<<'EOF', 23, 'foo bar'); % my ($number, $text) = @_; %= 5 * 5 <!DOCTYPE html> <html> <head><title>More advanced</title></head> <body> test 123 foo <% my $i = $number + 2; %> % for (1 .. 23) { * some text <%= $i++ %> % } </body> </html> EOF say $output; DESCRIPTION
Mojo::Template is a minimalistic and very Perl-ish template engine, designed specifically for all those small tasks that come up during big projects. Like preprocessing a configuration file, generating text from heredocs and stuff like that. <% Perl code %> <%= Perl expression, replaced with result %> <%== Perl expression, replaced with XML escaped result %> <%# Comment, useful for debugging %> <%% Replaced with "<%", useful for generating templates %> % Perl code line, treated as "<% line =%>" %= Perl expression line, treated as "<%= line %>" %== Perl expression line, treated as "<%== line %>" %# Comment line, treated as "<%# line =%>" %% Replaced with "%", useful for generating templates Escaping behavior can be reversed with the "auto_escape" attribute, this is the default in Mojolicious ".ep" templates for example. <%= Perl expression, replaced with XML escaped result %> <%== Perl expression, replaced with result %> Mojo::ByteStream objects are always excluded from automatic escaping. <%= Mojo::ByteStream->new('<div>excluded!</div>') %> Newlines can be escaped with a backslash. This is <%= 1 + 1 %> a single line And a backslash in front of a newline can be escaped with another backslash. This will <%= 1 + 1 %> result\ in multiple\ lines Whitespace characters around tags can be trimmed with a special tag ending. <%= All whitespace characters around this expression will be trimmed =%> You can capture whole template blocks for reuse later with the "begin" and "end" keywords. <% my $block = begin %> <% my $name = shift; =%> Hello <%= $name %>. <% end %> <%= $block->('Baerbel') %> <%= $block->('Wolfgang') %> Perl lines can also be indented freely. % my $block = begin % my $name = shift; Hello <%= $name %>. % end %= $block->('Baerbel') %= $block->('Wolfgang') Mojo::Template templates work just like Perl subs (actually they get compiled to a Perl sub internally). That means you can access arguments simply via @_. % my ($foo, $bar) = @_; % my $x = shift; test 123 <%= $foo %> Templates get compiled to Perl code internally, this can make debugging a bit tricky. But Mojo::Template will return Mojo::Exception objects that stringify to error messages with context. Bareword "xx" not allowed while "strict subs" in use at template line 4. 2: </head> 3: <body> 4: % my $i = 2; xx 5: %= $i * 2 6: </body> See Mojolicious::Guides::Rendering for more. ATTRIBUTES
Mojo::Template implements the following attributes. "auto_escape" my $auto_escape = $mt->auto_escape; $mt = $mt->auto_escape(1); Activate automatic XML escaping. "append" my $code = $mt->append; $mt = $mt->append('warn "Processed template"'); Append Perl code to compiled template. "capture_end" my $capture_end = $mt->capture_end; $mt = $mt->capture_end('end'); Keyword indicating the end of a capture block, defaults to "end". <% my $block = begin %> Some data! <% end %> "capture_start" my $capture_start = $mt->capture_start; $mt = $mt->capture_start('begin'); Keyword indicating the start of a capture block, defaults to "begin". <% my $block = begin %> Some data! <% end %> "code" my $code = $mt->code; $mt = $mt->code($code); Compiled template code. "comment_mark" my $comment_mark = $mt->comment_mark; $mt = $mt->comment_mark('#'); Character indicating the start of a comment, defaults to "#". <%# This is a comment %> "encoding" my $encoding = $mt->encoding; $mt = $mt->encoding('UTF-8'); Encoding used for template files. "escape_mark" my $escape_mark = $mt->escape_mark; $mt = $mt->escape_mark('='); Character indicating the start of an escaped expression, defaults to "=". <%== $foo %> "expression_mark" my $expression_mark = $mt->expression_mark; $mt = $mt->expression_mark('='); Character indicating the start of an expression, defaults to "=". <%= $foo %> "line_start" my $line_start = $mt->line_start; $mt = $mt->line_start('%'); Character indicating the start of a code line, defaults to "%". % $foo = 23; "name" my $name = $mt->name; $mt = $mt->name('foo.mt'); Name of template currently being processed, defaults to "template". Note that this method is attribute and might change without warning! "namespace" my $namespace = $mt->namespace; $mt = $mt->namespace('main'); Namespace used to compile templates, defaults to "Mojo::Template::SandBox". "prepend" my $code = $mt->prepend; $mt = $mt->prepend('my $self = shift;'); Prepend Perl code to compiled template. "replace_mark" my $replace_mark = $mt->replace_mark; $mt = $mt->replace_mark('%'); Character used for escaping the start of a tag or line, defaults to "%". <%% my $foo = 23; %> "tag_start" my $tag_start = $mt->tag_start; $mt = $mt->tag_start('<%'); Characters indicating the start of a tag, defaults to "<%". <% $foo = 23; %> "tag_end" my $tag_end = $mt->tag_end; $mt = $mt->tag_end('%>'); Characters indicating the end of a tag, defaults to "%>". <%= $foo %> "template" my $template = $mt->template; $mt = $mt->template($template); Raw template. "tree" my $tree = $mt->tree; $mt = $mt->tree($tree); Parsed tree. "trim_mark" my $trim_mark = $mt->trim_mark; $mt = $mt->trim_mark('-'); Character activating automatic whitespace trimming, defaults to "=". <%= $foo =%> METHODS
Mojo::Template inherits all methods from Mojo::Base and implements the following new ones. "new" my $mt = Mojo::Template->new; Construct a new Mojo::Template object. "build" $mt = $mt->build; Build template. "compile" my $exception = $mt->compile; Compile template. "interpret" my $output = $mt->interpret; my $output = $mt->interpret(@args); Interpret template. # Reuse template say $mt->render('Hello <%= $_[0] %>!', 'Bender'); say $mt->interpret('Fry'); say $mt->interpret('Leela'); "parse" $mt = $mt->parse($template); Parse template. "render" my $output = $mt->render($template); my $output = $mt->render($template, @args); Render template. say $mt->render('Hello <%= $_[0] %>!', 'Bender'); "render_file" my $output = $mt->render_file('/tmp/foo.mt'); my $output = $mt->render_file('/tmp/foo.mt', @args); Render template file. "render_file_to_file" my $exception = $mt->render_file_to_file('/tmp/foo.mt', '/tmp/foo.txt'); my $exception = $mt->render_file_to_file('/tmp/foo.mt', '/tmp/foo.txt', @args); Render template file to another file. "render_to_file" my $exception = $mt->render_to_file($template, '/tmp/foo.txt'); my $exception = $mt->render_to_file($template, '/tmp/foo.txt', @args); Render template to a file. SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>. perl v5.14.2 2012-09-05 Mojo::Template(3pm)
Man Page