X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/da166e74227d084fd15878ce9a3099e07ebcc2c2..f282512da75d19e38933f3083afa3c2a9dad463c:/IkiWiki/Plugin/table.pm

diff --git a/IkiWiki/Plugin/table.pm b/IkiWiki/Plugin/table.pm
index dd124929d..f3c425a37 100644
--- a/IkiWiki/Plugin/table.pm
+++ b/IkiWiki/Plugin/table.pm
@@ -8,7 +8,7 @@ use IkiWiki 3.00;
 
 sub import {
 	hook(type => "getsetup", id => "table", call => \&getsetup);
-	hook(type => "preprocess", id => "table", call => \&preprocess);
+	hook(type => "preprocess", id => "table", call => \&preprocess, scan => 1);
 }
 
 sub getsetup () {
@@ -16,6 +16,7 @@ sub getsetup () {
 		plugin => {
 			safe => 1,
 			rebuild => undef,
+			section => "widget",
 		},
 }
 
@@ -27,13 +28,31 @@ sub preprocess (@) {
 	);
 
 	if (exists $params{file}) {
-		if (! $pagesources{$params{file}}) {
+		if (! exists $pagesources{$params{file}}) {
 			error gettext("cannot find file");
 		}
 		$params{data} = readfile(srcfile($params{file}));
 		add_depends($params{page}, $params{file});
 	}
 
+	if (! defined wantarray) {
+		# scan mode --	if the table uses an external file, need to
+		# scan that file too.
+		return unless exists $params{file};
+
+		# Preprocess in scan-only mode.
+		IkiWiki::preprocess($params{page}, $params{page}, $params{data}, 1);
+
+		IkiWiki::run_hooks(scan => sub {
+			shift->(
+				page => $params{page},
+				content => $params{data},
+			);
+		});
+
+		return;
+	}
+
 	if (lc $params{format} eq 'auto') {
 		# first try the more simple format
 		if (is_dsv_data($params{data})) {