From: intrigeri Date: Sat, 11 Oct 2008 01:02:43 +0000 (+0200) Subject: po plugin[filter]: avoid converting more than once per destfile X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/commitdiff_plain/1e874b3f0a396ba99ebf7ab8bad3d7eed1a846f2 po plugin[filter]: avoid converting more than once per destfile Only the first filter function call on a given {page,destpage} must convert it from the PO file, subsequent calls must leave the passed $content unmodified. Else, preprocessing loops are the rule. Signed-off-by: intrigeri --- diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index d3ccd37e1..0698b2488 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -140,16 +140,18 @@ sub tweakbestlink ($$) { #{{{ return $link; } #}}} +our %filtered; # We use filter to convert PO to the master page's type, # since other plugins should not work on PO files sub filter (@) { #{{{ my %params = @_; my $page = $params{page}; + my $destpage = $params{destpage}; my $content = decode_utf8(encode_utf8($params{content})); # decide if this is a PO file that should be converted into a translated document, # and perform various sanity checks - if (! istranslation($page)) { + if (! istranslation($page) || $filtered{$page}{$destpage}) { return $content; } @@ -174,6 +176,7 @@ sub filter (@) { #{{{ my $tmpout = $tmpfh->filename; $doc->write($tmpout) or error("[po/filter:$file] could not write $tmpout"); $content = readfile($tmpout) or error("[po/filter:$file] could not read $tmpout"); + $filtered{$page}{$destpage}=1; return $content; } #}}}