diff --git a/Stencil/Node.swift b/Stencil/Node.swift index ab3e984..f49569b 100644 --- a/Stencil/Node.swift +++ b/Stencil/Node.swift @@ -230,7 +230,7 @@ public class IfNode : NodeType { let result = try variable.resolve(context) var truthy = false - if let result = result as? [AnyObject] { + if let result = result as? NSArray { if result.count > 0 { truthy = true } diff --git a/StencilSpecs/Nodes/IfNodeSpec.swift b/StencilSpecs/Nodes/IfNodeSpec.swift index 09e49b9..7f0726b 100644 --- a/StencilSpecs/Nodes/IfNodeSpec.swift +++ b/StencilSpecs/Nodes/IfNodeSpec.swift @@ -82,5 +82,19 @@ describe("IfNode") { let node = IfNode(variable: "unknown", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")]) try expect(try node.render(context)) == "false" } + + $0.it("renders the truth when array expression is not empty") { + let items: Array<[String:AnyObject]> = [["key":"key1","value":42],["key":"key2","value":1337]] + let arrayContext = Context(dictionary: ["items": [items]]) + let node = IfNode(variable: "items", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")]) + try expect(try node.render(arrayContext)) == "true" + } + + $0.it("renders the false when array expression is empty") { + let emptyItems = Array<[String:AnyObject]>() + let arrayContext = Context(dictionary: ["items": emptyItems]) + let node = IfNode(variable: "items", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")]) + try expect(try node.render(arrayContext)) == "false" + } } }