dumb error

This commit is contained in:
yuzu 2025-05-29 20:41:31 -05:00
parent ee15bef4e1
commit 5bca03ea6b

View File

@ -258,7 +258,7 @@ pub fn getValue(
} else { } else {
// for (self.property_map.keys(), self.property_map.values()) |k, v| { // for (self.property_map.keys(), self.property_map.values()) |k, v| {
// std.debug.print("{}: {s}\n", .{ v.tip, @tagName(self.index.get(k)) }); // std.debug.print("{}: {s}\n", .{ v.tip, @tagName(self.index.get(k)) });
//std.debug.print("tip: {d}\n", .{tip}); // std.debug.print("tip: {d}\n", .{k});
// } // }
return error.MissingKey; return error.MissingKey;
}; };
@ -296,21 +296,10 @@ pub fn parse(self: *Self, tokenizer: *Tokenizer) !usize {
const scope_idx = query.get(query.len - 1); const scope_idx = query.get(query.len - 1);
switch (self.index.get(scope_idx)) { switch (self.index.get(scope_idx)) {
.object => |scope| { .object => |scope| {
//std.debug.print("prop: {s} \n", .{token.value.?.string});
const pidx = try self.addProperty(allocator, token.value.?.string); const pidx = try self.addProperty(allocator, token.value.?.string);
const reer = self.index.len;
var accum: usize = 0; self.property_map.putAssumeCapacity(reer, .{ .tip = @enumFromInt(pidx) });
for (query.slice(), 0..) |id, i| {
// std.debug.print("once\n", .{});
accum += switch (self.index.get(id)) {
.object => id + i,
.array => id + i,
else => unreachable,
};
}
accum += scope.len + 1;
self.property_map.putAssumeCapacity(accum, .{ .tip = @enumFromInt(pidx) });
// std.debug.print("{s}/{d}\n", .{ token.value.?.string, accum });
allocator.free(token.value.?.string); allocator.free(token.value.?.string);
self.index.set(scope_idx, .{ .object = ObjectEntry{ self.index.set(scope_idx, .{ .object = ObjectEntry{
@ -580,14 +569,15 @@ test getValue {
const text = const text =
\\{ \\{
\\ "a":"b", \\ "a":"A",
\\ "c":"d", \\ "b":"B",
\\ "f": { \\ "c": {
\\ "g": "h" \\ "d": "D"
\\ }, \\ },
\\ "i": "j" \\ "e": "E",
\\ "f": [1]
\\} \\}
; // eg 1: b, 2: c, 3: f, 4: g, 5: i ; // 1: a, 2: b, 3: c, 4: d, 5: e, 6: f
var tokenizer: Tokenizer = try .init(allocator, text); var tokenizer: Tokenizer = try .init(allocator, text);
defer tokenizer.deinit(); defer tokenizer.deinit();