]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - IkiWiki/Plugin/pagetemplate.pm
memoization for injected RPC functions is a very, very good thing
[git.ikiwiki.info.git] / IkiWiki / Plugin / pagetemplate.pm
1 #!/usr/bin/perl
2 package IkiWiki::Plugin::pagetemplate;
4 use warnings;
5 use strict;
6 use IkiWiki 2.00;
8 my %templates;
10 sub import { #{{{
11         hook(type => "preprocess", id => "pagetemplate", call => \&preprocess);
12         hook(type => "templatefile", id => "pagetemplate", call => \&templatefile);
13 } # }}}
15 sub preprocess (@) { #{{{
16         my %params=@_;
18         if (! exists $params{template} ||
19             $params{template} !~ /^[-A-Za-z0-9._+]+$/ ||
20             ! defined IkiWiki::template_file($params{template})) {
21                  return "[[pagetemplate ".gettext("bad or missing template")."]]";
22         }
24         if ($params{page} eq $params{destpage}) {
25                 $templates{$params{page}}=$params{template};
26         }
28         return "";
29 } # }}}
31 sub templatefile (@) { #{{{
32         my %params=@_;
34         if (exists $templates{$params{page}}) {
35                 return $templates{$params{page}};
36         }
37         
38         return undef;
39 } # }}}
41 1