feat: Add a default filter
This commit is contained in:
@@ -12,6 +12,11 @@
|
|||||||
### Enhancements
|
### Enhancements
|
||||||
|
|
||||||
- You may now register custom template filters which make use of arguments.
|
- You may now register custom template filters which make use of arguments.
|
||||||
|
- There is now a `default` filter.
|
||||||
|
|
||||||
|
```html+django
|
||||||
|
Hello {{ name|default:"World" }}
|
||||||
|
```
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
|
|||||||
@@ -31,3 +31,7 @@ func lowercase(_ value: Any?) -> Any? {
|
|||||||
|
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func defaultFilter(value: Any?, arguments: [Any?]) -> Any? {
|
||||||
|
return value ?? arguments.first as Any
|
||||||
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ public class Namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fileprivate func registerDefaultFilters() {
|
fileprivate func registerDefaultFilters() {
|
||||||
|
registerFilter("default", filter: defaultFilter)
|
||||||
registerFilter("capitalize", filter: capitalise)
|
registerFilter("capitalize", filter: capitalise)
|
||||||
registerFilter("uppercase", filter: uppercase)
|
registerFilter("uppercase", filter: uppercase)
|
||||||
registerFilter("lowercase", filter: lowercase)
|
registerFilter("lowercase", filter: lowercase)
|
||||||
|
|||||||
@@ -89,4 +89,18 @@ func testFilter() {
|
|||||||
try expect(result) == "kyle"
|
try expect(result) == "kyle"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
describe("default filter") {
|
||||||
|
let template = Template(templateString: "Hello {{ name|default:\"World\" }}")
|
||||||
|
|
||||||
|
$0.it("shows the variable value") {
|
||||||
|
let result = try template.render(Context(dictionary: ["name": "Kyle"]))
|
||||||
|
try expect(result) == "Hello Kyle"
|
||||||
|
}
|
||||||
|
|
||||||
|
$0.it("shows the default value") {
|
||||||
|
let result = try template.render(Context(dictionary: [:]))
|
||||||
|
try expect(result) == "Hello World"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,3 +120,13 @@ For example, `Stencil` to `stencil`.
|
|||||||
.. code-block:: html+django
|
.. code-block:: html+django
|
||||||
|
|
||||||
{{ "Stencil"|lowercase }}
|
{{ "Stencil"|lowercase }}
|
||||||
|
|
||||||
|
``default``
|
||||||
|
~~~~~~~~~~~
|
||||||
|
|
||||||
|
If a variable not present in the context, use given default. Otherwise, use the
|
||||||
|
value of the variable. For example:
|
||||||
|
|
||||||
|
.. code-block:: html+django
|
||||||
|
|
||||||
|
Hello {{ name|default:"World" }}
|
||||||
|
|||||||
Reference in New Issue
Block a user