From fb7f1603b933cadfbed2d78560532df2f3cb1cac Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Mon, 12 Apr 2010 21:11:00 +0200
Subject: [PATCH] translations-status.py: Introduce Included* classes.

Allows refactoring of MasterTelyDocument constructor.
---
 scripts/auxiliar/translations-status.py | 40 +++++++++++++------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/scripts/auxiliar/translations-status.py b/scripts/auxiliar/translations-status.py
index 3469c65f35..6331f64b33 100755
--- a/scripts/auxiliar/translations-status.py
+++ b/scripts/auxiliar/translations-status.py
@@ -435,12 +435,18 @@ setting to %d %%" % (self.filename, self.uptodate_percentage, alternative))
             s += '</table>\n<p></p>\n'
         return s
 
+class IncludedTranslatedTelyDocument (TranslatedTelyDocument):
+    pass
+
 class UntranslatedTelyDocument (TranslatedTelyDocument):
     def __init__ (self, filename, masterdocument, parent_translation=None):
         if filename[2] == '/':
             self.language = filename[:2]
         TranslatedTelyDocument.__init__ (self, filename, masterdocument, parent_translation)
 
+class IncludedUntranslatedTelyDocument (UntranslatedTelyDocument):
+    pass
+
 class MasterTelyDocument (TelyDocument):
     def __init__ (self,
                   filename,
@@ -450,31 +456,22 @@ class MasterTelyDocument (TelyDocument):
         self.size = len (self.contents)
         self.word_count = tely_word_count (self.contents)
         self.translations = {}
-        found = {}
-        translations = dict ([(lang, os.path.join (lang, filename))
-                              for lang in langdefs.LANGDICT])
+        self.includes = []
         if not self.language or self.language == 'en':
             languages = [x for x in parent_translations.keys () if x != 'en']
-            for lang in languages:
-                self.translations[lang] = self.translated_factory (translations[lang],
-                                                                   parent_translations.get (lang))
-                found[lang] = not isinstance (self.translations[lang], UntranslatedTelyDocument)
-            if self.top:
-                for lang in [x for x in langdefs.LANGDICT if x and x != 'en']:
-                    if not found.get (lang, False):
-                        del self.translations[lang]
-
-        if self.translations:
-            self.includes = [MasterTelyDocument (f, self.translations)
-                             for f in self.included_files]
-        else:
-            self.includes = []
+            self.translations = dict ([x for x in
+                                       [(lang, self.translated_factory (os.path.join (lang, self.filename),
+                                                                        parent_translations.get (lang)))
+                                        for lang in languages]
+                                       if x[1]])
+            if self.translations:
+                self.includes = [IncludedMasterTelyDocument (f, self.translations)
+                                 for f in self.included_files]
 
     def translated_factory (self, filename, parent):
         if os.path.exists (filename):
             return TranslatedTelyDocument (filename, self, parent)
-        else:
-            return UntranslatedTelyDocument (filename, self, parent)
+        return None
 
     def update_word_counts (self, s):
         s = update_word_count (s, self.filename, sum (self.word_count))
@@ -534,6 +531,11 @@ class MasterTelyDocument (TelyDocument):
             s += '\n'
         return s
 
+class IncludedMasterTelyDocument (MasterTelyDocument):
+    def translated_factory (self, filename, parent):
+        if os.path.exists (filename):
+            return IncludedTranslatedTelyDocument (filename, self, parent)
+        return IncludedUntranslatedTelyDocument (filename, self, parent)
 
 update_category_word_counts_re = re.compile (r'(?ms)^-(\d+)-(.*?\n)\d+ *total')
 
-- 
2.39.5