authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2024-05-30 11:48:19 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2024-05-30 11:48:19 -07:00
logbec56251c1207bb5f9725aefd03caea3aa364f3a
tree9eec101ad61f2126524f4cac879b2b8c5e4e9841
parente67bbc866d0e11997afd991284e61d7b030ecb8d

not having enough peek doesnt mean fail, only that its not that item

276/284 tests passed; 8 failed

1 files changed, 10 insertions(+), 10 deletions(-)

json.zig+10-10
......@@ -251,7 +251,7 @@ const Parser = struct {
251251 _ = try p.eatByte(test_s[0]);
252252 return;
253253 }
254 try p.peekAmt(test_s.len);
254 try p.peekAmt(test_s.len) orelse return null;
255255 if (std.mem.eql(u8, p.slice()[0..test_s.len], test_s)) {
256256 p.idx += test_s.len;
257257 return;
......@@ -259,7 +259,7 @@ const Parser = struct {
259259 return null;
260260 }
261261
262 fn peekAmt(p: *Parser, amt: usize) !void {
262 fn peekAmt(p: *Parser, amt: usize) !?void {
263263 if (p.avail() >= amt) return;
264264 const buf_size = std.mem.page_size;
265265 const diff_amt = amt - p.avail();
......@@ -267,16 +267,16 @@ const Parser = struct {
267267 var buf: [buf_size]u8 = undefined;
268268 const len = try p.any.readAll(&buf);
269269 if (len == 0) p.end = true;
270 if (len == 0) return error.EndOfStream;
270 if (len == 0) return null;
271271 try p.temp.appendSlice(p.arena, buf[0..len]);
272 if (amt > len) return error.EndOfStream;
272 if (amt > len) return null;
273273 }
274274
275275 pub fn eatByte(p: *Parser, test_c: u8) !?u8 {
276276 const t = tracer.trace(@src(), " '{c}'", .{test_c});
277277 defer t.end();
278278
279 try p.peekAmt(1);
279 try p.peekAmt(1) orelse return null;
280280 if (p.slice()[0] == test_c) {
281281 p.idx += 1;
282282 return test_c;
......@@ -288,7 +288,7 @@ const Parser = struct {
288288 const t = tracer.trace(@src(), " ({d},{d})", .{ from, to });
289289 defer t.end();
290290
291 try p.peekAmt(1);
291 try p.peekAmt(1) orelse return null;
292292 if (p.slice()[0] >= from and p.slice()[0] <= to) {
293293 defer p.idx += 1;
294294 return p.slice()[0];
......@@ -301,7 +301,7 @@ const Parser = struct {
301301 defer t.end();
302302
303303 std.debug.assert(extras.matchesAll(u8, test_s, std.ascii.isASCII));
304 try p.peekAmt(1);
304 try p.peekAmt(1) orelse return null;
305305 if (std.mem.indexOfScalar(u8, test_s, p.slice()[0])) |idx| {
306306 p.idx += 1;
307307 return test_s[idx];
......@@ -310,15 +310,15 @@ const Parser = struct {
310310 }
311311
312312 pub fn shift(p: *Parser) !u21 {
313 try p.peekAmt(1);
313 try p.peekAmt(1) orelse return error.EndOfStream;
314314 const len = try std.unicode.utf8ByteSequenceLength(p.slice()[0]);
315 try p.peekAmt(len);
315 try p.peekAmt(len) orelse return error.EndOfStream;
316316 defer p.idx += len;
317317 return std.unicode.utf8Decode(p.slice()[0..len]);
318318 }
319319
320320 pub fn shiftBytesN(p: *Parser, comptime n: usize) ![n]u8 {
321 try p.peekAmt(n);
321 try p.peekAmt(n) orelse return error.EndOfStream;
322322 defer p.idx += n;
323323 return p.slice()[0..n].*;
324324 }