Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion tests/snippets/builtin_ascii.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
assert ascii('hello world') == "'hello world'"
assert ascii('안녕 세상') == "'\\uc548\\ub155 \\uc138\\uc0c1'"
assert ascii('안녕 RustPython') == "'\\uc548\\ub155 RustPython'"
assert ascii(5) == '5'
assert ascii(5) == '5'
assert ascii(chr(0x10001)) == "'\\U00010001'"
assert ascii(chr(0x9999)) == "'\\u9999'"
assert ascii(chr(0x0A)) == "'\\n'"
9 changes: 6 additions & 3 deletions vm/src/builtins.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,13 @@ fn builtin_ascii(obj: PyObjectRef, vm: &VirtualMachine) -> PyResult<String> {
let mut ascii = String::new();
for c in repr.value.chars() {
if c.is_ascii() {
ascii.push(c)
ascii.push(c);
Comment thread
corona10 marked this conversation as resolved.
Outdated
} else if (c as i64) < 0x10000 {
Comment thread
corona10 marked this conversation as resolved.
Outdated
let hex = format!("\\u{:04x}", c as i64);
ascii.push_str(&hex);
} else {
let hex = format!("\\u{:x}", c as i64);
ascii.push_str(&hex)
let hex = format!("\\U{:08x}", c as i64);
ascii.push_str(&hex);
}
}
Ok(ascii)
Expand Down