0.8.0
Breaking
-
It is no longer possible to create
Context
objects. Instead, you can pass a
dictionary directly to aTemplate
srender
method.- try template.render(Context(dictionary: ["name": "Kyle"])) + try template.render(["name": "Kyle"])
-
Template loader are no longer passed into a
Context
, instead you will need
to pass theLoader
to anEnvironment
and create a template from the
Environment
.let loader = FileSystemLoader(paths: ["templates/"]) - let template = loader.loadTemplate(name: "index.html") - try template.render(Context(dictionary: ["loader": loader])) + let environment = Environment(loader: loader) + try environment.renderTemplate(name: "index.html")
-
Loader
s will now throw aTemplateDoesNotExist
error when a template
is not found. -
Namespace
has been removed and replaced by extensions. You can create an
extension including any custom template tags and filters. A collection of
extensions can be passed to anEnvironment
.
Enhancements
-
Environment
is a new way to load templates. You can configure an
environment with custom template filters, tags and loaders and then create a
template from an environment.Environment also provides a convenience method to render a template directly.
-
FileSystemLoader
will now ensure that template paths are within the base
path. Any template names that try to escape the base path will raise a
SuspiciousFileOperation
error. -
New
{% filter %}
tag allowing you to perform a filter across the contents
of a block.{% filter lowercase %} This Text Will Be Lowercased. {% endfilter %}
-
You can now use
{{ block.super }}
to render a super block from another{% block %}
. -
Environment
allows you to provide a customTemplate
subclass, allowing
new template to use a specific subclass. -
If expressions may now contain filters on variables. For example
{% if name|uppercase == "TEST" %}
is now supported.
Deprecations
-
Template
initialisers have been deprecated in favour of using a template
loader such asFileSystemLoader
inside anEnvironment
. -
The use of whitespace inside variable filter expression is now deprecated.
- {{ name | uppercase }} + {{ name|uppercase }}
Bug Fixes
- Restores compatibility with ARM based platforms such as iOS. Stencil 0.7
introduced compilation errors due to using theFloat80
type which is not
available.