From 2c06ecee9f3ddb54de76d88373bd3b0a383ce72f Mon Sep 17 00:00:00 2001 From: James Hall Date: Mon, 11 May 2026 19:27:10 -0400 Subject: [PATCH 1/2] Support newlines in inline tables --- src/table.zig | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/table.zig b/src/table.zig index c5a5be2..be33e03 100644 --- a/src/table.zig +++ b/src/table.zig @@ -167,12 +167,12 @@ pub fn parseInlineTable(ctx: *parser.Context) !?*Table { errdefer deinitTableRecursively(table); while (true) { - spaces.skipSpaces(ctx); + spaces.skipSpacesAndLineBreaks(ctx); var pair = try kv.parse(ctx); errdefer pair.deinit(ctx.alloc); try handleKeyPair(ctx, table, &pair); - spaces.skipSpaces(ctx); + spaces.skipSpacesAndLineBreaks(ctx); parser.consumeString(ctx, ",") catch { try parser.consumeString(ctx, "}"); break; @@ -215,6 +215,21 @@ test "inline table" { testing.allocator.destroy(m); } +test "multi-line inline table" { + var ctx = parser.testInput( + \\{ + \\ aa = 3, + \\ bb.cc = 4 + \\} + ); + var m = (try parseInlineTable(&ctx)).?; + try testing.expect(m.count() == 2); + try testing.expect(m.get("aa").?.integer == 3); + try testing.expect(m.get("bb").?.table.get("cc").?.integer == 4); + deinitTableRecursively(m); + testing.allocator.destroy(m); +} + test "error in table" { var ctx = parser.testInput( \\aa = "test" From 2607f1e69271dc3fe67ffc8bb19dbe9583b363b5 Mon Sep 17 00:00:00 2001 From: James Hall Date: Mon, 11 May 2026 20:06:43 -0400 Subject: [PATCH 2/2] Support trailing commas in inline tables --- src/table.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/table.zig b/src/table.zig index be33e03..b6998cf 100644 --- a/src/table.zig +++ b/src/table.zig @@ -177,6 +177,12 @@ pub fn parseInlineTable(ctx: *parser.Context) !?*Table { try parser.consumeString(ctx, "}"); break; }; + + spaces.skipSpacesAndLineBreaks(ctx); + parser.consumeString(ctx, "}") catch { + continue; + }; + break; } return table; @@ -219,7 +225,7 @@ test "multi-line inline table" { var ctx = parser.testInput( \\{ \\ aa = 3, - \\ bb.cc = 4 + \\ bb.cc = 4, \\} ); var m = (try parseInlineTable(&ctx)).?;