summaryrefslogtreecommitdiff
path: root/src/libzisp/io/unparser.zig
blob: d835924415d3d9705fcc7a0491be2e31dcfc6593 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const std = @import("std");

const value = @import("../value.zig");

const ShortString = value.ShortString;
const Value = value.Value;

// const State = struct {

// }

pub fn unparse(v: Value) []u8 {
    var gpa: std.heap.GeneralPurposeAllocator(.{}) = .init;
    var out: std.ArrayList(u8) = .init(gpa.allocator());
    if (value.rune.check(v)) {
        const name = value.rune.unpack(v);
        out.append('#') catch @panic("");
        out.appendSlice(name.slice()) catch @panic("");
    }
    return out.toOwnedSlice() catch @panic("");
}