From 466a15f3cb8cdb984be5459cd8873a7040bb0f03 Mon Sep 17 00:00:00 2001 From: jaina heartles Date: Thu, 8 Dec 2022 03:21:18 -0800 Subject: [PATCH] Use % for context instead of @ --- src/template/lib.zig | 12 +++++++----- src/template/test.tmp.html | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/template/lib.zig b/src/template/lib.zig index 413cc53..8fbcbe1 100644 --- a/src/template/lib.zig +++ b/src/template/lib.zig @@ -3,7 +3,7 @@ const std = @import("std"); pub fn main() !void { try execute( std.io.getStdOut().writer(), - .{ .test_tmpl = "{.x} {@context_foo}" }, + .{ .test_tmpl = "{.x} {%context_foo}" }, @embedFile("./test.tmp.html"), .{ .community = .{ .name = "abcd" }, @@ -389,6 +389,7 @@ fn parseTemplateTokens(comptime tokens: ControlTokenIter) []const TemplateToken .equals => items = items ++ [_]TemplateToken{.{ .text = "=" }}, .at => items = items ++ [_]TemplateToken{.{ .text = "@" }}, .comma => items = items ++ [_]TemplateToken{.{ .text = "," }}, + .percent => items = items ++ [_]TemplateToken{.{ .text = "%" }}, }; return items; @@ -411,7 +412,7 @@ fn parseExpression(comptime tokens: ControlTokenIter) ParseResult(ControlTokenIt iter = names.new_iter; break .{ .capture_deref = names.item }; }, - .at => { + .percent => { const names = parseDeref(iter); iter = names.new_iter; break .{ .context_deref = names.item }; @@ -485,7 +486,7 @@ fn parseControlBlock(comptime tokens: ControlTokenIter) ParseResult(ControlToken .@"if" => break .{ .end_if = {} }, } }, - .period, .dollar, .at => { + .period, .dollar, .percent => { iter.putBack(token); const expr = parseExpression(iter); iter = expr.new_iter; @@ -587,9 +588,9 @@ fn tryParseCapture(comptime tokens: ControlTokenIter) ?ParseResult(ControlTokenI iter = skipWhitespace(iter); if ((iter.next() orelse return null) != .pipe) return null; - iter = skipWhitespace(iter); var captures: []const []const u8 = &.{}; while (true) { + iter = skipWhitespace(iter); if ((iter.next() orelse return null) != .dollar) return null; iter = skipWhitespace(iter); const name = switch (iter.next() orelse return null) { @@ -604,7 +605,6 @@ fn tryParseCapture(comptime tokens: ControlTokenIter) ?ParseResult(ControlTokenI .comma => {}, else => return null, } - iter = skipWhitespace(iter); } return .{ @@ -786,6 +786,7 @@ const ControlToken = union(enum) { equals: void, at: void, comma: void, + percent: void, }; const ControlTokenIter = struct { @@ -817,6 +818,7 @@ const ControlTokenIter = struct { '=' => return .{ .equals = {} }, '@' => return .{ .at = {} }, ',' => return .{ .comma = {} }, + '%' => return .{ .percent = {} }, ' ', '\t', '\n', '\r' => { var idx: usize = 0; while (idx < remaining.len and std.mem.indexOfScalar(u8, " \t\n\r", remaining[idx]) != null) : (idx += 1) {} diff --git a/src/template/test.tmp.html b/src/template/test.tmp.html index aa0100a..29930ed 100644 --- a/src/template/test.tmp.html +++ b/src/template/test.tmp.html @@ -29,7 +29,7 @@ - {@context_foo} + {%context_foo}