aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki.pm
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-02-06 21:17:25 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2007-02-06 21:17:25 +0000
commit58141a0ebcdf3313a83af712b83f8acd1c08aa3b (patch)
tree03deba83be19c00ed111eea7b23f208eba69ba4f /IkiWiki.pm
parent46f0f5bdc23139f0a382e608904c2acc8a774e73 (diff)
downloadikiwiki-58141a0ebcdf3313a83af712b83f8acd1c08aa3b.tar
ikiwiki-58141a0ebcdf3313a83af712b83f8acd1c08aa3b.tar.gz
* 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.pm18
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);