From 58141a0ebcdf3313a83af712b83f8acd1c08aa3b Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 6 Feb 2007 21:17:25 +0000 Subject: * Patch based on a patch from Ethan to support relative matching in PageSpecs, by using "./". pagespec_match() has grown a new third parameter to support this. --- IkiWiki.pm | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'IkiWiki.pm') diff --git a/IkiWiki.pm b/IkiWiki.pm index dfd224062..8b3109a34 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -854,23 +854,35 @@ sub pagespec_translate ($) { #{{{ $code.=" match_$1(\$page, ".safequote($2).")"; } else { - $code.=" match_glob(\$page, ".safequote($word).")"; + $code.=" match_glob(\$page, ".safequote($word).", \$from)"; } } return $code; } #}}} -sub pagespec_match ($$) { #{{{ +sub pagespec_match ($$;$) { #{{{ my $page=shift; my $spec=shift; + my $from=shift; + if (! defined $from){ + $from = ""; + } return eval pagespec_translate($spec); } #}}} -sub match_glob ($$) { #{{{ +sub match_glob ($$$) { #{{{ my $page=shift; my $glob=shift; + my $from=shift; + + # relative matching + if ($glob =~ m!^\./!) { + $from=~s!/?[^/]+$!!; + $glob=~s!^\./!!;a + $glob="$from/$glob"; + } # turn glob into safe regexp $glob=quotemeta($glob); -- cgit v1.2.3