aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm19
-rw-r--r--IkiWiki/Render.pm2
-rwxr-xr-xikiwiki-transition2
-rwxr-xr-xt/index.t12
4 files changed, 14 insertions, 21 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 734b167cf..21a74adce 100644
--- a/IkiWiki.pm
+++ b/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;
}
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 08d484847..b9f1d7754 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -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 : ()) {
diff --git a/ikiwiki-transition b/ikiwiki-transition
index 60cea3d54..795ab31cb 100755
--- a/ikiwiki-transition
+++ b/ikiwiki-transition
@@ -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;
diff --git a/t/index.t b/t/index.t
index 107dac9d0..2f23524a7 100755
--- a/t/index.t
+++ b/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 => {