X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/2cf26fd709efa802b93109935b4203590d549810..5bcdc39999025062d201ae16babc0eabc2f4d976:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index 734b167cf..871170992 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -661,9 +661,15 @@ sub pagetype ($) { return; } +my %pagename_cache; + sub pagename ($) { my $file=shift; + if (exists $pagename_cache{$file}) { + return $pagename_cache{$file}; + } + my $type=pagetype($file); my $page=$file; $page=~s/\Q.$type\E*$// @@ -672,6 +678,8 @@ sub pagename ($) { if ($config{indexpages} && $page=~/(.*)\/index$/) { $page=$1; } + + $pagename_cache{$file} = $page; return $page; } @@ -1508,10 +1516,12 @@ sub loadindex () { $oldlinks{$page}=[@{$d->{links}}]; } if (exists $d->{dependslist}) { - $depends{$page}=$d->{dependslist}; + $depends{$page}={ + map { $_ => 1 } @{$d->{dependslist}} + }; } elsif (exists $d->{depends}) { - $depends{$page}=[$d->{depends}]; + $depends{$page}={$d->{depends} => 1}; } if (exists $d->{state}) { $pagestate{$page}=$d->{state}; @@ -1557,7 +1567,7 @@ sub saveindex () { }; if (exists $depends{$page}) { - $index{page}{$src}{dependslist} = $depends{$page}; + $index{page}{$src}{dependslist} = [ keys %{$depends{$page}} ]; } if (exists $pagestate{$page}) { @@ -1730,16 +1740,7 @@ sub add_depends ($$) { return unless pagespec_valid($pagespec); - if (! exists $depends{$page}) { - $depends{$page}=[$pagespec]; - } - else { - foreach my $p (@{$depends{$page}}) { - return 1 if $p eq $pagespec; - } - push @{$depends{$page}}, $pagespec; - } - + $depends{$page}{$pagespec} = 1; return 1; }