factor out glob2re

master
Joey Hess 2008-07-02 17:33:37 -04:00
parent 84e6c4fa66
commit c150590e27
3 changed files with 11 additions and 14 deletions

View File

@ -1290,6 +1290,13 @@ sub pagespec_valid ($) { #{{{
my $sub=pagespec_translate($spec); my $sub=pagespec_translate($spec);
return ! $@; return ! $@;
} #}}} } #}}}
sub glob2re ($) { #{{{
my $re=quotemeta(shift);
$re=~s/\\\*/.*/g;
$re=~s/\\\?/./g;
return $re;
} #}}}
package IkiWiki::FailReason; package IkiWiki::FailReason;
@ -1337,12 +1344,8 @@ sub match_glob ($$;@) { #{{{
$glob="$from/$glob" if length $from; $glob="$from/$glob" if length $from;
} }
# turn glob into safe regexp my $regexp=glob2re($glob);
$glob=quotemeta($glob); if ($page=~/^$regexp$/i) {
$glob=~s/\\\*/.*/g;
$glob=~s/\\\?/./g;
if ($page=~/^$glob$/i) {
if (! IkiWiki::isinternal($page) || $params{internal}) { if (! IkiWiki::isinternal($page) || $params{internal}) {
return IkiWiki::SuccessReason->new("$glob matches $page"); return IkiWiki::SuccessReason->new("$glob matches $page");
} }

View File

@ -318,11 +318,7 @@ sub match_mimetype ($$;@) { #{{{
$mimetype="unknown"; $mimetype="unknown";
} }
# turn glob into a safe regexp my $regexp=IkiWiki::glob2re($wanted);
my $regexp=quotemeta($wanted);
$regexp=~s/\\\*/.*/g;
$regexp=~s/\\\?/./g;
if ($mimetype!~/^$regexp$/i) { if ($mimetype!~/^$regexp$/i) {
return IkiWiki::FailReason->new("file MIME type is $mimetype, not $wanted"); return IkiWiki::FailReason->new("file MIME type is $mimetype, not $wanted");
} }

View File

@ -253,9 +253,7 @@ sub match { #{{{
my $page=shift; my $page=shift;
# turn glob into a safe regexp # turn glob into a safe regexp
my $re=quotemeta(shift); my $re=IkiWiki::glob2re(shift);
$re=~s/\\\*/.*/g;
$re=~s/\\\?/./g;
my $val; my $val;
if (exists $pagestate{$page}{meta}{$field}) { if (exists $pagestate{$page}{meta}{$field}) {