diff options
author | Stevan Little <stevan.little@iinteractive.com> | 2010-01-08 16:11:54 -0500 |
---|---|---|
committer | Stevan Little <stevan.little@iinteractive.com> | 2010-01-08 16:11:54 -0500 |
commit | 0495d476055c9e0fe414f373fffd6d058b3d4c17 (patch) | |
tree | 2373a8ca43dc436ef8f98ef43cdf377ff57fe0e1 | |
parent | 883fca598626f2fa6c522ea91b429df3f5155008 (diff) | |
download | ox-view-tt-0495d476055c9e0fe414f373fffd6d058b3d4c17.tar.gz ox-view-tt-0495d476055c9e0fe414f373fffd6d058b3d4c17.zip |
some more stuff
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | lib/OX/View/TT.pm | 110 |
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 |