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 {...@@ -251,7 +251,7 @@ const Parser = struct {
251 _ = try p.eatByte(test_s[0]);251 _ = try p.eatByte(test_s[0]);
252 return;252 return;
253 }253 }
254 try p.peekAmt(test_s.len);254 try p.peekAmt(test_s.len) orelse return null;
255 if (std.mem.eql(u8, p.slice()[0..test_s.len], test_s)) {255 if (std.mem.eql(u8, p.slice()[0..test_s.len], test_s)) {
256 p.idx += test_s.len;256 p.idx += test_s.len;
257 return;257 return;
...@@ -259,7 +259,7 @@ const Parser = struct {...@@ -259,7 +259,7 @@ const Parser = struct {
259 return null;259 return null;
260 }260 }
261261
262 fn peekAmt(p: *Parser, amt: usize) !void {262 fn peekAmt(p: *Parser, amt: usize) !?void {
263 if (p.avail() >= amt) return;263 if (p.avail() >= amt) return;
264 const buf_size = std.mem.page_size;264 const buf_size = std.mem.page_size;
265 const diff_amt = amt - p.avail();265 const diff_amt = amt - p.avail();
...@@ -267,16 +267,16 @@ const Parser = struct {...@@ -267,16 +267,16 @@ const Parser = struct {
267 var buf: [buf_size]u8 = undefined;267 var buf: [buf_size]u8 = undefined;
268 const len = try p.any.readAll(&buf);268 const len = try p.any.readAll(&buf);
269 if (len == 0) p.end = true;269 if (len == 0) p.end = true;
270 if (len == 0) return error.EndOfStream;270 if (len == 0) return null;
271 try p.temp.appendSlice(p.arena, buf[0..len]);271 try p.temp.appendSlice(p.arena, buf[0..len]);
272 if (amt > len) return error.EndOfStream;272 if (amt > len) return null;
273 }273 }
274274
275 pub fn eatByte(p: *Parser, test_c: u8) !?u8 {275 pub fn eatByte(p: *Parser, test_c: u8) !?u8 {
276 const t = tracer.trace(@src(), " '{c}'", .{test_c});276 const t = tracer.trace(@src(), " '{c}'", .{test_c});
277 defer t.end();277 defer t.end();
278278
279 try p.peekAmt(1);279 try p.peekAmt(1) orelse return null;
280 if (p.slice()[0] == test_c) {280 if (p.slice()[0] == test_c) {
281 p.idx += 1;281 p.idx += 1;
282 return test_c;282 return test_c;
...@@ -288,7 +288,7 @@ const Parser = struct {...@@ -288,7 +288,7 @@ const Parser = struct {
288 const t = tracer.trace(@src(), " ({d},{d})", .{ from, to });288 const t = tracer.trace(@src(), " ({d},{d})", .{ from, to });
289 defer t.end();289 defer t.end();
290290
291 try p.peekAmt(1);291 try p.peekAmt(1) orelse return null;
292 if (p.slice()[0] >= from and p.slice()[0] <= to) {292 if (p.slice()[0] >= from and p.slice()[0] <= to) {
293 defer p.idx += 1;293 defer p.idx += 1;
294 return p.slice()[0];294 return p.slice()[0];
...@@ -301,7 +301,7 @@ const Parser = struct {...@@ -301,7 +301,7 @@ const Parser = struct {
301 defer t.end();301 defer t.end();
302302
303 std.debug.assert(extras.matchesAll(u8, test_s, std.ascii.isASCII));303 std.debug.assert(extras.matchesAll(u8, test_s, std.ascii.isASCII));
304 try p.peekAmt(1);304 try p.peekAmt(1) orelse return null;
305 if (std.mem.indexOfScalar(u8, test_s, p.slice()[0])) |idx| {305 if (std.mem.indexOfScalar(u8, test_s, p.slice()[0])) |idx| {
306 p.idx += 1;306 p.idx += 1;
307 return test_s[idx];307 return test_s[idx];
...@@ -310,15 +310,15 @@ const Parser = struct {...@@ -310,15 +310,15 @@ const Parser = struct {
310 }310 }
311311
312 pub fn shift(p: *Parser) !u21 {312 pub fn shift(p: *Parser) !u21 {
313 try p.peekAmt(1);313 try p.peekAmt(1) orelse return error.EndOfStream;
314 const len = try std.unicode.utf8ByteSequenceLength(p.slice()[0]);314 const len = try std.unicode.utf8ByteSequenceLength(p.slice()[0]);
315 try p.peekAmt(len);315 try p.peekAmt(len) orelse return error.EndOfStream;
316 defer p.idx += len;316 defer p.idx += len;
317 return std.unicode.utf8Decode(p.slice()[0..len]);317 return std.unicode.utf8Decode(p.slice()[0..len]);
318 }318 }
319319
320 pub fn shiftBytesN(p: *Parser, comptime n: usize) ![n]u8 {320 pub fn shiftBytesN(p: *Parser, comptime n: usize) ![n]u8 {
321 try p.peekAmt(n);321 try p.peekAmt(n) orelse return error.EndOfStream;
322 defer p.idx += n;322 defer p.idx += n;
323 return p.slice()[0..n].*;323 return p.slice()[0..n].*;
324 }324 }