http://www.mediawiki.org/wiki/Special:Code/pywikipedia/10622
Revision: 10622 Author: xqt Date: 2012-10-28 10:40:09 +0000 (Sun, 28 Oct 2012) Log Message: ----------- leading colon implies main namespace instead of the default, also if we have preleading family or site
Modified Paths: -------------- trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2012-10-28 09:27:21 UTC (rev 10621) +++ trunk/pywikipedia/wikipedia.py 2012-10-28 10:40:09 UTC (rev 10622) @@ -299,16 +299,14 @@ t = t.strip() # Remove left-to-right and right-to-left markers. t = t.replace(u'\u200e', '').replace(u'\u200f', '') - # leading colon implies main namespace instead of the default + if t.startswith(':'): t = t[1:] - self._namespace = 0 + prefix = True else: - self._namespace = defaultNamespace + prefix = False + self._namespace = defaultNamespace
- if not t: - raise InvalidTitle(u"Invalid title '%s'" % title ) - # # This code was adapted from Title.php : secureAndSplit() # @@ -316,7 +314,16 @@ while True: m = reNamespace.match(t) if not m: + # leading colon implies main namespace instead of default + if t.startswith(':'): + t = t[1:] + self._namespace = 0 + elif prefix: + self._namespace = 0 + else: + self._namespace = defaultNamespace break + prefix = False p = m.group(1) lowerNs = p.lower() ns = self._site.getNamespaceIndex(lowerNs) @@ -338,11 +345,6 @@ if t == '': t = self._site.mediawiki_message('Mainpage')
- # If there's an initial colon after the interwiki, that also - # resets the default namespace - if t != '' and t[0] == ':': - self._namespace = 0 - t = t[1:] elif lowerNs in self._site.family.get_known_families(site = self._site): if self._site.family.get_known_families(site = self._site)[lowerNs] == self._site.family.name: t = m.group(2) @@ -372,6 +374,9 @@ # then let the colon expression be part of the title. break
+ if not t: + raise InvalidTitle(u"Invalid title '%s'" % title ) + sectionStart = t.find(u'#') # But maybe there are magic words like {{#time|}} # TODO: recognize magic word and templates inside links
pywikipedia-svn@lists.wikimedia.org