diff options
author | franck cuny <franck@lumberjaph.net> | 2010-07-30 13:40:06 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2010-07-30 13:40:06 +0200 |
commit | 1745c19001c4a4595624fbe97adcfc65820ae5fe (patch) | |
tree | 6cbd69d644eaf0499516f501073f416473c84aa4 /lib/Dancer/Template/Xslate.pm | |
download | dancer-template-xslate-1745c19001c4a4595624fbe97adcfc65820ae5fe.tar.gz |
initial commit
Diffstat (limited to 'lib/Dancer/Template/Xslate.pm')
-rw-r--r-- | lib/Dancer/Template/Xslate.pm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/Dancer/Template/Xslate.pm b/lib/Dancer/Template/Xslate.pm new file mode 100644 index 0000000..9f1e2c7 --- /dev/null +++ b/lib/Dancer/Template/Xslate.pm @@ -0,0 +1,66 @@ +package Dancer::Template::Xslate; + +# ABSTRACT: Text::Xslate wrapper for Dancer + +use strict; +use warnings; + +use Text::Xslate; + +use base 'Dancer::Template::Abstract'; + +my $_engine; + +sub init { + my $self = shift; + + my %args = ( + %{$self->config}, + ); + + $_engine = Text::Xslate->new(%args); +} + +sub render { + my ($self, $template, $tokens) = @_; + + my $content = eval { + $_engine->render($template, $tokens) + }; + + if (my $err = $@) { + my $error = qq/Couldn't render template "$err"/; + die $error; + } + + return $content; +} + +1; + +=head1 DESCRIPTION + +This class is an interface between Dancer's template engine abstraction layer +and the L<Text::Xslate> module. + +In order to use this engine, use the template setting: + + template: xslate + +This can be done in your config.yml file or directly in your app code with the +B<set> keyword. + +You can configure L<Text::Xslate> : + + template: xslate + engines: + xslate: + cache_dir => "/www/.../xslate_cache", + cache => 1, + module => + - Text::Xslate::Bridge::TT2 # to keep partial compatibility + + +=head1 SEE ALSO + +L<Dancer>, L<Text::Xslate>, L<http://xslate.org/> |