From 0495d476055c9e0fe414f373fffd6d058b3d4c17 Mon Sep 17 00:00:00 2001 From: Stevan Little Date: Fri, 8 Jan 2010 16:11:54 -0500 Subject: some more stuff --- .gitignore | 2 + lib/OX/View/TT.pm | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 .gitignore create mode 100644 lib/OX/View/TT.pm 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 Estevan.little@iinteractive.comE + +=head1 COPYRIGHT AND LICENSE + +Copyright 2009 Infinity Interactive, Inc. + +L + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut -- cgit v1.2.3