update: forloop variables
This commit is contained in:
parent
20e4bacab0
commit
47f52fea58
1 changed files with 24 additions and 4 deletions
|
|
@ -21,7 +21,7 @@ pub const RenderError = error{
|
|||
Overflow,
|
||||
Unexpected,
|
||||
UnsupportedExpression,
|
||||
// } || FilterError || parser.ParserError || icons.SvgError || std.fs.File.OpenError;
|
||||
// } || FilterError || parser.ParserError || icons.SvgError || std.fs.File.OpenError;
|
||||
} || FilterError || parser.ParserError || std.fs.File.OpenError;
|
||||
|
||||
pub const Renderer = struct {
|
||||
|
|
@ -230,11 +230,31 @@ pub const Renderer = struct {
|
|||
else => return,
|
||||
};
|
||||
|
||||
for (list) |item| {
|
||||
for (list, 0..) |item, i| {
|
||||
var ctx = Context.init(alloc);
|
||||
defer ctx.deinit();
|
||||
|
||||
try ctx.set(node.tag.?.body.@"for".loop_var, item);
|
||||
try ctx.set("forloop.counter", i + 1);
|
||||
try ctx.set("forloop.counter0", i);
|
||||
try ctx.set("forloop.revcounter", (list.len - i));
|
||||
try ctx.set("forloop.revcounter0", (list.len - i) - 1);
|
||||
try ctx.set("forloop.first", i == 0);
|
||||
try ctx.set("forloop.last", i == (list.len - 1));
|
||||
try ctx.set("forloop.length", list.len);
|
||||
// forloop.counter
|
||||
// The current iteration of the loop (1-indexed)
|
||||
// forloop.counter0
|
||||
// The current iteration of the loop (0-indexed)
|
||||
// forloop.revcounter
|
||||
// The number of iterations from the end of the loop (1-indexed)
|
||||
// forloop.revcounter0
|
||||
// The number of iterations from the end of the loop (0-indexed)
|
||||
// forloop.first
|
||||
// True if this is the first time through the loop
|
||||
// forloop.last
|
||||
// True if this is the last time through the loop
|
||||
// forloop.length
|
||||
|
||||
for (node.tag.?.body.@"for".body) |child| {
|
||||
try self.renderNode(alloc, nodes, child, writer, &ctx, null);
|
||||
|
|
@ -381,7 +401,7 @@ pub const Renderer = struct {
|
|||
const svg_kind = node.tag.?.body.svg.kind;
|
||||
const svg_name = node.tag.?.body.svg.name;
|
||||
|
||||
if (self.cache.icons.?.getIcon(alloc,svg_kind, svg_name)) |svg_content| {
|
||||
if (self.cache.icons.?.getIcon(alloc, svg_kind, svg_name)) |svg_content| {
|
||||
try writer.writeAll("<div class=\"svg-container\">");
|
||||
try writer.writeAll(svg_content);
|
||||
try writer.writeAll("</div>");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue