diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-07-27 21:38:02 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-07-27 21:38:02 +0000 |
commit | 5017ffd8a512c09d3c34764709791812acfc5515 (patch) | |
tree | 845afc1ef1a8de038c10c154f99b4099cf389ce3 /IkiWiki | |
parent | 06dc80b6625f2874ca8ad177306395dd01ef9c6a (diff) |
* Patch from Enrico that
- allows preprocessor directives to have parameters with no specified
value
- fixes preprocessor directive parameter parsing so that
foo=bar baz now means "foo=bar" and a "baz" with no value
- Add a tag plugin that allows more easily tagging pages.
The meta plugin can also still be used for this.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/tag.pm | 31 | ||||
-rw-r--r-- | IkiWiki/Render.pm | 9 |
2 files changed, 38 insertions, 2 deletions
diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm new file mode 100644 index 000000000..841d508bf --- /dev/null +++ b/IkiWiki/Plugin/tag.pm @@ -0,0 +1,31 @@ +#!/usr/bin/perl +# Ikiwiki tag plugin. +package IkiWiki::Plugin::tag; + +use warnings; +use strict; +use IkiWiki; + +my %tag; + +sub import { #{{{ + IkiWiki::hook(type => "preprocess", id => "tag", call => \&preprocess); +} # }}} + +sub preprocess (@) { #{{{ + if (! @_) { + return ""; + } + my %params=@_; + my $page = $params{page}; + delete $params{page}; + + foreach my $tag (keys %params) { + # hidden WikiLink + push @{$IkiWiki::links{$page}}, $tag; + } + + return ""; +} # }}} + +1 diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index e5a1679f8..690945c49 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -105,8 +105,13 @@ sub preprocess ($$;$) { #{{{ # Note: preserve order of params, some plugins may # consider it significant. my @params; - while ($params =~ /(\w+)=\"?([^"]+)"?(\s+|$)/g) { - push @params, $1, $2; + while ($params =~ /(?:(\w+)=)?(?:"([^"]+)"|(\S+))(?:\s+|$)/g) { + if (defined $1) { + push @params, $1, (defined $2 ? $2 : $3); + } + else { + push @params, (defined $2 ? $2 : $3), ''; + } } return $hooks{preprocess}{$command}{call}->(@params, page => $page); } |