http://www.mediawiki.org/wiki/Special:Code/pywikipedia/10024
Revision: 10024
Author: valhallasw
Date: 2012-03-18 17:08:41 +0000 (Sun, 18 Mar 2012)
Log Message:
-----------
Split off section recognition functionality to textlib.py.
See also: pywikipediabot-Bugs-2776438
Modified Paths:
--------------
trunk/pywikipedia/pywikibot/textlib.py
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/pywikibot/textlib.py
===================================================================
--- trunk/pywikipedia/pywikibot/textlib.py 2012-03-17 18:03:32 UTC (rev 10023)
+++ trunk/pywikipedia/pywikibot/textlib.py 2012-03-18 17:08:41 UTC (rev 10024)
@@ -931,3 +931,14 @@
text += u'|%s=%s\n' % (item, params[item])
return u'{{%s\n%s}}' % (template, text)
+
+#----------------------------------
+# Page parsing functionality
+#----------------------------------
+
+def does_text_contain_section(pagetext, section):
+ """ Determines whether the page text contains the given
+ section title.
+ """
+ m = re.search("=+[ ']*%s[ ']*=+" % re.escape(section), pagetext)
+ return bool(m)
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2012-03-17 18:03:32 UTC (rev 10023)
+++ trunk/pywikipedia/wikipedia.py 2012-03-18 17:08:41 UTC (rev 10024)
@@ -823,14 +823,13 @@
self._redirarg = redirtarget
else:
raise IsRedirectPage(redirtarget)
- if self.section():
- m = re.search("=+[ ']*%s[ ']*=+" %
re.escape(self.section()),
- pageInfo['revisions'][0]['*'])
- if not m:
- try:
- self._getexception
- except AttributeError:
- raise SectionError # Page has no section by this name
+
+ if self.section() and \
+ not textlib.does_text_contain_section(pagetext, self.section()):
+ try:
+ self._getexception
+ except AttributeError:
+ raise SectionError # Page has no section by this name
return pagetext
def _getEditPageOld(self, get_redirect=False, throttle=True, sysop=False,
@@ -965,15 +964,14 @@
self._redirarg = redirtarget
else:
raise IsRedirectPage(redirtarget)
- if self.section():
- m = re.search("=+[ ']*%s[ ']*=+" %
re.escape(self.section()),
- text)
- if not m:
- try:
- self._getexception
- except AttributeError:
- raise SectionError # Page has no section by this name
+ if self.section() and \
+ not textlib.does_text_contain_section(text, self.section()):
+ try:
+ self._getexception
+ except AttributeError:
+ raise SectionError # Page has no section by this name
+
return pagetext
def getOldVersion(self, oldid, force=False, get_redirect=False,