From fdf0a8459314c46110d53da8b3968c4735d1f614 Mon Sep 17 00:00:00 2001 From: jaina heartles Date: Fri, 18 Nov 2022 03:32:30 -0800 Subject: [PATCH] Fix whitespace stripping after control blocks --- src/template/lib.zig | 3 +++ src/template/test.tmp.html | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/template/lib.zig b/src/template/lib.zig index a32b5df..aef9e1e 100644 --- a/src/template/lib.zig +++ b/src/template/lib.zig @@ -39,6 +39,7 @@ fn executeStatement(writer: anytype, comptime stmt: Statement, args: anytype, ca .@"for" => |loop| { const iterable = evaluateExpression(loop.header.iterable, args, captures); const subtemplate = loop.subtemplate; + //std.log.debug("{any}", .{subtemplate}); for (iterable) |v| { try executeTemplate( writer, @@ -155,6 +156,7 @@ fn parseTemplate( switch (cb.block) { .expression => |expr| items = items ++ [_]TemplateItem{.{ .statement = .{ .expression = expr } }}, .if_header => |header| { + if (i != tokens.len - 1 and tokens[i + 1] == .whitespace and cb.strip_after) i += 1; const subtemplate = parseTemplate(tokens, i + 1, .if_block); items = items ++ [_]TemplateItem{.{ .statement = .{ @@ -167,6 +169,7 @@ fn parseTemplate( i = subtemplate.new_iter; }, .for_header => |header| { + if (i != tokens.len - 1 and tokens[i + 1] == .whitespace and cb.strip_after) i += 1; const subtemplate = parseTemplate(tokens, i + 1, .for_block); items = items ++ [_]TemplateItem{.{ .statement = .{ diff --git a/src/template/test.tmp.html b/src/template/test.tmp.html index 413f49d..72435f4 100644 --- a/src/template/test.tmp.html +++ b/src/template/test.tmp.html @@ -9,12 +9,12 @@

{{ REAL BRACKETS }}

- {= #for .baz |$f| =} + {#for .baz |$f| =} {= #for $f |$b| =} {$b}: {= /for =} - {= /for =} - {#if .qux}qux!{/if} + {= /for} + {#if .qux}qux!{/if=} {#if .quxx}quxx!{/if}