Use a hash to de-duplicate dependencies
parent
2cf26fd709
commit
7227c2debf
19
IkiWiki.pm
19
IkiWiki.pm
|
@ -1508,10 +1508,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 +1559,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 +1732,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;
|
||||
}
|
||||
|
||||
|
|
|
@ -459,7 +459,7 @@ sub refresh () {
|
|||
next if $rendered{$f};
|
||||
my $p=pagename($f);
|
||||
if (exists $depends{$p}) {
|
||||
foreach my $d (@{$depends{$p}}) {
|
||||
foreach my $d (keys %{$depends{$p}}) {
|
||||
# only consider internal files
|
||||
# if the page explicitly depends on such files
|
||||
foreach my $file (@changed, $d=~/internal\(/ ? @internal : ()) {
|
||||
|
|
|
@ -299,7 +299,7 @@ sub oldloadindex {
|
|||
$pagemtime{$page}=$items{mtime}[0];
|
||||
$oldlinks{$page}=[@{$items{link}}];
|
||||
$links{$page}=[@{$items{link}}];
|
||||
$depends{$page}=[$items{depends}[0]] if exists $items{depends};
|
||||
$depends{$page}={ $items{depends}[0] => 1 } if exists $items{depends};
|
||||
$destsources{$_}=$page foreach @{$items{dest}};
|
||||
$renderedfiles{$page}=[@{$items{dest}}];
|
||||
$pagecase{lc $page}=$page;
|
||||
|
|
12
t/index.t
12
t/index.t
|
@ -32,9 +32,9 @@ $renderedfiles{"bar.png"}=["bar.png"];
|
|||
$links{"Foo"}=["bar.png"];
|
||||
$links{"bar"}=["Foo", "new-page"];
|
||||
$links{"bar.png"}=[];
|
||||
$depends{"Foo"}=[];
|
||||
$depends{"bar"}=["foo*"];
|
||||
$depends{"bar.png"}=[];
|
||||
$depends{"Foo"}={};
|
||||
$depends{"bar"}={"foo*" => 1};
|
||||
$depends{"bar.png"}={};
|
||||
$pagestate{"bar"}{meta}{title}="a page about bar";
|
||||
$pagestate{"bar"}{meta}{moo}="mooooo";
|
||||
# only loaded plugins save state, so this should not be saved out
|
||||
|
@ -80,9 +80,9 @@ is_deeply(\%links, {
|
|||
"bar.png" => [],
|
||||
}, "%links loaded correctly");
|
||||
is_deeply(\%depends, {
|
||||
Foo => [],
|
||||
bar => ["foo*"],
|
||||
"bar.png" => [],
|
||||
Foo => {},
|
||||
bar => {"foo*" => 1},
|
||||
"bar.png" => {},
|
||||
}, "%depends loaded correctly");
|
||||
is_deeply(\%pagestate, {
|
||||
bar => {
|
||||
|
|
Loading…
Reference in New Issue