X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/c80a3cbcfde1a00ffdb0e62f70ee3a7d6bf442df..5acec79c64de145feb364742dde7d9391992b0a8:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index f6a985556..b8e89b73f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -13,15 +13,15 @@ use open qw{:utf8 :std}; use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase %pagestate %wikistate %renderedfiles %oldrenderedfiles - %pagesources %destsources %depends %hooks %forcerebuild - %loaded_plugins %depends_exact}; + %pagesources %destsources %depends %depends_simple %hooks + %forcerebuild %loaded_plugins}; use Exporter q{import}; our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match pagespec_match_list bestlink htmllink readfile writefile pagetype srcfile pagename displaytime will_render gettext urlto targetpage add_underlay pagetitle titlepage linkpage - newpagefile inject add_link add_depends_exact + newpagefile inject add_link %config %links %pagestate %wikistate %renderedfiles %pagesources %destsources); our $VERSION = 3.00; # plugin interface version, next is ikiwiki version @@ -1476,7 +1476,7 @@ sub loadindex () { if (! $config{rebuild}) { %pagesources=%pagemtime=%oldlinks=%links=%depends= %destsources=%renderedfiles=%pagecase=%pagestate= - %depends_exact=(); + %depends_simple=(); } my $in; if (! open ($in, "<", "$config{wikistatedir}/indexdb")) { @@ -1516,9 +1516,9 @@ sub loadindex () { $links{$page}=$d->{links}; $oldlinks{$page}=[@{$d->{links}}]; } - if (exists $d->{depends_exact}) { - $depends_exact{$page}={ - map { $_ => 1 } @{$d->{depends_exact}} + if (exists $d->{depends_simple}) { + $depends_simple{$page}={ + map { $_ => 1 } @{$d->{depends_simple}} }; } if (exists $d->{dependslist}) { @@ -1576,8 +1576,8 @@ sub saveindex () { $index{page}{$src}{dependslist} = [ keys %{$depends{$page}} ]; } - if (exists $depends_exact{$page}) { - $index{page}{$src}{depends_exact} = [ keys %{$depends_exact{$page}} ]; + if (exists $depends_simple{$page}) { + $index{page}{$src}{depends_simple} = [ keys %{$depends_simple{$page}} ]; } if (exists $pagestate{$page}) { @@ -1748,19 +1748,19 @@ sub add_depends ($$) { my $page=shift; my $pagespec=shift; + if ($pagespec =~ /$config{wiki_file_regexp}/ && + $pagespec !~ /[\s*?()!]/) { + # a simple dependency, which can be matched by string eq + $depends_simple{$page}{lc $pagespec} = 1; + return 1; + } + return unless pagespec_valid($pagespec); $depends{$page}{$pagespec} = 1; return 1; } -sub add_depends_exact ($$) { - my $page = shift; - my $dep = shift; - - $depends_exact{$page}{$dep} = 1; -} - sub file_pruned ($$) { require File::Spec; my $file=File::Spec->canonpath(shift);