Skip to content

Commit 84d8af3

Browse files
authored
Merge pull request #72 from Igor-Palaguta/EmptyArrayCondition
empty array should return false inside if statement
2 parents 1ce38e9 + 155afdc commit 84d8af3

File tree

3 files changed

+21
-0
lines changed

3 files changed

+21
-0
lines changed

Resources/if-empty-array-test.leaf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#if(array) { not empty }

Sources/Leaf/Tag/Models/If.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public final class If: Tag {
2121
if let bool = value.bool { return bool }
2222
// Empty string value returns false.
2323
if value.string == "" { return false }
24+
// Empty array value returns false.
25+
if let array = value.array, array.isEmpty { return false }
2426
// Otherwise, not-nil returns true.
2527
return true
2628
}

Tests/LeafTests/IfTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,22 @@ class IfTests: XCTestCase {
9797
XCTAssert(rendered == expectation, "have: \(rendered), want: \(expectation)")
9898
}
9999
}
100+
101+
func testIfEmptyArray() throws {
102+
let template = try stem.spawnLeaf(at: "if-empty-array-test")
103+
do {
104+
let context = try Node(node: ["array": ["First"]])
105+
let loadable = Context(context)
106+
let rendered = try stem.render(template, with: loadable).makeString()
107+
let expectation = "not empty"
108+
XCTAssert(rendered == expectation, "have: \(rendered), want: \(expectation)")
109+
}
110+
do {
111+
let context = try Node(node: ["array": []])
112+
let loadable = Context(context)
113+
let rendered = try stem.render(template, with: loadable).makeString()
114+
let expectation = ""
115+
XCTAssert(rendered == expectation, "have: \(rendered), want: \(expectation)")
116+
}
117+
}
100118
}

0 commit comments

Comments
 (0)