Skip to content

Commit 32fc895

Browse files
authored
Merge pull request #45 from JamesOwenHall/main
Support TOML 1.1 inline tables
2 parents a73c942 + 2607f1e commit 32fc895

1 file changed

Lines changed: 23 additions & 2 deletions

File tree

src/table.zig

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,16 +167,22 @@ pub fn parseInlineTable(ctx: *parser.Context) !?*Table {
167167
errdefer deinitTableRecursively(table);
168168

169169
while (true) {
170-
spaces.skipSpaces(ctx);
170+
spaces.skipSpacesAndLineBreaks(ctx);
171171
var pair = try kv.parse(ctx);
172172
errdefer pair.deinit(ctx.alloc);
173173

174174
try handleKeyPair(ctx, table, &pair);
175-
spaces.skipSpaces(ctx);
175+
spaces.skipSpacesAndLineBreaks(ctx);
176176
parser.consumeString(ctx, ",") catch {
177177
try parser.consumeString(ctx, "}");
178178
break;
179179
};
180+
181+
spaces.skipSpacesAndLineBreaks(ctx);
182+
parser.consumeString(ctx, "}") catch {
183+
continue;
184+
};
185+
break;
180186
}
181187

182188
return table;
@@ -215,6 +221,21 @@ test "inline table" {
215221
testing.allocator.destroy(m);
216222
}
217223

224+
test "multi-line inline table" {
225+
var ctx = parser.testInput(
226+
\\{
227+
\\ aa = 3,
228+
\\ bb.cc = 4,
229+
\\}
230+
);
231+
var m = (try parseInlineTable(&ctx)).?;
232+
try testing.expect(m.count() == 2);
233+
try testing.expect(m.get("aa").?.integer == 3);
234+
try testing.expect(m.get("bb").?.table.get("cc").?.integer == 4);
235+
deinitTableRecursively(m);
236+
testing.allocator.destroy(m);
237+
}
238+
218239
test "error in table" {
219240
var ctx = parser.testInput(
220241
\\aa = "test"

0 commit comments

Comments
 (0)