From 5017ffd8a512c09d3c34764709791812acfc5515 Mon Sep 17 00:00:00 2001 From: joey Date: Thu, 27 Jul 2006 21:38:02 +0000 Subject: * 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. --- IkiWiki/Plugin/tag.pm | 31 +++++++++++++++++++++++++++++++ IkiWiki/Render.pm | 9 +++++++-- 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 IkiWiki/Plugin/tag.pm (limited to 'IkiWiki') 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); } -- cgit v1.2.3