projects
/
plack-app-gruntmaster.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Preload templates
[plack-app-gruntmaster.git]
/
lib
/
Plack
/
App
/
Gruntmaster
/
HTML.pm
diff --git
a/lib/Plack/App/Gruntmaster/HTML.pm
b/lib/Plack/App/Gruntmaster/HTML.pm
index 1eb6d988d05d081d98b173b1ec8d9867cc0ef5a5..f2b4ec9cead19e8e98af996ff35a3e0f4f8bc83f 100644
(file)
--- 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);
}
$self->replace_content($name);
}
+my %page_cache;
+for (<tmpl/*>) {
+ 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';
sub render {
my ($tmpl, $lang, %args) = @_;
$lang //= 'en';
@@
-59,9
+67,7
@@
sub render_article {
sub _render {
my ($tmpl, $lang, %args) = @_;
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");
$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);
}
my @pb = map { @{$args{$_} // []} } qw/beginner easy medium hard/;
$tree->fclass('well')->iter3(\@pb, $iter);
}
+
+1;
+__END__
This page took
0.009721 seconds
and
4
git commands to generate.