X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ca0be85c59002ae9d01140cba587ffe909252471..7b4600df3f8b8c2112a8df6c018d64f04db1ebe8:/ikiwiki?ds=sidebyside
diff --git a/ikiwiki b/ikiwiki
index 4c815dfa3..77c7744f9 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -8,7 +8,8 @@ use File::Spec;
use HTML::Template;
use lib '.'; # For use without installation, removed by Makefile.
-use vars qw{%config %links %oldlinks %oldpagemtime %renderedfiles %pagesources};
+use vars qw{%config %links %oldlinks %oldpagemtime %pagectime
+ %renderedfiles %pagesources %inlinepages};
sub usage () { #{{{
die "usage: ikiwiki [options] source dest\n";
@@ -19,6 +20,7 @@ sub getconfig () { #{{{
%config=(
wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$)},
wiki_link_regexp => qr/\[\[([^\s\]]+)\]\]/,
+ wiki_processor_regexp => qr/\[\[(\w+)\s+([^\]]+)\]\]/,
wiki_file_regexp => qr/(^[-A-Za-z0-9_.\&;:\/+]+$)/,
verbose => 0,
wikiname => "wiki",
@@ -272,7 +274,7 @@ sub htmllink ($$;$$) { #{{{
$bestlink=htmlpage($bestlink);
}
if (! grep { $_ eq $bestlink } values %renderedfiles) {
- return "?$linktext"
+ return "?$linktext"
}
$bestlink=File::Spec->abs2rel($bestlink, dirname($page));
@@ -323,12 +325,19 @@ sub loadindex () { #{{{
push @{$items{$item}}, $val;
}
+ next unless exists $items{src}; # skip bad lines for now
+
my $page=pagename($items{src}[0]);
- $pagesources{$page}=$items{src}[0];
- $oldpagemtime{$page}=$items{mtime}[0];
- $oldlinks{$page}=[@{$items{link}}];
- $links{$page}=[@{$items{link}}];
- $renderedfiles{$page}=$items{dest}[0];
+ if (! $config{rebuild}) {
+ $pagesources{$page}=$items{src}[0];
+ $oldpagemtime{$page}=$items{mtime}[0];
+ $oldlinks{$page}=[@{$items{link}}];
+ $links{$page}=[@{$items{link}}];
+ $inlinepages{$page}=join(" ", @{$items{inlinepage}})
+ if exists $items{inlinepage};
+ $renderedfiles{$page}=$items{dest}[0];
+ }
+ $pagectime{$page}=$items{ctime}[0];
}
close IN;
} #}}}
@@ -340,11 +349,14 @@ sub saveindex () { #{{{
open (OUT, ">$config{wikistatedir}/index") ||
error("cannot write to $config{wikistatedir}/index: $!");
foreach my $page (keys %oldpagemtime) {
+ next unless $oldpagemtime{$page};
my $line="mtime=$oldpagemtime{$page} ".
+ "ctime=$pagectime{$page} ".
"src=$pagesources{$page} ".
"dest=$renderedfiles{$page}";
- if ($oldpagemtime{$page}) {
- $line.=" link=$_" foreach @{$links{$page}};
+ $line.=" link=$_" foreach @{$links{$page}};
+ if (exists $inlinepages{$page}) {
+ $line.=" inlinepage=$_" foreach split " ", $inlinepages{$page};
}
print OUT $line."\n";
}
@@ -465,12 +477,13 @@ sub main () { #{{{
}
elsif ($config{cgi}) {
lockwiki();
+ loadindex();
require IkiWiki::CGI;
cgi();
}
else {
lockwiki();
- loadindex() unless $config{rebuild};
+ loadindex();
require IkiWiki::Render;
rcs_update();
refresh();