authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-02-18 16:35:01 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-02-18 16:35:01 -08:00
log5ed385991441fbf60d59f67fc374e00adfc4a433
tree7b3511056a240339c877b2671efef5cef04cb7b4
parentc42e6387d1ecb15b82fce5c8c08728e93a7b932c

use writeNTimes


2 files changed, 11 insertions(+), 6 deletions(-)

json.zig+6-6
...@@ -432,9 +432,9 @@ pub const Document = struct {...@@ -432,9 +432,9 @@ pub const Document = struct {
432 return std.fmt.format(writer, "{}", .{this.root});432 return std.fmt.format(writer, "{}", .{this.root});
433 }433 }
434434
435 pub fn stringify(this: *const Document, writer: anytype, space: Space, indent: u8) @TypeOf(writer).Error!void {435 pub fn stringify(this: *const Document, writer: anytype, space: Space, indent: u8) Instance(@TypeOf(writer)).WriteError!void {
436 const fill = space.fill();436 const fill = space.fill();
437 for (0..indent) |_| try writer.writeAll(fill);437 try writer.writeNTimes(fill, indent);
438 return @errorCast(this.root.stringify(writer, space, indent));438 return @errorCast(this.root.stringify(writer, space, indent));
439 }439 }
440};440};
...@@ -582,11 +582,11 @@ pub const ArrayIndex = enum(u32) {...@@ -582,11 +582,11 @@ pub const ArrayIndex = enum(u32) {
582 for (items, 0..) |item, i| {582 for (items, 0..) |item, i| {
583 if (i > 0) try writer.writeAll(",");583 if (i > 0) try writer.writeAll(",");
584 if (fill.len > 0) try writer.writeAll("\n");584 if (fill.len > 0) try writer.writeAll("\n");
585 for (0..indent + 1) |_| try writer.writeAll(fill);585 try writer.writeNTimes(fill, indent + 1);
586 try item.stringify(writer, space, indent + 1);586 try item.stringify(writer, space, indent + 1);
587 }587 }
588 if (fill.len > 0) try writer.writeAll("\n");588 if (fill.len > 0) try writer.writeAll("\n");
589 for (0..indent) |_| try writer.writeAll(fill);589 try writer.writeNTimes(fill, indent);
590 try writer.writeAll("]");590 try writer.writeAll("]");
591 }591 }
592592
...@@ -623,13 +623,13 @@ pub const ObjectIndex = enum(u32) {...@@ -623,13 +623,13 @@ pub const ObjectIndex = enum(u32) {
623 for (keys, values, 0..) |k, v, i| {623 for (keys, values, 0..) |k, v, i| {
624 if (i > 0) try writer.writeAll(",");624 if (i > 0) try writer.writeAll(",");
625 if (fill.len > 0) try writer.writeAll("\n");625 if (fill.len > 0) try writer.writeAll("\n");
626 for (0..indent + 1) |_| try writer.writeAll(fill);626 try writer.writeNTimes(fill, indent + 1);
627 try k.stringify(writer);627 try k.stringify(writer);
628 try writer.writeAll(":");628 try writer.writeAll(":");
629 try v.stringify(writer, space, indent + 1);629 try v.stringify(writer, space, indent + 1);
630 }630 }
631 if (fill.len > 0) try writer.writeAll("\n");631 if (fill.len > 0) try writer.writeAll("\n");
632 for (0..indent) |_| try writer.writeAll(fill);632 try writer.writeNTimes(fill, indent);
633 try writer.writeAll("}");633 try writer.writeAll("}");
634 }634 }
635635
test.zig+5
...@@ -580,6 +580,11 @@ fn expectCanonical(buffer: []const u8) !void {...@@ -580,6 +580,11 @@ fn expectCanonical(buffer: []const u8) !void {
580 doc.acquire();580 doc.acquire();
581 defer doc.release();581 defer doc.release();
582 try std.testing.expectFmt(buffer, "{}", .{doc});582 try std.testing.expectFmt(buffer, "{}", .{doc});
583
584 var buf: [4096]u8 = undefined;
585 var out: nio.FixedBufferStream([]u8) = .init(&buf);
586 try doc.stringify(&out, .{ .count = 0 }, 0);
587 try std.testing.expectEqualStrings(buffer, out.buffer[0..out.pos]);
583}588}
584589
585// zig fmt: off590// zig fmt: off