mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
#2630: Implement PEP 3138.
The repr() of a string now contains printable Unicode characters unescaped. The new ascii() builtin can be used to get a repr() with only ASCII characters in it. PEP and patch were written by Atsuo Ishimoto.
This commit is contained in:
parent
ea6d58d9d3
commit
559e5d7f4d
25 changed files with 1271 additions and 974 deletions
|
|
@ -425,6 +425,33 @@ PyObject_Str(PyObject *v)
|
|||
return res;
|
||||
}
|
||||
|
||||
PyObject *
|
||||
PyObject_ASCII(PyObject *v)
|
||||
{
|
||||
PyObject *repr, *ascii, *res;
|
||||
|
||||
repr = PyObject_Repr(v);
|
||||
if (repr == NULL)
|
||||
return NULL;
|
||||
|
||||
/* repr is guaranteed to be a PyUnicode object by PyObject_Repr */
|
||||
ascii = PyUnicode_EncodeASCII(
|
||||
PyUnicode_AS_UNICODE(repr),
|
||||
PyUnicode_GET_SIZE(repr),
|
||||
"backslashreplace");
|
||||
|
||||
Py_DECREF(repr);
|
||||
if (ascii == NULL)
|
||||
return NULL;
|
||||
|
||||
res = PyUnicode_DecodeASCII(
|
||||
PyBytes_AS_STRING(ascii),
|
||||
PyBytes_GET_SIZE(ascii),
|
||||
NULL);
|
||||
|
||||
Py_DECREF(ascii);
|
||||
return res;
|
||||
}
|
||||
|
||||
/* The new comparison philosophy is: we completely separate three-way
|
||||
comparison from rich comparison. That is, PyObject_Compare() and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue