$backlinks_calculated=1;
}
-sub backlinks ($) {
+sub backlink_pages ($) {
my $page=shift;
calculate_backlinks();
+ return keys %{$backlinks{$page}};
+}
+
+sub backlinks ($) {
+ my $page=shift;
+
my @links;
- foreach my $p (keys %{$backlinks{$page}}) {
+ foreach my $p (backlink_pages($page)) {
my $href=urlto($p, $page);
# Trim common dir prefixes from both pages.
$links{$page}=[];
$renderedfiles{$page}=[];
$pagemtime{$page}=0;
- prune($config{destdir}."/".$_)
- foreach @{$oldrenderedfiles{$page}};
+ foreach my $old (@{$oldrenderedfiles{$page}}) {
+ prune($config{destdir}."/".$old);
+ }
delete $pagesources{$page};
- foreach (keys %destsources) {
- if ($destsources{$_} eq $page) {
- delete $destsources{$_};
+ foreach my $source (keys %destsources) {
+ if ($destsources{$source} eq $page) {
+ delete $destsources{$source};
}
}
}
}
calculate_backlinks();
foreach my $file (@needsbuild) {
- debug(sprintf(gettext("rendering %s"), $file));
+ debug(sprintf(gettext("building %s"), $file));
render($file);
$rendered{$file}=1;
}
foreach my $page (keys %{$backlinks{$p}}) {
my $file=$pagesources{$page};
next if $rendered{$file};
- debug(sprintf(gettext("rendering %s, which links to %s"), $file, $p));
+ debug(sprintf(gettext("building %s, which links to %s"), $file, $p));
render($file);
$rendered{$file}=1;
}
next if $f eq $file;
my $page=pagename($file);
if (pagespec_match($page, $depends{$p}, location => $p)) {
- debug(sprintf(gettext("rendering %s, which depends on %s"), $f, $page));
+ debug(sprintf(gettext("building %s, which depends on %s"), $f, $page));
render($f);
$rendered{$f}=1;
last;
my $linkfile=$pagesources{$link};
if (defined $linkfile) {
next if $rendered{$linkfile};
- debug(sprintf(gettext("rendering %s, to update its backlinks"), $linkfile));
+ debug(sprintf(gettext("building %s, to update its backlinks"), $linkfile));
render($linkfile);
$rendered{$linkfile}=1;
}
my $page=pagename($src);
foreach my $file (@{$oldrenderedfiles{$page}}) {
if (! grep { $_ eq $file } @{$renderedfiles{$page}}) {
- debug(sprintf(gettext("removing %s, no longer rendered by %s"), $file, $page));
+ debug(sprintf(gettext("removing %s, no longer built by %s"), $file, $page));
prune($config{destdir}."/".$file);
}
}
if (%rendered) {
run_hooks(change => sub { shift->(keys %rendered) });
}
+ run_hooks(postrefresh => sub { shift->() });
}
sub commandline_render () {
$file=~s/\Q$config{srcdir}\E\/?//;
my $type=pagetype($file);
- die sprintf(gettext("ikiwiki: cannot render %s"), $srcfile)."\n" unless defined $type;
+ die sprintf(gettext("ikiwiki: cannot build %s"), $srcfile)."\n" unless defined $type;
my $content=readfile($srcfile);
my $page=pagename($file);
$pagesources{$page}=$file;