[pypy-svn] r12597 - pypy/branch/non-fake-unicode/pypy/objspace/std

ac at codespeak.net ac at codespeak.net
Fri May 20 08:12:07 CEST 2005


Author: ac
Date: Fri May 20 08:12:07 2005
New Revision: 12597

Modified:
   pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py
Log:
Slightly improve the unicode string formating.

Modified: pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py
==============================================================================
--- pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py	(original)
+++ pypy/branch/non-fake-unicode/pypy/objspace/std/unicodeobject.py	Fri May 20 08:12:07 2005
@@ -766,8 +766,20 @@
                 raise TypeError("character mapping must return integer, None or unicode")
     return ''.join(result)
 
+def unicode_to_str(val):
+    if isinstance(val, unicode):
+        return val.encode("utf-8")
+    return val
+
 def mod__Unicode_ANY(format, values):
-    return unicode(format.encode("utf-8") % values, "utf-8")
+    format = format.encode("utf-8")
+    if isinstance(values, tuple):
+        values = tuple([unicode_to_str(val) for val in values])
+    elif hasattr(values, 'keys'):
+        values = dict([(key, unicode_to_str(val)) for key, val in values.iteritems()])
+    else:
+        values = unicode_to_str(values)
+    return unicode(format % values, "utf-8")
 
 ''')
 unicode_expandtabs__Unicode_ANY = app.interphook('unicode_expandtabs__Unicode_ANY')



More information about the Pypy-commit mailing list