jenkins-bot has submitted this change and it was merged.
Change subject: New site method expand_text() which uses api to parse text.
......................................................................
New site method expand_text() which uses api to parse text.
Change Page.expand_text() by calling this site method.
Change Site.getcurrenttimestamp() by calling this site method.
Change-Id: I88ad007a015787d93d2c00fe4b4acc1956ff2d0c
---
M pywikibot/page.py
M pywikibot/site.py
2 files changed, 40 insertions(+), 14 deletions(-)
Approvals:
Ricordisamoa: Looks good to me, but someone else must approve
Merlijn van Deen: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py
index 92607f7..754aba9 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -419,14 +419,22 @@
"""
return self.properties(force=force).get('defaultsort')
- def expand_text(self, refresh=False):
- """Return the page text with all templates
expanded."""
- if not hasattr(self, "_expanded_text") or (
- self._expanded_text is None) or refresh:
- req = pywikibot.data.api.Request(
- action="expandtemplates", text=self.text,
- title=self.title(withSection=False), site=self.site)
- self._expanded_text =
req.submit()["expandtemplates"]["*"]
+ @deprecate_arg('refresh', 'force')
+ def expand_text(self, force=False, includecomments=False):
+ """Return the page text with all templates and parser words
expanded.
+
+ @param force: force updating from the live site
+ @param includecomments: Also strip comments if includecomments
+ parameter is not True.
+ @return: unicode or None
+
+ """
+ if not hasattr(self, '_expanded_text') or (
+ self._expanded_text is None) or force:
+ self._expanded_text = self.site.expand_text(
+ self.text,
+ title=self.title(withSection=False),
+ includecomments=includecomments)
return self._expanded_text
def userName(self):
diff --git a/pywikibot/site.py b/pywikibot/site.py
index fccf2f0..0132716 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -927,18 +927,36 @@
return self._months_names
+ def expand_text(self, text, title=None, includecomments=None):
+ """ Parses the given text for preprocessing and rendering
+ e.g expand templates and strip comments if includecomments
+ parameter is not True. Keeps text inside
+ <nowiki></nowiki> tags unchanges etc. Can be used to parse
+ magic parser words like {{CURRENTTIMESTAMP}}.
+
+ @param text: text to be expanded
+ @type text: unicode
+ @param title: page title without section
+ @type title: unicode
+ @param includecomments: if True do not strip comments
+ @type includecomments: bool
+ @return: unicode
+
+ """
+ req = api.Request(site=self, action='expandtemplates', text=text)
+ if title is not None:
+ req['title'] = title
+ if includecomments is True:
+ req['includecomments'] = u''
+ return req.submit()['expandtemplates']['*']
+
def getcurrenttimestamp(self):
"""Return server time, {{CURRENTTIMESTAMP}}, as a string.
Format is 'yyyymmddhhmmss'
"""
- r = api.Request(site=self,
- action="parse",
- text="{{CURRENTTIMESTAMP}}",
- contentmodel="wikitext")
- result = r.submit()
- return re.search('\d+',
result['parse']['text']['*']).group()
+ return self.expand_text("{{CURRENTTIMESTAMP}}")
def getcurrenttime(self):
"""Return a Timestamp object representing the current server
time."""
--
To view, visit
https://gerrit.wikimedia.org/r/129710
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I88ad007a015787d93d2c00fe4b4acc1956ff2d0c
Gerrit-PatchSet: 14
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Legoktm <legoktm.wikipedia(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Pyfisch <pyfisch(a)gmail.com>
Gerrit-Reviewer: Ricordisamoa <ricordisamoa(a)live.it>
Gerrit-Reviewer: Russell Blau <russblau(a)imapmail.org>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>