From 36312b13b4eced4bc328ed09bb40307671490b35 Mon Sep 17 00:00:00 2001
From: intrigeri <intrigeri@boum.org>
Date: Wed, 12 Nov 2008 22:32:47 +0100
Subject: [PATCH] po: memoized istranslatable, eventually

And enjoy a 10% rebuild time enhancement on a complex wiki full of maps and
other pseudo-dynamic content, with some other costly plugins enabled. So it
could well mean 20% on a more usual wiki.

Signed-off-by: intrigeri <intrigeri@boum.org>
---
 IkiWiki/Plugin/po.pm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm
index 5e2aea691..a6342c74f 100644
--- a/IkiWiki/Plugin/po.pm
+++ b/IkiWiki/Plugin/po.pm
@@ -23,6 +23,7 @@ my %translations;
 my @origneedsbuild;
 my %origsubs;
 
+memoize("istranslatable");
 memoize("_istranslation");
 memoize("percenttranslated");
 
@@ -508,7 +509,8 @@ sub istranslatable ($) { #{{{
 	return 0 unless defined $file;
 	return 0 if (defined pagetype($file) && pagetype($file) eq 'po');
 	return 0 if $file =~ /\.pot$/;
-	return pagespec_match($page, $config{po_translatable_pages});
+	return 1 if  pagespec_match($page, $config{po_translatable_pages});
+	return;
 } #}}}
 
 sub _istranslation ($) { #{{{
@@ -537,8 +539,7 @@ sub istranslation ($) { #{{{
 	if (1 < (my ($masterpage, $lang) = _istranslation($page))) {
 		my $hasleadingslash = ($masterpage=~s#^/##);
 		$translations{$masterpage}{$lang}=$page unless exists $translations{$masterpage}{$lang};
-		return (maybe_add_leading_slash($masterpage, $hasleadingslash), $lang)
-			if istranslatable($masterpage);
+		return (maybe_add_leading_slash($masterpage, $hasleadingslash), $lang);
 	}
 	return;
 } #}}}
@@ -660,6 +661,7 @@ sub resettranslationscache() { #{{{
 } #}}}
 
 sub flushmemoizecache() { #{{{
+	Memoize::flush_cache("istranslatable");
 	Memoize::flush_cache("_istranslation");
 	Memoize::flush_cache("percenttranslated");
 } #}}}
-- 
2.39.5