From: Joey Hess Date: Sun, 28 Nov 2010 17:35:52 +0000 (-0400) Subject: Merge remote branch 'blipvert/fixes' X-Git-Tag: 3.20101129~10 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/93d77673e44c1c4019a2fcbae2e450f095c4426a?ds=inline;hp=-c Merge remote branch 'blipvert/fixes' --- 93d77673e44c1c4019a2fcbae2e450f095c4426a diff --combined IkiWiki.pm index f57ef8c6c,b3d47ed6a..c06751dd3 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@@ -1201,7 -1201,7 +1201,7 @@@ sub userpage ($) sub openiduser ($) { my $user=shift; - if ($user =~ m!^https?://! && + if (defined $user && $user =~ m!^https?://! && eval q{use Net::OpenID::VerifiedIdentity; 1} && !$@) { my $display; @@@ -2388,7 -2388,7 +2388,7 @@@ sub glob2re ($) my $re=quotemeta(shift); $re=~s/\\\*/.*/g; $re=~s/\\\?/./g; - return $re; + return qr/^$re$/i; } package IkiWiki::FailReason; @@@ -2482,8 -2482,6 +2482,8 @@@ sub derel ($$) return $path; } +my %glob_cache; + sub match_glob ($$;@) { my $page=shift; my $glob=shift; @@@ -2491,13 -2489,8 +2491,13 @@@ $glob=derel($glob, $params{location}); - my $regexp=IkiWiki::glob2re($glob); - if ($page=~/^$regexp$/i) { + # Instead of converting the glob to a regex every time, + # cache the compiled regex to save time. + my $re=$glob_cache{$glob}; + unless (defined $re) { + $glob_cache{$glob} = $re = IkiWiki::glob2re($glob); + } + if ($page =~ $re) { if (! IkiWiki::isinternal($page) || $params{internal}) { return IkiWiki::SuccessReason->new("$glob matches $page"); } @@@ -2667,7 -2660,7 +2667,7 @@@ sub match_user ($$;@) return IkiWiki::ErrorReason->new("no user specified"); } - if (defined $params{user} && $params{user}=~/^$regexp$/i) { + if (defined $params{user} && $params{user}=~$regexp) { return IkiWiki::SuccessReason->new("user is $user"); } elsif (! defined $params{user}) {