[Pywikipedia-l] SVN: [4693] trunk/pywikipedia/cosmetic_changes.py

rotem at svn.wikimedia.org rotem at svn.wikimedia.org
Tue Dec 11 13:21:19 UTC 2007


Revision: 4693
Author:   rotem
Date:     2007-12-11 13:21:14 +0000 (Tue, 11 Dec 2007)

Log Message:
-----------
Fixing parameters order, and expanding list of wrong namespaces with aliases and underscore versions, in translateAndCapitalizeNamespaces.

Modified Paths:
--------------
    trunk/pywikipedia/cosmetic_changes.py

Modified: trunk/pywikipedia/cosmetic_changes.py
===================================================================
--- trunk/pywikipedia/cosmetic_changes.py	2007-12-10 21:22:16 UTC (rev 4692)
+++ trunk/pywikipedia/cosmetic_changes.py	2007-12-11 13:21:14 UTC (rev 4693)
@@ -144,22 +144,41 @@
         exceptions = ['nowiki', 'comment', 'math', 'pre']
 
         for nsNumber in family.namespaces:
-            if not family.isDefinedNSLanguage(self.site.lang, nsNumber):
+            if not family.isDefinedNSLanguage(nsNumber, self.site.lang):
                 # Skip undefined namespaces
                 continue
-            thisNs = family.namespace(self.site.lang, nsNumber)
-            defaultNs = family.namespace('_default', nsNumber)
+            namespaces = list(family.namespace(self.site.lang, nsNumber, all = True))
+            thisNs = namespaces.pop(0)
+            try:
+                default = list(family.namespace('_default', nsNumber, all = True))
+            except KeyError:
+                default = []
 
-            # skip main (article) namespace, and namespaces with no default translation
-            if thisNs and defaultNs:
+            # skip main (article) namespace
+            if thisNs:
                 wrongNamespaces = []
-                if defaultNs != thisNs:
-                    wrongNamespaces.append(defaultNs)
-                    if not self.site.nocapitalize:
-                        wrongNamespaces.append(defaultNs[0].lower() + defaultNs[1:])
+
+                # Add aliases and default namespaces
+                wrongNamespaces.extend([ns for ns in namespaces if ns != thisNs])
+                wrongNamespaces.extend([ns for ns in default if ns != thisNs and ns not in wrongNamespaces])
+
+                # Lowercase versions of namespaces
                 if not self.site.nocapitalize:
-                    wrongNamespaces.append(thisNs[0].lower() + thisNs[1:])
+                    # Add lowercase version of the current wrong namespaces
+                    wrongNamespaces.extend([ns[0].lower() + ns[1:] for ns in wrongNamespaces if ns[0].lower() != ns[0].upper()])
 
+                    # Add lowercase version of the correct namespace
+                    uncapitalized = thisNs[0].lower() + thisNs[1:]
+                    if uncapitalized != thisNs:
+                        wrongNamespaces.append(uncapitalized)
+
+                # Underscore versions of namespaces
+                # Add underscore versions of all wrong namespaces
+                wrongNamespaces.extend([ns.replace(' ', '_') for ns in wrongNamespaces if ' ' in ns])
+                # Add underscore version of correct namespace
+                if ' ' in thisNs:
+                    wrongNamespaces.append(thisNs.replace(' ', '_'))
+
                 if wrongNamespaces:
                     text = wikipedia.replaceExcept(text, r'\[\[\s*(' + '|'.join(wrongNamespaces) + ') *:(?P<nameAndLabel>.*?)\]\]', r'[[' + thisNs + ':\g<nameAndLabel>]]', exceptions)
         return text





More information about the Pywikipedia-l mailing list