diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-02-06 21:17:25 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2007-02-06 21:17:25 +0000 |
commit | 58141a0ebcdf3313a83af712b83f8acd1c08aa3b (patch) | |
tree | 03deba83be19c00ed111eea7b23f208eba69ba4f /IkiWiki.pm | |
parent | 46f0f5bdc23139f0a382e608904c2acc8a774e73 (diff) |
* 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.
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r-- | IkiWiki.pm | 18 |
1 files changed, 15 insertions, 3 deletions
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); |