John Vandenberg has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/246193

Change subject: Remove html entities from list_to_text result
......................................................................

Remove html entities from list_to_text result

Prior to MediaWiki 1.16, messages contained html entities,
including  .  These should be converted to unicode.

Also deprecate list_to_text being non-unicode,
and require the MediaWiki messages to exist, as they
occur in MediaWiki 1.14, and fallback to English when
not provided in the site language.

Change-Id: Ieda20f72946185f7be015f728773450a080bd156
---
M pywikibot/site.py
1 file changed, 21 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/93/246193/1

diff --git a/pywikibot/site.py b/pywikibot/site.py
index 8199c1f..a05e4ce 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -38,6 +38,7 @@
     redirect_func, issue_deprecation_warning,
     manage_wrapping, MediaWikiVersion, first_upper, normalize_username,
     merge_unique_dicts,
+    PY2,
 )
 from pywikibot.comms.http import get_authentication
 from pywikibot.tools.ip import is_IP
@@ -2341,32 +2342,37 @@
     def list_to_text(self, args):
         """Convert a list of strings into human-readable text.
 
-        The MediaWiki message 'and' is used as separator
+        The MediaWiki messages 'and' and 'word-separator' are used as separator
         between the last two arguments.
-        If present, other arguments are joined using a comma.
+        If more than two arguments are given, other arguments are
+        joined using MediaWiki message 'comma-separator'.
 
         @param args: text to be expanded
-        @type args: iterable
+        @type args: iterable of unicode
 
         @return: unicode
         """
+        NEEDED_MW_MESSAGES = ('and', 'comma-separator', 'word-separator')
         if not args:
             return u''
+        if PY2 and any(isinstance(arg, str) for arg in args):
+            issue_deprecation_warning('arg of type str', 'type unicode', 2)
+
         args = [unicode(e) for e in args]
-        msgs = {
-            'and': ',',
-            'comma-separator': ', ',
-            'word-separator': ' '
-        }
         try:
-            self.mediawiki_messages(list(msgs.keys()))
+            msgs = self.mediawiki_messages(NEEDED_MW_MESSAGES)
         except KeyError:
-            pass
-        for msg in msgs:
-            try:
-                msgs[msg] = self.mediawiki_message(msg)
-            except KeyError:
-                pass
+            raise NotImplementedError(
+                'MediaWiki messages missing: {0}'.format(NEEDED_MW_MESSAGES))
+
+        if MediaWikiVersion(self.version()) < MediaWikiVersion('1.16'):
+            for key, value in msgs.items():
+                if key == 'and' and value == ',&#32;and':
+                    # v1.14 defined and as ',&#32;and'; fixed in v1.15
+                    msgs['and'] = ' and'
+                else:
+                    msgs[key] = pywikibot.html2unicode(value)
+
         concat = msgs['and'] + msgs['word-separator']
         return msgs['comma-separator'].join(args[:-2] + 
[concat.join(args[-2:])])
 

-- 
To view, visit https://gerrit.wikimedia.org/r/246193
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieda20f72946185f7be015f728773450a080bd156
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: John Vandenberg <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to