From: Marius Gavrilescu Date: Wed, 25 Mar 2015 14:53:30 +0000 (+0200) Subject: Preload templates X-Git-Url: http://git.ieval.ro/?a=commitdiff_plain;h=4b3f09fe441cc7bfb914c2ee05968ad387ba4f5b;p=plack-app-gruntmaster.git Preload templates --- diff --git a/lib/Plack/App/Gruntmaster/HTML.pm b/lib/Plack/App/Gruntmaster/HTML.pm index 1eb6d98..f2b4ec9 100644 --- a/lib/Plack/App/Gruntmaster/HTML.pm +++ b/lib/Plack/App/Gruntmaster/HTML.pm @@ -42,6 +42,14 @@ sub HTML::Element::namedlink { $self->replace_content($name); } +my %page_cache; +for () { + my ($tmpl, $lang) = m,tmpl/(\w+)\.(\w+),; + my $builder = HTML::Seamstress->new; + $builder->ignore_unknown(0); + $page_cache{$tmpl, $lang} = $builder->parse_file($_); +} + sub render { my ($tmpl, $lang, %args) = @_; $lang //= 'en'; @@ -59,9 +67,7 @@ sub render_article { sub _render { my ($tmpl, $lang, %args) = @_; - my $builder = HTML::Seamstress->new; - $builder->ignore_unknown(0); - my $tree = $builder->parse_file("tmpl/$tmpl.$lang"); + my $tree = $page_cache{$tmpl, $lang}->clone or die "No such template/language combination: $tmpl/$lang\n"; $tree = $tree->guts unless $tmpl eq 'skel'; $tree->defmap(smap => \%args); my $process = __PACKAGE__->can("process_$tmpl"); @@ -295,3 +301,6 @@ sub process_ed { my @pb = map { @{$args{$_} // []} } qw/beginner easy medium hard/; $tree->fclass('well')->iter3(\@pb, $iter); } + +1; +__END__