Dancer2::Template::TextTemplate::FakeEngine

- NAME
- VERSION
- SYNOPSIS
- DESCRIPTION
- ATTRIBUTES
  - caching
  - expires
  - delimiters
  - cache_stringrefs
  - prepend
  - safe, safe_opcodes, safe_disposable
- METHODS
  - process( $template, \%tokens )
- AUTHOR
- COPYRIGHT AND LICENSE

# NAME

Dancer2::Template::TextTemplate::FakeEngine - Fake Template::Toolkit-like, persistent engine around Text::Template.

# VERSION

version 1.001

# SYNOPSIS

# DESCRIPTION

With Template::Toolkit-like engines, you instantiate one engine to process multiple templates. With Text::Template, you instantiate one engine to process one template. This class is a simple wrapper around Text::Template to simplify its use as a template engine in Dancer2. It basically just manage Text::Template instances (and their expiration) through CHI.

You can give this engine templates as filenames or string references:

- with a filename, the corresponding file will be read by Text::Template;
- a string ref will be dereferenced and its content used as the template content itself.

# ATTRIBUTES

## caching

Whether a cache should be used for storing Text::Template instances, or not.

Defaults to `1` (caching enabled).

## expires

How longer (in seconds) the a Text::Template instance will stay in the cache. After this duration, when the corresponding template is requested again, a new Text::Template instance will be created (and cached).

Defaults to `3600` (one hour). Obviously irrelevant if `caching` is set to `0`!

## delimiters

An arrayref of (two) delimiters, as defined in Text::Template#new.

Defaults to `[ '{', '}' ]`.

## cache_stringrefs

If this attribute and `caching` are true (which is the default), string-ref-templates will always be cached forever (since they cannot become invalid, contrary to template files that can be changed on disc when FakeEngine doesn't watch).

However, you may want to disable this behavior for string-ref-templates if you use a lot of such templates only once (they would fill your cache). By setting `cache_stringrefs` to `0`, you tell FakeEngine not to cache (at all) your string-ref-templates.

## prepend

Contains the string of Perl code added at the top of each evaluated template. See PREPEND in Text::Template.

## safe, safe_opcodes, safe_disposable

These attributes are directly linked to the eponymous options in Dancer2::Template::TextTemplate.

# METHODS

## process( $template, \%tokens )

Computes the `$template` according to specified `\%tokens`.

If `$template` is a string, it is taken as a filename for the template file (if this file does not exist, the method `croak`s). If `$template` is a scalar reference, it is taken as a reference to a string that contains the template. In any other case, this method will `croak` furiously.

Note that, if `caching` is true, (dereferenced) string references will be cached too.

This methods simply gets a Text::Template instance (either from cache or by instantiating it) and calls `Text::Template::fill_in( HASH => \%tokens )` on it, returning the result.

If an error occurs in Text::Template, this method returns `undef`, sets `Dancer2::Template::TextTemplate::FakeEngine::ERROR` to the value of `Text::Template::ERROR` and does not cache anything.

This is our cache. We should gather CHI-related options from config.yml to support other caching methods like Memcached. That sounds overkill to me, but an open interface is always better than a predefined one!

# AUTHOR

Thibaut Le Page <thilp@cpan.org>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Thibaut Le Page.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.