Merge pull request #129 from bfad/forloop-add-range-support

Add range support for for tag
This commit is contained in:
Kyle Fuller
2017-08-08 17:06:51 -07:00
committed by GitHub
3 changed files with 21 additions and 0 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.conche/
.build/
Packages/
Package.resolved

View File

@@ -90,6 +90,10 @@ class ForNode : NodeType {
values = dictionary.map { ($0.key, $0.value) }
} else if let array = resolved as? [Any] {
values = array
} else if let range = resolved as? CountableClosedRange<Int> {
values = Array(range)
} else if let range = resolved as? CountableRange<Int> {
values = Array(range)
} else {
values = []
}

View File

@@ -37,6 +37,22 @@ func testForNode() {
try expect(try node.render(any_context)) == "123"
}
$0.it("renders a context variable of type CountableClosedRange<Int>") {
let context = Context(dictionary: ["range": 1...3])
let nodes: [NodeType] = [VariableNode(variable: "item")]
let node = ForNode(resolvable: Variable("range"), loopVariables: ["item"], nodes: nodes, emptyNodes: [])
try expect(try node.render(context)) == "123"
}
$0.it("renders a context variable of type CountableRange<Int>") {
let context = Context(dictionary: ["range": 1..<4])
let nodes: [NodeType] = [VariableNode(variable: "item")]
let node = ForNode(resolvable: Variable("range"), loopVariables: ["item"], nodes: nodes, emptyNodes: [])
try expect(try node.render(context)) == "123"
}
#if os(OSX)
$0.it("renders a context variable of type NSArray") {
let nsarray_context = Context(dictionary: [