fix(default): Check for wrapped nil in filter (#162)
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
### Bug Fixes
|
||||
|
||||
- Fixed rendering `{{ block.super }}` with several levels of inheritance
|
||||
- Fixed checking dictionary values for nil in `default` filter
|
||||
|
||||
|
||||
## 0.10.1
|
||||
|
||||
@@ -11,7 +11,8 @@ func lowercase(_ value: Any?) -> Any? {
|
||||
}
|
||||
|
||||
func defaultFilter(value: Any?, arguments: [Any?]) -> Any? {
|
||||
if let value = value {
|
||||
// value can be optional wrapping nil, so this way we check for underlying value
|
||||
if let value = value, String(describing: value) != "nil" {
|
||||
return value
|
||||
}
|
||||
|
||||
|
||||
@@ -136,6 +136,14 @@ func testFilter() {
|
||||
let result = try template.render(Context(dictionary: [:]))
|
||||
try expect(result) == "Hello World"
|
||||
}
|
||||
|
||||
$0.it("checks for underlying nil value correctly") {
|
||||
let template = Template(templateString: "Hello {{ user.name|default:\"anonymous\" }}")
|
||||
let nilName: String? = nil
|
||||
let user: [String: Any?] = ["name": nilName]
|
||||
let result = try template.render(Context(dictionary: ["user": user]))
|
||||
try expect(result) == "Hello anonymous"
|
||||
}
|
||||
}
|
||||
|
||||
describe("join filter") {
|
||||
|
||||
Reference in New Issue
Block a user