[pypy-svn] r61914 - in pypy/trunk/pypy/module/_locale: . test
getxsick at codespeak.net
getxsick at codespeak.net
Sun Feb 15 04:32:17 CET 2009
Author: getxsick
Date: Sun Feb 15 04:32:15 2009
New Revision: 61914
Modified:
pypy/trunk/pypy/module/_locale/__init__.py
pypy/trunk/pypy/module/_locale/interp_locale.py
pypy/trunk/pypy/module/_locale/test/test_locale.py
Log:
(jlg, getxsick) bind_textdomain_codeset() implementation
it should be defined only for some platforms (but now for every)
Modified: pypy/trunk/pypy/module/_locale/__init__.py
==============================================================================
--- pypy/trunk/pypy/module/_locale/__init__.py (original)
+++ pypy/trunk/pypy/module/_locale/__init__.py Sun Feb 15 04:32:15 2009
@@ -4,17 +4,18 @@
"""Support for POSIX locales."""
interpleveldefs = {
- 'setlocale': 'interp_locale.setlocale',
- 'localeconv': 'interp_locale.localeconv',
- 'strcoll': 'interp_locale.strcoll',
- 'strxfrm': 'interp_locale.strxfrm',
- #'getdefaultlocale': 'interp_locale.getdefaultlocale',
- 'gettext': 'interp_locale.gettext',
- 'dgettext': 'interp_locale.dgettext',
- 'dcgettext': 'interp_locale.dcgettext',
- 'textdomain': 'interp_locale.textdomain',
- 'nl_langinfo': 'interp_locale.nl_langinfo',
- 'bindtextdomain': 'interp_locale.bindtextdomain',
+ 'setlocale': 'interp_locale.setlocale',
+ 'localeconv': 'interp_locale.localeconv',
+ 'strcoll': 'interp_locale.strcoll',
+ 'strxfrm': 'interp_locale.strxfrm',
+ #'getdefaultlocale': 'interp_locale.getdefaultlocale',
+ 'gettext': 'interp_locale.gettext',
+ 'dgettext': 'interp_locale.dgettext',
+ 'dcgettext': 'interp_locale.dcgettext',
+ 'textdomain': 'interp_locale.textdomain',
+ 'nl_langinfo': 'interp_locale.nl_langinfo',
+ 'bindtextdomain': 'interp_locale.bindtextdomain',
+ 'bind_textdomain_codeset': 'interp_locale.bind_textdomain_codeset',
}
appleveldefs = {
Modified: pypy/trunk/pypy/module/_locale/interp_locale.py
==============================================================================
--- pypy/trunk/pypy/module/_locale/interp_locale.py (original)
+++ pypy/trunk/pypy/module/_locale/interp_locale.py Sun Feb 15 04:32:15 2009
@@ -329,3 +329,26 @@
return space.wrap(rffi.charp2str(dirname))
bindtextdomain.unwrap_spec = [ObjSpace, str, W_Root]
+
+_bind_textdomain_codeset = external('bind_textdomain_codeset',
+ [rffi.CCHARP, rffi.CCHARP], rffi.CCHARP)
+
+# TODO: platform dependent
+def bind_textdomain_codeset(space, domain, w_codeset):
+ """bind_textdomain_codeset(domain, codeset) -> string
+ Bind the C library's domain to codeset."""
+
+ if space.is_w(w_codeset, space.w_None):
+ codeset = None
+ result = _bind_textdomain_codeset(rffi.str2charp(domain), codeset)
+ else:
+ codeset = space.str_w(w_codeset)
+ result = _bind_textdomain_codeset(rffi.str2charp(domain),
+ rffi.str2charp(codeset))
+
+ if not result:
+ return space.w_None
+ else:
+ return space.wrap(rffi.charp2str(result))
+
+bind_textdomain_codeset.unwrap_spec = [ObjSpace, str, W_Root]
Modified: pypy/trunk/pypy/module/_locale/test/test_locale.py
==============================================================================
--- pypy/trunk/pypy/module/_locale/test/test_locale.py (original)
+++ pypy/trunk/pypy/module/_locale/test/test_locale.py Sun Feb 15 04:32:15 2009
@@ -226,3 +226,12 @@
raises(OSError, _locale.bindtextdomain, '', '')
raises(OSError, _locale.bindtextdomain, '', '1')
+
+ def test_bind_textdomain_codeset(self):
+ import _locale
+
+ assert _locale.bind_textdomain_codeset('/', None) is None
+ assert _locale.bind_textdomain_codeset('/', 'UTF-8') == 'UTF-8'
+ assert _locale.bind_textdomain_codeset('/', None) == 'UTF-8'
+
+ assert _locale.bind_textdomain_codeset('', '') is None
More information about the Pypy-commit
mailing list