diff options
author | Ka-Ping Yee <ping@zesty.ca> | 2001-01-24 17:19:08 (GMT) |
---|---|---|
committer | Ka-Ping Yee <ping@zesty.ca> | 2001-01-24 17:19:08 (GMT) |
commit | fa004ad36c86f4af406cfa3a84ec8b6cb391e6dd (patch) | |
tree | 61544d6bc2f118d4187cfc4887711f728d0fb7cf /Objects/unicodeobject.c | |
parent | 726b78ecb8660278399abaf36f98dec56ecf1271 (diff) | |
download | cpython-fa004ad36c86f4af406cfa3a84ec8b6cb391e6dd.zip cpython-fa004ad36c86f4af406cfa3a84ec8b6cb391e6dd.tar.gz cpython-fa004ad36c86f4af406cfa3a84ec8b6cb391e6dd.tar.bz2 |
Show '\011', '\012', and '\015' as '\t', '\n', '\r' in strings.
Switch from octal escapes to hex escapes for other nonprintable characters.
Diffstat (limited to 'Objects/unicodeobject.c')
-rw-r--r-- | Objects/unicodeobject.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 39ea071..5c193dd 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -1343,7 +1343,7 @@ PyObject *unicodeescape_string(const Py_UNICODE *s, char *p; char *q; - static const char *hexdigit = "0123456789ABCDEF"; + static const char *hexdigit = "0123456789abcdef"; repr = PyString_FromStringAndSize(NULL, 2 + 6*size + 1); if (repr == NULL) @@ -1372,12 +1372,25 @@ PyObject *unicodeescape_string(const Py_UNICODE *s, *p++ = hexdigit[(ch >> 4) & 0xf]; *p++ = hexdigit[ch & 15]; } - /* Map non-printable US ASCII to '\ooo' */ + /* Map special whitespace to '\t', \n', '\r' */ + else if (ch == '\t') { + *p++ = '\\'; + *p++ = 't'; + } + else if (ch == '\n') { + *p++ = '\\'; + *p++ = 'n'; + } + else if (ch == '\r') { + *p++ = '\\'; + *p++ = 'r'; + } + /* Map non-printable US ASCII to '\xhh' */ else if (ch < ' ' || ch >= 128) { *p++ = '\\'; - *p++ = hexdigit[(ch >> 6) & 7]; - *p++ = hexdigit[(ch >> 3) & 7]; - *p++ = hexdigit[ch & 7]; + *p++ = 'x'; + *p++ = hexdigit[(ch >> 4) & 0xf]; + *p++ = hexdigit[ch & 15]; } /* Copy everything else as-is */ else @@ -1498,7 +1511,7 @@ PyObject *PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s, char *p; char *q; - static const char *hexdigit = "0123456789ABCDEF"; + static const char *hexdigit = "0123456789abcdef"; repr = PyString_FromStringAndSize(NULL, 6 * size); if (repr == NULL) |