diff options
| author | Robert Günzler <r@gnzler.io> | 2025-02-19 01:33:37 +0100 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2025-02-19 01:33:49 +0100 |
| commit | 5e6b4e791a4cc51da8c8af7526fa14dfc222cca5 (patch) | |
| tree | 329d192f2fe064213db3835054f4192b4e14b648 /src | |
| parent | deef3b3544774a2af6698aa38c39ba2a1ed4cef1 (diff) | |
| download | site-5e6b4e791a4cc51da8c8af7526fa14dfc222cca5.tar.gz | |
support multiple template expressions per line
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
| -rw-r--r-- | src/main.zig | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/main.zig b/src/main.zig index 785a182..6884097 100644 --- a/src/main.zig +++ b/src/main.zig @@ -148,18 +148,19 @@ fn inject(allocator: std.mem.Allocator, w: std.io.AnyWriter, srcpath: []const u8 buf_reader.buf.len, ) catch { @panic("Failed to read from stream"); - }) |chunk| { + }) |chunk_| { defer _ = arena.reset(.free_all); - if (std.mem.indexOfPosLinear(u8, chunk, 0, "{")) |start| { - if (std.mem.indexOfPosLinear(u8, chunk, start + 1, "}")) |end| { - try out_stream.writeAll(chunk[0..start]); - template(allocator, out_stream.any(), chunk[start + 1 .. end]) catch - @panic("Failed to resolve template"); - try out_stream.writeAll(chunk[end + 1 ..]); - try out_stream.writeByte('\n'); - continue; - } + var chunk = chunk_; + templating: while (true) { + if (std.mem.indexOfPosLinear(u8, chunk, 0, "{")) |start| { + if (std.mem.indexOfPosLinear(u8, chunk, start + 1, "}")) |end| { + try out_stream.writeAll(chunk[0..start]); + template(allocator, out_stream.any(), chunk[start + 1 .. end]) catch + @panic("Failed to resolve template"); + chunk = chunk[end + 1 ..]; + } else break :templating; + } else break :templating; } try out_stream.writeAll(chunk); |