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
at main 123 lines 3.4 kB view raw
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}