feat: Add a default filter

This commit is contained in:
Kyle Fuller
2016-11-27 18:27:30 +00:00
parent 3293d8a526
commit dfd57e9571
5 changed files with 34 additions and 0 deletions

View File

@@ -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

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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"
}
}
} }

View File

@@ -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" }}