Anonymize your writing style. Zig WASM engine detects authorship markers, fine-tuned LLM rewrites to remove them. Runs entirely in-browser.
fantasma.qstorage.quilibrium.com/
wasm
privacy
qwen
zig
1const std = @import("std");
2
3/// Minimal JSON emitter for StyleProfile output.
4/// We only need to emit, not parse (baselines are compiled in).
5pub const JsonWriter = struct {
6 buf: []u8,
7 pos: usize,
8
9 pub fn init(buf: []u8) JsonWriter {
10 return .{ .buf = buf, .pos = 0 };
11 }
12
13 pub fn written(self: *const JsonWriter) []const u8 {
14 return self.buf[0..self.pos];
15 }
16
17 pub fn put(self: *JsonWriter, bytes: []const u8) void {
18 const end = @min(self.pos + bytes.len, self.buf.len);
19 const n = end - self.pos;
20 @memcpy(self.buf[self.pos..end], bytes[0..n]);
21 self.pos = end;
22 }
23
24 pub fn putByte(self: *JsonWriter, b: u8) void {
25 if (self.pos < self.buf.len) {
26 self.buf[self.pos] = b;
27 self.pos += 1;
28 }
29 }
30
31 pub fn objectBegin(self: *JsonWriter) void {
32 self.putByte('{');
33 }
34
35 pub fn objectEnd(self: *JsonWriter) void {
36 // remove trailing comma if present
37 if (self.pos > 0 and self.buf[self.pos - 1] == ',') self.pos -= 1;
38 self.putByte('}');
39 }
40
41 pub fn arrayBegin(self: *JsonWriter) void {
42 self.putByte('[');
43 }
44
45 pub fn arrayEnd(self: *JsonWriter) void {
46 if (self.pos > 0 and self.buf[self.pos - 1] == ',') self.pos -= 1;
47 self.putByte(']');
48 }
49
50 pub fn key(self: *JsonWriter, k: []const u8) void {
51 self.putByte('"');
52 self.put(k);
53 self.putByte('"');
54 self.putByte(':');
55 }
56
57 pub fn stringValue(self: *JsonWriter, s: []const u8) void {
58 self.putByte('"');
59 // Escape special chars
60 for (s) |c| {
61 switch (c) {
62 '"' => {
63 self.putByte('\\');
64 self.putByte('"');
65 },
66 '\\' => {
67 self.putByte('\\');
68 self.putByte('\\');
69 },
70 '\n' => {
71 self.putByte('\\');
72 self.putByte('n');
73 },
74 '\r' => {
75 self.putByte('\\');
76 self.putByte('r');
77 },
78 '\t' => {
79 self.putByte('\\');
80 self.putByte('t');
81 },
82 else => self.putByte(c),
83 }
84 }
85 self.putByte('"');
86 self.putByte(',');
87 }
88
89 pub fn floatValue(self: *JsonWriter, v: f32) void {
90 var tmp: [32]u8 = undefined;
91 const s = std.fmt.bufPrint(&tmp, "{d:.4}", .{v}) catch "0";
92 self.put(s);
93 self.putByte(',');
94 }
95
96 pub fn boolValue(self: *JsonWriter, v: bool) void {
97 if (v) self.put("true") else self.put("false");
98 self.putByte(',');
99 }
100
101 pub fn intValue(self: *JsonWriter, v: u32) void {
102 var tmp: [16]u8 = undefined;
103 const s = std.fmt.bufPrint(&tmp, "{d}", .{v}) catch "0";
104 self.put(s);
105 self.putByte(',');
106 }
107};
108
109test "json writer basic" {
110 var buf: [256]u8 = undefined;
111 var jw = JsonWriter.init(&buf);
112 jw.objectBegin();
113 jw.key("name");
114 jw.stringValue("test");
115 jw.key("value");
116 jw.floatValue(3.14);
117 jw.key("ok");
118 jw.boolValue(true);
119 jw.objectEnd();
120
121 const out = jw.written();
122 try std.testing.expectEqualStrings("{\"name\":\"test\",\"value\":3.1400,\"ok\":true}", out);
123}