Add `byteAt(index)`, `codePointAt(index)`, and `bytes` sequence to String, enabling direct byte-level manipulation of UTF-8 encoded strings. Introduce `\x` hex escape sequence in string literals for specifying raw byte values. Refactor Unicode escape parsing into a generic `readHexEscape` function supporting variable digit counts. Implement `wrenUtf8Decode` utility for decoding UTF-8 sequences from byte buffers. Add comprehensive tests for `byteAt` including boundary conditions and error cases.
13 lines
381 B
Plaintext
13 lines
381 B
Plaintext
var s = "\x00\x12\x34\x56\x78\xab\xCD\xfFf"
|
|
|
|
IO.print(s.byteAt(0)) // expect: 0
|
|
IO.print(s.byteAt(1)) // expect: 18
|
|
IO.print(s.byteAt(2)) // expect: 52
|
|
IO.print(s.byteAt(3)) // expect: 86
|
|
IO.print(s.byteAt(4)) // expect: 120
|
|
IO.print(s.byteAt(5)) // expect: 171
|
|
IO.print(s.byteAt(6)) // expect: 205
|
|
IO.print(s.byteAt(7)) // expect: 255
|
|
// "f".
|
|
IO.print(s.byteAt(8)) // expect: 102
|