| ... | ... | @@ -54,6 +54,9 @@ pub const Value = union(enum) { |
| 54 | 54 | } |
| 55 | 55 | |
| 56 | 56 | pub fn format(self: Value, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) @TypeOf(writer).Error!void { |
| 57 | _ = fmt; |
| 58 | _ = options; |
| 59 | |
| 57 | 60 | switch (self) { |
| 58 | 61 | .Object => { |
| 59 | 62 | try writer.writeAll("{"); |
| ... | ... | @@ -96,6 +99,9 @@ pub const Member = struct { |
| 96 | 99 | value: Value, |
| 97 | 100 | |
| 98 | 101 | pub fn format(self: Member, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) @TypeOf(writer).Error!void { |
| 102 | _ = fmt; |
| 103 | _ = options; |
| 104 | |
| 99 | 105 | try writer.print("\"{s}\": {}", .{ self.key, self.value }); |
| 100 | 106 | } |
| 101 | 107 | }; |
| ... | ... | @@ -151,10 +157,10 @@ pub fn parse(alloc: *std.mem.Allocator, input: []const u8) Parser.Error!Value { |
| 151 | 157 | fn parse_value(p: *Parser, start: ?std.json.Token) Parser.Error!Value { |
| 152 | 158 | const tok = start orelse try p.next(); |
| 153 | 159 | return switch (tok.?) { |
| 154 | | .ObjectBegin => |t| Value{ .Object = try parse_object(p) }, |
| 155 | | .ObjectEnd => |t| error.JsonExpectedValueStartGotEnd, |
| 156 | | .ArrayBegin => |t| Value{ .Array = try parse_array(p) }, |
| 157 | | .ArrayEnd => |t| error.JsonExpectedValueStartGotEnd, |
| 160 | .ObjectBegin => Value{ .Object = try parse_object(p) }, |
| 161 | .ObjectEnd => error.JsonExpectedValueStartGotEnd, |
| 162 | .ArrayBegin => Value{ .Array = try parse_array(p) }, |
| 163 | .ArrayEnd => error.JsonExpectedValueStartGotEnd, |
| 158 | 164 | .String => |t| Value{ .String = t.slice(p.input, p.index - 1) }, |
| 159 | 165 | .Number => |t| Value{ .Number = try std.fmt.parseFloat(f64, t.slice(p.input, p.index - 1)) }, |
| 160 | 166 | .True => Value{ .Bool = true }, |