summary refs log tree commit diff
path: root/lib/Dancer/Template/Xslate.pm
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2010-07-30 13:40:06 +0200
committerfranck cuny <franck@lumberjaph.net>2010-07-30 13:40:06 +0200
commit1745c19001c4a4595624fbe97adcfc65820ae5fe (patch)
tree6cbd69d644eaf0499516f501073f416473c84aa4 /lib/Dancer/Template/Xslate.pm
downloaddancer-template-xslate-1745c19001c4a4595624fbe97adcfc65820ae5fe.tar.gz
initial commit
Diffstat (limited to 'lib/Dancer/Template/Xslate.pm')
-rw-r--r--lib/Dancer/Template/Xslate.pm66
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/>