outputUnicodeEscape
Function parameters
Parameters
- codepoint:u21
- w:*Writer
Type definitions in this namespace
Types
Functions in this namespace
Functions
- An alternative to calling `write` that formats a value with `std.fmt`.
- beginWriteRaw
- An alternative to calling `write` that allows you to write directly to the `.writer` field, e.g.
- endWriteRaw
- See `beginWriteRaw`.
- objectField
- See `Stringify` for when to call this method.
- objectFieldRaw
- See `Stringify` for when to call this method.
- beginObjectFieldRaw
- In the rare case that you need to write very long object field names,
- endObjectFieldRaw
- See `beginObjectFieldRaw`.
- write
- Renders the given Zig value as JSON.
- value
- Writes the given value to the `Writer` writer.
- valueAlloc
- Calls `value` and stores the result in dynamically allocated memory instead
- encodeJsonString
- Write `string` to `writer` as a JSON encoded string.
- encodeJsonStringChars
- Write `chars` to `writer` as JSON encoded string characters.
Error sets in this namespace
Error Sets
Source
Implementation
fn outputUnicodeEscape(codepoint: u21, w: *Writer) Error!void {
if (codepoint <= 0xFFFF) {
// If the character is in the Basic Multilingual Plane (U+0000 through U+FFFF),
// then it may be represented as a six-character sequence: a reverse solidus, followed
// by the lowercase letter u, followed by four hexadecimal digits that encode the character's code point.
try w.writeAll("\\u");
try w.printInt(codepoint, 16, .lower, .{ .width = 4, .fill = '0' });
} else {
assert(codepoint <= 0x10FFFF);
// To escape an extended character that is not in the Basic Multilingual Plane,
// the character is represented as a 12-character sequence, encoding the UTF-16 surrogate pair.
const high = @as(u16, @intCast((codepoint - 0x10000) >> 10)) + 0xD800;
const low = @as(u16, @intCast(codepoint & 0x3FF)) + 0xDC00;
try w.writeAll("\\u");
try w.printInt(high, 16, .lower, .{ .width = 4, .fill = '0' });
try w.writeAll("\\u");
try w.printInt(low, 16, .lower, .{ .width = 4, .fill = '0' });
}
}