From: Joey Hess Date: Thu, 17 Jul 2008 19:16:56 +0000 (-0400) Subject: Add a postscan hook. X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/584f3e3061e8983e4caa328d7bc16fdeba849654?hp=1b46f52043aa6eff37da3677d7bdf11944b733ab Add a postscan hook. * Add a postscan hook. * search: Use postscan hook, avoid updating index when previewing. --- diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index 284f477fa..822b5974e 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -9,7 +9,7 @@ use IkiWiki 2.00; sub import { #{{{ hook(type => "checkconfig", id => "search", call => \&checkconfig); hook(type => "pagetemplate", id => "search", call => \&pagetemplate); - hook(type => "sanitize", id => "search", call => \&index); + hook(type => "postscan", id => "search", call => \&index); hook(type => "delete", id => "search", call => \&delete); hook(type => "cgi", id => "search", call => \&cgi); } # }}} @@ -48,8 +48,6 @@ my $scrubber; my $stemmer; sub index (@) { #{{{ my %params=@_; - - return $params{content} if $IkiWiki::preprocessing{$params{destpage}}; setupfiles(); @@ -132,8 +130,6 @@ sub index (@) { #{{{ $doc->add_term($pageterm); $db->replace_document_by_term($pageterm, $doc); - - return $params{content}; } #}}} sub delete (@) { #{{{ diff --git a/IkiWiki/Plugin/skeleton.pm b/IkiWiki/Plugin/skeleton.pm index 17a2162ff..1af8e4e9d 100644 --- a/IkiWiki/Plugin/skeleton.pm +++ b/IkiWiki/Plugin/skeleton.pm @@ -18,6 +18,7 @@ sub import { #{{{ hook(type => "scan", id => "skeleton", call => \&scan); hook(type => "htmlize", id => "skeleton", call => \&htmlize); hook(type => "sanitize", id => "skeleton", call => \&sanitize); + hook(type => "postscan", id => "skeleton", call => \&postscan); hook(type => "format", id => "skeleton", call => \&format); hook(type => "pagetemplate", id => "skeleton", call => \&pagetemplate); hook(type => "templatefile", id => "skeleton", call => \&templatefile); @@ -89,6 +90,12 @@ sub sanitize (@) { #{{{ return $params{content}; } # }}} +sub postscan (@) { #{{{ + my %params=@_; + + debug("skeleton plugin running as postscan"); +} # }}} + sub format (@) { #{{{ my %params=@_; diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 8a79119cd..fc1bc0c92 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -117,6 +117,10 @@ sub genpage ($$) { #{{{ }); $content=$template->output; + + run_hooks(postscan => sub { + shift->(page => $page, content => $content); + }); run_hooks(format => sub { $content=shift->( diff --git a/debian/changelog b/debian/changelog index c3a2632c9..ff907655e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -26,6 +26,8 @@ ikiwiki (2.54) UNRELEASED; urgency=low * smileys: Some fixes for escaped smileys. * smileys: Note that smileys need to be double-escaped for the escaping to work. Markdown removes one level of escaping. + * Add a postscan hook. + * search: Use postscan hook, avoid updating index when previewing. [ Simon McVittie ] * meta, inline: Support guid options, to allow forcing a particular url or diff --git a/doc/bugs/search_plugin_and_CGI_preview.mdwn b/doc/bugs/search_plugin_and_CGI_preview.mdwn index 71577cd7c..eb602cd9d 100644 --- a/doc/bugs/search_plugin_and_CGI_preview.mdwn +++ b/doc/bugs/search_plugin_and_CGI_preview.mdwn @@ -15,3 +15,5 @@ the problem, of course. Making the indexing only happen on a real commit might also speed the Preview up a small amount. --Chapman Flack + +[[tag done]] diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 4dc55e302..b4acb237d 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -216,6 +216,17 @@ modify the body of a page after it has been fully converted to html. The function is passed named parameters: "page", "destpage", and "content", and should return the sanitized content. +### postscan + + hook(type => "postscan", id => "foo", call => \&postscan); + +This hook is called once the full page body is available (but before the +format hook). The most common use is to update search indexes. Added in +ikiwiki 2.54. + +The function is passed named parameters "page" and "content". Its return +value is ignored. + ### format hook(type => "format", id => "foo", call => \&format);