pub const FormatId = struct bytes: []const u8flags: Flags496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517pub const FormatId = struct {
bytes: []const u8,
flags: Flags,
pub const Flags = struct {
allow_primitive: bool = false,
allow_underscore: bool = false,
};
/// Print the string as a Zig identifier, escaping it with `@""` syntax if needed.
pub fn format(ctx: FormatId, writer: *Writer) Writer.Error!void {
const bytes = ctx.bytes;
if (isValidId(bytes) and
(ctx.flags.allow_primitive or !isPrimitive(bytes)) and
(ctx.flags.allow_underscore or !isUnderscore(bytes)))
{
return writer.writeAll(bytes);
}
try writer.writeAll("@\"");
try stringEscape(bytes, writer);
try writer.writeByte('"');
}
}