[Pywikipedia-l] SVN: [6324] branches/rewrite/pywikibot/family.py

russblau at svn.wikimedia.org russblau at svn.wikimedia.org
Wed Feb 4 17:20:55 UTC 2009


Revision: 6324
Author:   russblau
Date:     2009-02-04 17:20:55 +0000 (Wed, 04 Feb 2009)

Log Message:
-----------
fix mangled comments from last commit

Modified Paths:
--------------
    branches/rewrite/pywikibot/family.py

Modified: branches/rewrite/pywikibot/family.py
===================================================================
--- branches/rewrite/pywikibot/family.py	2009-02-04 16:30:26 UTC (rev 6323)
+++ branches/rewrite/pywikibot/family.py	2009-02-04 17:20:55 UTC (rev 6324)
@@ -55,7 +55,9 @@
         self.servergmtoffset = timedelta()
 
         # letters that can follow a wikilink and are regarded as part of
-        # this link        # This depends on the linktrail setting in LanguageXx.php and on        # [[MediaWiki:Linktrail]].
+        # this link
+        # This depends on the linktrail setting in LanguageXx.php and on
+        # [[MediaWiki:Linktrail]].
         # Note: this is a regular expression.
         self.linktrails = {
            '_default': u'[a-z]*',
@@ -546,13 +548,13 @@
         'arab' : [
                 'ar', 'arz', 'ps', 'sd', 'ur',
                 # languages using multiple scripts, including arabic
-            'kk', 'ku', 'tt', 'ug'
+                'kk', 'ku', 'tt', 'ug'
             ],
             # languages that use chinese symbols
             'chinese': [
                 'wuu', 'zh', 'zh-classical', 'zh-yue', 'gan', 'ii',
                 # languages using multiple/mixed scripts, including chinese
-        'ja', 'za'
+                'ja', 'za'
             ],
             # languages that use the cyrillic alphabet
             'cyril': [
@@ -607,7 +609,8 @@
         #     keys are the languages that can be linked to from the lang+ns, or
         #     '_default'; values are a list of namespace numbers
         self.crossnamespace = {}
-        #### Examples :
+        ##
+        ## Examples :
         ## Allowing linking to pt' 102 NS from any other lang' 0 NS is
         # self.crossnamespace[0] = {
         #     '_default': { 'pt': [102]}
@@ -638,7 +641,122 @@
                 "ERROR: linktrail in language %(language_code)s unknown"
                            % {'language_code': code})
 
-##    def namespace(self, code, ns_number, fallback='_default', all=False):##        if not self.isDefinedNS(ns_number):##            raise KeyError(##'ERROR: Unknown namespace %(ns_number)d for %(language_code)s:%(ns_name)s'##                           % {'ns_number': ns_number,##                              'language_code': code,##                              'ns_name': self.name})##        elif self.isNsI18N(ns_number, code):##            v = self.namespaces[ns_number][code]##            if type(v) is not list:##                v = [v,]##            if all and self.isNsI18N(ns_number, fallback):##                v2 = self.namespaces[ns_number][fallback]##                if type(v2) is list:##                    v.extend(v2)##                else:##                    v.append(v2)##        elif fallback and self.isNsI18N(ns_number, fallback):##            v = self.namespaces[ns_number][fallback]##            if type(v) is not list:##                v = [v,]##        else:##            raise KeyError(##'ERROR: title for namespace %(ns_number)d in language %(language_code)s unknown'##                           % {'ns_number': ns_number,##                              'language_code': code})##        if all:##            namespaces = list(set(v))##            # Lowercase versions of namespaces##            if code not in self.nocapitalize:##                namespaces.extend([ns[0].lower() + ns[1:]##                                   for ns in namespaces##                                   if ns and ns[0].lower() != ns[0].upper()])##            # Underscore versions of namespaces##            namespaces.extend([ns.replace(' ', '_')##                               for ns in namespaces if ns and ' ' in ns])##            return tuple(namespaces)##        else:##            return v[0]####    def isDefinedNS(self, ns_number):##        """Return True if the namespace has been defined in this family."""##        ##        return self.namespaces.has_key(ns_number)####    def isNsI18N(self, ns_number, code):##        """Return True if the namespace has been internationalized.####        (it has a custom entry for a given language)####        """##        return self.namespaces[ns_number].has_key(code)####    def isDefinedNSLanguage(self, ns_number, code, fallback='_default'):##        """Return True if the namespace has been defined in this family##        for this language or its fallback.##        """##        if not self.isDefinedNS(ns_number):##            return False##        elif self.isNsI18N(ns_number, code):##            return True##        elif fallback and self.isNsI18N(ns_number, fallback):##            return True##        else:##            return False####    def normalizeNamespace(self, code, value):##        """Given a value, attempt to match it with all available namespaces,##        with default and localized versions. Sites may have more than one##        way to write the same namespace - choose the first one in the list.##        If nothing can be normalized, return the original value.##        """##        for ns, items in self.namespaces.iteritems():##            if items.has_key(code):##                v = items[code]##            elif items.has_key('_default'):##                v = items['_default']##            else:##                continue##            if type(v) is list:##                if value in v: return v[0]##            else:##                if value == v: return v##            try:##                if value == self.namespace('_default', ns):##                    return self.namespace(code, ns)##            except KeyError:##                pass##        return value####    def getNamespaceIndex(self, lang, namespace):##        """Given a namespace, attempt to match it with all available##        namespaces. Sites may have more than one way to write the same##        namespace - choose the first one in the list. Returns namespace##        index or None.##        """##        namespace = namespace.lower()##        for n in self.namespaces.keys():##            try:##                nslist = self.namespaces[n][lang]##                if type(nslist) != type([]):##                    nslist = [nslist]##                for ns in nslist:##                    if ns.lower() == namespace:##                        return n##            except (KeyError,AttributeError):##                # The namespace has no localized name defined##                pass##        if lang != '_default':##            # This is not a localized namespace. Try if it##            # is a default (English) namespace.##            return self.getNamespaceIndex('_default', namespace)##        else:##            # give up##            return None##    def category_redirects(self, code, fallback="_default"):
+##    def namespace(self, code, ns_number, fallback='_default', all=False):
+##        if not self.isDefinedNS(ns_number):
+##            raise KeyError(
+##'ERROR: Unknown namespace %(ns_number)d for %(language_code)s:%(ns_name)s'
+##                           % {'ns_number': ns_number,
+##                              'language_code': code,
+##                              'ns_name': self.name})
+##        elif self.isNsI18N(ns_number, code):
+##            v = self.namespaces[ns_number][code]
+##            if type(v) is not list:
+##                v = [v,]
+##            if all and self.isNsI18N(ns_number, fallback):
+##                v2 = self.namespaces[ns_number][fallback]
+##                if type(v2) is list:
+##                    v.extend(v2)
+##                else:
+##                    v.append(v2)
+##        elif fallback and self.isNsI18N(ns_number, fallback):
+##            v = self.namespaces[ns_number][fallback]
+##            if type(v) is not list:
+##                v = [v,]
+##        else:
+##            raise KeyError(
+##'ERROR: title for namespace %(ns_number)d in language %(language_code)s unknown'
+##                           % {'ns_number': ns_number,
+##                              'language_code': code})
+##        if all:
+##            namespaces = list(set(v))
+##            # Lowercase versions of namespaces
+##            if code not in self.nocapitalize:
+##                namespaces.extend([ns[0].lower() + ns[1:]
+##                                   for ns in namespaces
+##                                   if ns and ns[0].lower() != ns[0].upper()])
+##            # Underscore versions of namespaces
+##            namespaces.extend([ns.replace(' ', '_')
+##                               for ns in namespaces if ns and ' ' in ns])
+##            return tuple(namespaces)
+##        else:
+##            return v[0]
+##
+##    def isDefinedNS(self, ns_number):
+##        """Return True if the namespace has been defined in this family."""
+##
+##        return self.namespaces.has_key(ns_number)
+##
+##    def isNsI18N(self, ns_number, code):
+##        """Return True if the namespace has been internationalized.
+##
+##        (it has a custom entry for a given language)
+##
+##        """
+##        return self.namespaces[ns_number].has_key(code)
+##
+##    def isDefinedNSLanguage(self, ns_number, code, fallback='_default'):
+##        """Return True if the namespace has been defined in this family
+##        for this language or its fallback.
+##        """
+##        if not self.isDefinedNS(ns_number):
+##            return False
+##        elif self.isNsI18N(ns_number, code):
+##            return True
+##        elif fallback and self.isNsI18N(ns_number, fallback):
+##            return True
+##        else:
+##            return False
+##
+##    def normalizeNamespace(self, code, value):
+##        """Given a value, attempt to match it with all available namespaces,
+##        with default and localized versions. Sites may have more than one
+##        way to write the same namespace - choose the first one in the list.
+##        If nothing can be normalized, return the original value.
+##        """
+##        for ns, items in self.namespaces.iteritems():
+##            if items.has_key(code):
+##                v = items[code]
+##            elif items.has_key('_default'):
+##                v = items['_default']
+##            else:
+##                continue
+##            if type(v) is list:
+##                if value in v: return v[0]
+##            else:
+##                if value == v: return v
+##            try:
+##                if value == self.namespace('_default', ns):
+##                    return self.namespace(code, ns)
+##            except KeyError:
+##                pass
+##        return value
+##
+##    def getNamespaceIndex(self, lang, namespace):
+##        """Given a namespace, attempt to match it with all available
+##        namespaces. Sites may have more than one way to write the same
+##        namespace - choose the first one in the list. Returns namespace
+##        index or None.##        """
+##        namespace = namespace.lower()
+##        for n in self.namespaces.keys():
+##            try:
+##                nslist = self.namespaces[n][lang]
+##                if type(nslist) != type([]):
+##                    nslist = [nslist]
+##                for ns in nslist:
+##                    if ns.lower() == namespace:
+##                        return n
+##            except (KeyError,AttributeError):
+##                # The namespace has no localized name defined
+##                pass
+##        if lang != '_default':
+##            # This is not a localized namespace. Try if it
+##            # is a default (English) namespace.
+##            return self.getNamespaceIndex('_default', namespace)
+##        else:
+##            # give up
+##            return None
+
+    def category_redirects(self, code, fallback="_default"):
         if code in self.category_redirect_templates:
             return self.category_redirect_templates[code]
         elif fallback:





More information about the Pywikipedia-l mailing list