Skip to content

Commit a10b42d

Browse files
committed
builtin: fix hex formating
1 parent 587ae18 commit a10b42d

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

builtin/builtin.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package builtin
77

88
import (
99
"bytes"
10+
"fmt"
1011
"strconv"
1112
"unicode"
1213
"unicode/utf8"
@@ -333,9 +334,12 @@ func builtin_ascii(self, o py.Object) (py.Object, error) {
333334
for _, c := range repr {
334335
if c <= unicode.MaxASCII {
335336
sb.WriteRune(c)
336-
} else {
337+
} else if c < 0x10000 {
337338
s := "\\u" + strconv.FormatInt(int64(c), 16)
338339
sb.WriteString(s)
340+
} else {
341+
s := fmt.Sprintf("\\U%08x", c)
342+
sb.WriteString(s)
339343
}
340344
}
341345

builtin/tests/builtin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ def __repr__(self):
3030
assert ascii('\t\r\n') == "'\\t\\r\\n'"
3131
assert ascii("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F") == "'\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\t\\n\\x0b\\x0c\\r\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f'"
3232
assert ascii(B()) == 'repr method'
33+
assert ascii(chr(0x100)) == "'\\u100'"
34+
assert ascii(chr(0x1001)) == "'\\u1001'"
35+
assert ascii(chr(0x10001)) == "'\\U00010001'"
3336

3437
doc="chr"
3538
assert chr(65) == "A"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy