Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › zig/ › Ast/ › Render.zig › renderIdentifierContents
renderIdentifierContents
Render.renderIdentifierContents
fn renderIdentifierContents (ais : *AutoIndentingStream , bytes : []const u8 ) !void
File
Code
fn renderIdentifierContents (ais : *AutoIndentingStream , bytes : []const u8 ) !void {
var pos : usize = 0 ;
while (pos < bytes .len ) {
const byte = bytes [pos ];
switch (byte ) {
'\\' => {
const old_pos = pos ;
const res = std .zig .string_literal .parseEscapeSequence (bytes , &pos );
const escape_sequence = bytes [old_pos ..pos ];
switch (res ) {
.success => |codepoint | {
if (codepoint <= 0x7f ) {
const buf = [1 ]u8 {@as (u8 , @intCast (codepoint ))};
try ais .print ("{f}" , .{std .zig .fmtString (&buf )});
} else {
try ais .writeAll (escape_sequence );
}
},
.failure => {
// This also avoids cases like "\x3\x39" becoming "\x39"
try ais .writeByte ('\\' );
try ais .writeAll (escape_sequence );
},
}
},
0x00 ...('\\' - 1 ), ('\\' + 1 )...0x7f => {
const buf = [1 ]u8 {byte };
try ais .print ("{f}" , .{std .zig .fmtString (&buf )});
pos += 1 ;
},
0x80 ...0xff => {
try ais .writeByte (byte );
pos += 1 ;
},
}
}
}