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 @@
{#template test_tmpl .bar}
{#template test_tmpl .}
- {@context_foo}
+ {%context_foo}