[for] Provide forloop context, first, last and counter

This commit is contained in:
Kyle Fuller
2015-12-09 19:18:16 +00:00
parent 14195b3199
commit 1668830d9b
2 changed files with 27 additions and 2 deletions

View File

@@ -158,8 +158,15 @@ public class ForNode : NodeType {
let values = try variable.resolve(context)
if let values = values as? [Any] where values.count > 0 {
return try values.map { item in
try context.push([loopVariable: item]) {
let count = values.count
return try values.enumerate().map { index, item in
let forContext = [
"first": index == 0,
"last": index == (count - 1),
"counter": index + 1,
]
return try context.push([loopVariable: item, "forloop": forContext]) {
try renderNodes(nodes, context)
}
}.joinWithSeparator("")