diff options
author | dakkar <dakkar@luxion> | 2008-01-03 20:05:51 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2008-01-03 20:05:51 +0000 |
commit | 409b0fae3968de8b7ec3adfc4840ddad536757ff (patch) | |
tree | 182eb0b71053ff9d4bb665bd7fc0173cfe9672c2 /lib/WebCoso/TT.pm | |
parent | MakeMaker! (diff) | |
download | WebCoso-409b0fae3968de8b7ec3adfc4840ddad536757ff.tar.gz WebCoso-409b0fae3968de8b7ec3adfc4840ddad536757ff.tar.bz2 WebCoso-409b0fae3968de8b7ec3adfc4840ddad536757ff.zip |
refactoring: TT
git-svn-id: svn://luxion/repos/WebCoso/trunk@326 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso/TT.pm')
-rw-r--r-- | lib/WebCoso/TT.pm | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/WebCoso/TT.pm b/lib/WebCoso/TT.pm new file mode 100644 index 0000000..d04c209 --- /dev/null +++ b/lib/WebCoso/TT.pm @@ -0,0 +1,63 @@ +package WebCoso::TT; +use WebCoso::Common; +use Path::Class; +use Template; + +sub new { + my ($class,%opts)=@_; + + $opts{stash}||={ + dstUriFor => \&WebCoso::Common::dstUriFor, + isLang => \&WebCoso::Common::isLang, + }; + + my $self={%opts}; + + $self->{template_provider}=Template::Provider->new({ + INCLUDE_PATH=> $self->{TMPLPATH}, + ABSOLUTE=>1, + RELATIVE=>1, + }); + $self->{template}=Template->new({ + LOAD_TEMPLATES=>[$self->{template_provider}], + }); + + $self->{fc}->add_parser( + qr{\.tt2?$} => + sub { + $self->{template}->context->template($_[0]); + }); #$}); + + $self->{expander}=sub { + my ($maker,$target,$deps,$matches)=@_; + + warn "expandTT($target,@$deps,@$matches)\n"; + + my $tmpl=$self->{fc}->get($deps->[-1]); + my $vars={ path=> $matches->[0], + language => $matches->[1], + %{$self->{stash}}, + }; + if (@$deps>1) { + warn "tagging as $deps->[0]\n"; + $vars->{tagged}=$self->{fc}->get($deps->[0]); + } + push @{$self->{template_provider}->include_path}, + file($deps->[-1])->parent; + $self->{fc}->put($target, + $self->{template}->context->process($tmpl, + $vars)); + pop @{$self->{template_provider}->include_path}; + }; + + bless $self,$class; +} + + +sub expandTT { + my ($self)=@_; + + return $self->{expander} + } + +1; |