]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - IkiWiki/Plugin/meta.pm
solution..
[git.ikiwiki.info.git] / IkiWiki / Plugin / meta.pm
1 #!/usr/bin/perl
2 # Ikiwiki metadata plugin.
3 package IkiWiki::Plugin::meta;
5 use warnings;
6 use strict;
7 use IkiWiki;
9 my %meta;
10 my %title;
12 sub import { #{{{
13         IkiWiki::hook(type => "preprocess", id => "meta", 
14                 call => \&preprocess);
15         IkiWiki::hook(type => "pagetemplate", id => "meta", 
16                 call => \&pagetemplate);
17 } # }}}
19 sub preprocess (@) { #{{{
20         if (! @_) {
21                 return "";
22         }
23         my %params=@_;
24         my $key=shift;
25         my $value=$params{$key};
26         delete $params{$key};
27         my $page=$params{page};
28         delete $params{page};
30         if ($key eq 'link') {
31                 if (%params) {
32                         $meta{$page}='' unless exists $meta{$page};
33                         $meta{$page}.="<link href=\"$value\" ".
34                                 join(" ", map { "$_=\"$params{$_}\"" } keys %params).
35                                 " />\n";
36                 }
37                 else {
38                         # hidden WikiLink
39                         push @{$IkiWiki::links{$page}}, $value;
40                 }
41         }
42         elsif ($key eq 'title') {
43                 $title{$page}=$value;
44         }
45         else {
46                 $meta{$page}='' unless exists $meta{$page};
47                 $meta{$page}.="<meta name=\"$key\" content=\"$value\" />\n";
48         }
50         return "";
51 } # }}}
53 sub pagetemplate ($$) { #{{{
54         my $page=shift;
55         my $template=shift;
57         $template->param(meta => $meta{$page}) if exists $meta{$page};
58         $template->param(title => $title{$page}) if exists $title{$page};
59 } # }}}
61 1