diff options
| author | Taylan Kammer <taylan.kammer@gmail.com> | 2025-03-28 20:44:01 +0100 |
|---|---|---|
| committer | Taylan Kammer <taylan.kammer@gmail.com> | 2025-03-28 20:44:01 +0100 |
| commit | d714cf3b57e39979b208369f9369b526409172b3 (patch) | |
| tree | ebcdcbbf6f034e8afce33e673a20a71cc03a52f9 /src/libzisp/io/unparser.zig | |
| parent | 6eedf5394997b91467a392732cdb7fbb80a790b8 (diff) | |
blip
Diffstat (limited to 'src/libzisp/io/unparser.zig')
| -rw-r--r-- | src/libzisp/io/unparser.zig | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/libzisp/io/unparser.zig b/src/libzisp/io/unparser.zig index d65ffb0..d703182 100644 --- a/src/libzisp/io/unparser.zig +++ b/src/libzisp/io/unparser.zig @@ -2,6 +2,9 @@ const std = @import("std"); const value = @import("../value.zig"); +const istr = value.istr; +const seq = value.seq; + const ShortString = value.ShortString; const OtherTag = value.OtherTag; const Value = value.Value; @@ -33,6 +36,7 @@ fn unparseHeap(w: anytype, v: Value) !void { const p, const t = value.ptr.unpack(v); try switch (t) { .pair => unparsePair(w, @ptrCast(p)), + .seq => unparseSeq(w, @ptrCast(p)), else => @panic("not implemented"), }; } @@ -97,3 +101,22 @@ fn unparsePair(w: anytype, p: *[2]Value) !void { } try w.writeByte(')'); } + +fn unparseSeq(w: anytype, p: *seq.Header) !void { + const h = istr.getHeaderFromPtr(@ptrCast(p)); + switch (h.type) { + .string => try unparseString(w, h), + else => @panic("not implemented"), + } +} + +fn unparseString(w: anytype, h: *seq.Header) !void { + const info = h.info.string; + if (info.quoted) { + try w.writeByte('"'); + } + try w.writeAll(h.bytes()); + if (info.quoted) { + try w.writeByte('"'); + } +} |
