Track whether we're in the scan or render phase
In the scan phase, it's too early to match pagespecs or sort pages; in the render phase, both of those are OK. It would be possible to add phases later, renumbering them if necessary to maintain numerical order.master
parent
236c46a3f7
commit
a9fc30b19c
|
@ -14,7 +14,7 @@ use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
|
||||||
%pagestate %wikistate %renderedfiles %oldrenderedfiles
|
%pagestate %wikistate %renderedfiles %oldrenderedfiles
|
||||||
%pagesources %delpagesources %destsources %depends %depends_simple
|
%pagesources %delpagesources %destsources %depends %depends_simple
|
||||||
@mass_depends %hooks %forcerebuild %loaded_plugins %typedlinks
|
@mass_depends %hooks %forcerebuild %loaded_plugins %typedlinks
|
||||||
%oldtypedlinks %autofiles @underlayfiles $lastrev};
|
%oldtypedlinks %autofiles @underlayfiles $lastrev $phase};
|
||||||
|
|
||||||
use Exporter q{import};
|
use Exporter q{import};
|
||||||
our @EXPORT = qw(hook debug error htmlpage template template_depends
|
our @EXPORT = qw(hook debug error htmlpage template template_depends
|
||||||
|
@ -34,6 +34,11 @@ our $DEPEND_CONTENT=1;
|
||||||
our $DEPEND_PRESENCE=2;
|
our $DEPEND_PRESENCE=2;
|
||||||
our $DEPEND_LINKS=4;
|
our $DEPEND_LINKS=4;
|
||||||
|
|
||||||
|
# Phases of processing.
|
||||||
|
sub PHASE_SCAN () { 0 }
|
||||||
|
sub PHASE_RENDER () { 1 }
|
||||||
|
$phase = PHASE_SCAN;
|
||||||
|
|
||||||
# Optimisation.
|
# Optimisation.
|
||||||
use Memoize;
|
use Memoize;
|
||||||
memoize("abs2rel");
|
memoize("abs2rel");
|
||||||
|
|
|
@ -827,6 +827,8 @@ sub gen_autofile ($$$) {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub refresh () {
|
sub refresh () {
|
||||||
|
$phase = PHASE_SCAN;
|
||||||
|
|
||||||
srcdir_check();
|
srcdir_check();
|
||||||
run_hooks(refresh => sub { shift->() });
|
run_hooks(refresh => sub { shift->() });
|
||||||
my ($files, $pages, $new, $internal_new, $del, $internal_del, $changed, $internal_changed);
|
my ($files, $pages, $new, $internal_new, $del, $internal_del, $changed, $internal_changed);
|
||||||
|
@ -879,6 +881,9 @@ sub refresh () {
|
||||||
|
|
||||||
calculate_links();
|
calculate_links();
|
||||||
|
|
||||||
|
# At this point it becomes OK to start matching pagespecs.
|
||||||
|
$phase = PHASE_RENDER;
|
||||||
|
|
||||||
remove_del(@$del, @$internal_del);
|
remove_del(@$del, @$internal_del);
|
||||||
|
|
||||||
foreach my $file (@$changed) {
|
foreach my $file (@$changed) {
|
||||||
|
@ -942,6 +947,10 @@ sub commandline_render () {
|
||||||
loadindex();
|
loadindex();
|
||||||
unlockwiki();
|
unlockwiki();
|
||||||
|
|
||||||
|
# This function behaves as though it's in the render phase;
|
||||||
|
# all other files are assumed to have been scanned last time.
|
||||||
|
$phase = PHASE_RENDER;
|
||||||
|
|
||||||
my $srcfile=possibly_foolish_untaint($config{render});
|
my $srcfile=possibly_foolish_untaint($config{render});
|
||||||
my $file=$srcfile;
|
my $file=$srcfile;
|
||||||
$file=~s/\Q$config{srcdir}\E\/?//;
|
$file=~s/\Q$config{srcdir}\E\/?//;
|
||||||
|
|
|
@ -22,6 +22,8 @@ foreach my $file (@$files) {
|
||||||
$pagesources{$page}=$file; # used by po plugin functions
|
$pagesources{$page}=$file; # used by po plugin functions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$IkiWiki::phase = IkiWiki::PHASE_RENDER;
|
||||||
|
|
||||||
foreach my $lang (@{$config{po_slave_languages}}) {
|
foreach my $lang (@{$config{po_slave_languages}}) {
|
||||||
my ($ll, $name)=IkiWiki::Plugin::po::splitlangpair($lang);
|
my ($ll, $name)=IkiWiki::Plugin::po::splitlangpair($lang);
|
||||||
$config{destdir}="../underlays/locale/$ll";
|
$config{destdir}="../underlays/locale/$ll";
|
||||||
|
|
Loading…
Reference in New Issue