Вячеслав Тихановский > Text-Caml > README.pod

Download:
Text-Caml-0.10.tar.gz

Annotate this POD

View/Report Bugs
Source  

Text::Caml is a Mustache-like (http://mustache.github.com/) template engine. That means it tends to have no logic in template files.

Example

    my $view = Text::Caml->new;

    my $output = $view->render_file('template', {title => 'Hello', body => 'there!'});

    # template
    <html>
        <head>
            <title>{{title}}</title>
        </head>
        <body>
            {{body}}
        </body>
    </html>

    $output = $view->render('{{hello}}', {hello => 'hi'});

Syntax

Context

Context is the data passed to the template. Context can change during template rendering and be specific in various cases.

Variables

Variables are inserted using {{foo}} syntax. If a variable is not defined or empty it is simply ignored.

    Hello {{user}}!

By default every variable is escaped when parsed. This can be omitted using & flag.

    # user is '1 > 2'
    Hello {{user}}! => Hello 1 &gt; 2!

    Hello {{&user}}! => Hello 1 > 2!

Using a . syntax it is possible to access deep hash structures.

    # user => {name => 'Larry'}
    {{user.name}}

    Larry

Comments

Comments are ignored. They can be multiline too.

  foo{{! Comment}}bar

  foo{{!
  Comment
  }}bar

Sections

Sections are like iterators that iterate over your data. Depending on a variable type different iterators are created.

Inverted sections

Inverted sections are run in those situations when normal sections don't. When boolean value is false, array is empty etc.

    # repo => []
    {{#repo}}
      <b>{{name}}</b>
    {{/repo}}
    {{^repo}}
      No repos :(
    {{/repo}}

    No repos :(

Partials

Partials are like inludes in other templates engines. They are run with the current context and can be recursive.

    {{#articles}}
    {{>article_summary}}
    {{/articles}}
syntax highlighting: