summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStevan Little <stevan.little@iinteractive.com>2010-01-08 16:11:54 -0500
committerStevan Little <stevan.little@iinteractive.com>2010-01-08 16:11:54 -0500
commit0495d476055c9e0fe414f373fffd6d058b3d4c17 (patch)
tree2373a8ca43dc436ef8f98ef43cdf377ff57fe0e1
parent883fca598626f2fa6c522ea91b429df3f5155008 (diff)
downloadox-view-tt-0495d476055c9e0fe414f373fffd6d058b3d4c17.tar.gz
ox-view-tt-0495d476055c9e0fe414f373fffd6d058b3d4c17.zip
some more stuff
-rw-r--r--.gitignore2
-rw-r--r--lib/OX/View/TT.pm110
2 files changed, 112 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5ca0973
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+
diff --git a/lib/OX/View/TT.pm b/lib/OX/View/TT.pm
new file mode 100644
index 0000000..8383754
--- /dev/null
+++ b/lib/OX/View/TT.pm
@@ -0,0 +1,110 @@
+package OX::View::TT;
+use Moose;
+use MooseX::Types::Path::Class;
+
+use Template;
+
+our $VERSION = '0.01';
+our $AUTHORITY = 'cpan:STEVAN';
+
+has 'template_root' => (
+ is => 'ro',
+ isa => 'Path::Class::Dir',
+ coerce => 1,
+ required => 1,
+);
+
+has 'template_config' => (
+ is => 'ro',
+ isa => 'HashRef',
+ lazy => 1,
+ default => sub { +{} },
+);
+
+has 'tt' => (
+ is => 'ro',
+ isa => 'Template',
+ lazy => 1,
+ default => sub {
+ my $self = shift;
+ Template->new(
+ INCLUDE_PATH => $self->template_root,
+ %{ $self->template_config }
+ )
+ }
+);
+
+sub normalize_web_base {
+ my ($self, $r) = @_;
+ my $base = $r->script_name;
+ $base = '/' . $base unless $base =~ /^\//;
+ $base = $base . '/' unless $base =~ /\/$/;
+ $base;
+}
+
+sub render {
+ my ($self, $r, $template, $params) = @_;
+
+ my $BASE = $self->normalize_web_base( $r );
+
+ my $out = '';
+ $self->tt->process(
+ $template,
+ {
+ r => $r,
+ base => $BASE,
+ uri_for => sub { $BASE . $r->router->uri_for( %{ $_[0] } ) },
+ %{ $params || {} }
+ },
+ \$out
+ ) || confess $self->tt->error;
+
+ $out;
+}
+
+__PACKAGE__->meta->make_immutable;
+
+no Moose; 1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+OX::View::TT - A Moosey solution to this problem
+
+=head1 SYNOPSIS
+
+ use OX::View::TT;
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=over 4
+
+=item B<>
+
+=back
+
+=head1 BUGS
+
+All complex software has bugs lurking in it, and this module is no
+exception. If you find a bug please either email me, or add the bug
+to cpan-RT.
+
+=head1 AUTHOR
+
+Stevan Little E<lt>stevan.little@iinteractive.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2009 Infinity Interactive, Inc.
+
+L<http://www.iinteractive.com>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut