diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-06-02 04:49:12 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-06-02 04:49:12 +0000 |
commit | d534483b9befc360b3d973091b1b7f5692f15a6e (patch) | |
tree | f5071940e2966f935e78bc90755c200145179166 /IkiWiki/Plugin | |
parent | f1b3b728c1bc1e1bd821d362b4936990c1ab6bc9 (diff) |
* Reorganised the doc wiki's todo/* pages, using a link/tag to flag
* Allow pagetemplate plugins to override *anything* in the template.
* Add a meta plugin, which allows specifying various metadata about pages,
like license and author. It also allows for inserting html link and meta
tags into html, overriding the title, and adding hidden WikiLinks, which
can be useful when using link-based globbing for page categorisation.
* Remove preprocessor directives from inlined pages.
* Allow simple preprocessor directive values to be specified w/o quotes.
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/inline.pm | 2 | ||||
-rw-r--r-- | IkiWiki/Plugin/meta.pm | 61 |
2 files changed, 62 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 6ecdf0d38..b22109a93 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -100,7 +100,7 @@ sub get_inline_content ($$) { #{{{ my $file=$pagesources{$page}; my $type=pagetype($file); if ($type ne 'unknown') { - return htmlize($type, linkify($page, $parentpage, readfile(srcfile($file)))); + return htmlize($type, preprocess($page, linkify($page, $parentpage, readfile(srcfile($file))), 1)); } else { return ""; diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm new file mode 100644 index 000000000..8244cf718 --- /dev/null +++ b/IkiWiki/Plugin/meta.pm @@ -0,0 +1,61 @@ +#!/usr/bin/perl +# Ikiwiki metadata plugin. +package IkiWiki::Plugin::meta; + +use warnings; +use strict; +use IkiWiki; + +my %meta; +my %title; + +sub import { #{{{ + IkiWiki::hook(type => "preprocess", id => "meta", + call => \&preprocess); + IkiWiki::hook(type => "pagetemplate", id => "meta", + call => \&pagetemplate); +} # }}} + +sub preprocess (@) { #{{{ + if (! @_) { + return ""; + } + my %params=@_; + my $key=shift; + my $value=$params{$key}; + delete $params{$key}; + my $page=$params{page}; + delete $params{page}; + + if ($key eq 'link') { + if (%params) { + $meta{$page}='' unless exists $meta{$page}; + $meta{$page}.="<link href=\"$value\" ". + join(" ", map { "$_=\"$params{$_}\"" } keys %params). + " />\n"; + } + else { + # hidden WikiLink + push @{$IkiWiki::links{$page}}, $value; + } + } + elsif ($key eq 'title') { + $title{$page}=$value; + } + else { + $meta{$page}='' unless exists $meta{$page}; + $meta{$page}.="<meta name=\"$key\" content=\"$value\" />\n"; + } + + return ""; +} # }}} + +sub pagetemplate ($$) { #{{{ + my $page=shift; + my $template=shift; + + $template->param(meta => $meta{$page}) if exists $meta{$page}; + $template->param(title => $title{$page}) if exists $title{$page}; +} # }}} + +1 |