From 4b3f09fe441cc7bfb914c2ee05968ad387ba4f5b Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Wed, 25 Mar 2015 16:53:30 +0200 Subject: [PATCH] Preload templates --- lib/Plack/App/Gruntmaster/HTML.pm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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__ -- 2.30.2