From 47ee266163202f15fca3b108fad294bec262405a Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 15:05:49 -0500 Subject: improve support for internal pages This makes it a lot quicker to deal with lots of recentchanges pages appearing and disappearing. It avoids needing to clutter up pagespecs with exclusions for those pages, by making normal pagespecs not match them. --- IkiWiki.pm | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'IkiWiki.pm') diff --git a/IkiWiki.pm b/IkiWiki.pm index c70307b5f..db2605672 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -260,6 +260,12 @@ sub pagetype ($) { #{{{ return; } #}}} +sub isinternal ($) { #{{{ + my $page=shift; + return exists $pagesources{$page} && + $pagesources{$page} =~ /\._([^.]+)$/; +} #}}} + sub pagename ($) { #{{{ my $file=shift; @@ -1287,13 +1293,22 @@ sub match_glob ($$;@) { #{{{ $glob=~s/\\\?/./g; if ($page=~/^$glob$/i) { - return IkiWiki::SuccessReason->new("$glob matches $page"); + if (! IkiWiki::isinternal($page) || $params{internal}) { + return IkiWiki::SuccessReason->new("$glob matches $page"); + } + else { + return IkiWiki::FailReason->new("$glob matches $page, but the page is an internal page"); + } } else { return IkiWiki::FailReason->new("$glob does not match $page"); } } #}}} +sub match_internal ($$;@) { #{{{ + return match_glob($_[0], $_[1], @_, internal => 1) +} #}}} + sub match_link ($$;@) { #{{{ my $page=shift; my $link=lc(shift); @@ -1389,19 +1404,4 @@ sub match_creation_year ($$;@) { #{{{ } } #}}} -sub match_user ($$;@) { #{{{ - shift; - my $user=shift; - my %params=@_; - - return IkiWiki::FailReason->new('cannot match user') - unless exists $params{user}; - if ($user eq $params{user}) { - return IkiWiki::SuccessReason->new("user is $user") - } - else { - return IkiWiki::FailReason->new("user is not $user"); - } -} #}}} - 1 -- cgit v1.2.3