Skip to content

Releases: stencilproject/Stencil

0.15.1

31 Jul 21:09
4f222ac
Compare
Choose a tag to compare

Bug Fixes

0.15.0

29 Jul 22:25
8989f8a
Compare
Choose a tag to compare

Breaking

  • Drop support for Swift < 5. For Swift 4.2 support, you should use Stencil 0.14.2.
    David Jennes
    #323

Enhancements

  • Added support for trimming whitespace around blocks with Jinja2 whitespace control symbols. eg {%- if value +%}.
    Miguel Bejar
    Yonas Kolb
    #92
    #287
  • Added support for adding default whitespace trimming behaviour to an environment.
    Yonas Kolb
    #287
  • Blocks now can be used repeatedly in the template. When block is rendered for the first time its content will be cached and it can be rendered again later using {{ block.block_name }}.
    Ilya Puchka
    #158
    #182
  • Added break and continue tags to break or continue current loop.
    Ilya Puchka
    #175
  • You can now access outer loop's scope by labeling it: {% outer: for ... %}... {% for ... %} {{ outer.counter }} {% endfor %}{% endfor %}.
    Ilya Puchka
    #175
  • Boolean expressions can now be rendered, i.e {{ name == "John" }} will render true or false depending on the evaluation result.
    Ilya Puchka
    David Jennes
    #164
    #325
  • Enable dynamic member lookup using a new DynamicMemberLookup marker protocol. Conform your own types to this protocol to support dynamic member from with contexts.
    Ilya Puchka
    #219
    #246
  • Allow providing lazily evaluated context data, using the LazyValueWrapper structure.
    David Jennes
    #324

Bug Fixes

Internal Changes

0.14.2

03 Nov 17:07
ccd9402
Compare
Choose a tag to compare

Internal Changes

0.14.1

11 Apr 14:30
973e190
Compare
Choose a tag to compare

Bug Fixes

0.14.0

17 Aug 18:45
Compare
Choose a tag to compare

Breaking

  • Drop support for Swift < 4.2. For Swift 4 support, you should use Stencil 0.13.1.
    David Jennes
    #294

Enhancements

  • Added support for dynamic filter using filter filter. With that you can define a variable with a name of filter
    , i.e. myfilter = "uppercase" and then use it to invoke this filter with {{ string|filter:myfilter }}.
    Ilya Puchka
    #203

Deprecations

None

Bug Fixes

  • Fixed using parenthesis in boolean expressions, they now can be used without spaces around them.
    Ilya Puchka
    #254
  • Throw syntax error on empty variable tags ({{ }}) instead fatalError.
    Ilya Puchka
    #263

Internal Changes

0.13.1

16 Aug 17:46
0e9a78d
Compare
Choose a tag to compare

Bug Fixes

  • Fixed a bug in Stencil 0.13 where tags without spaces were incorrectly parsed.
    David Jennes
    #252

0.13.0

25 Sep 23:15
c7dbba4
Compare
Choose a tag to compare

Breaking

Enhancements

  • You can now use parentheses in boolean expressions to change operator precedence.
    Ilya Puchka
    #165
  • Added method to add boolean filters with their negative counterparts.
    Ilya Puchka
    #160
  • Now you can conditionally render variables with {{ variable if condition }}, which is a shorthand for {% if condition %}{{ variable }}{% endif %}. You can also use else like {{ variable1 if condition else variable2 }}, which is a shorthand for {% if condition %}{{ variable1 }}{% else %}{{ variable2 }}{% endif %}
    Ilya Puchka
    #243
  • Now you can access string characters by index or get string length the same was as if it was an array, i.e. {{ 'string'.first }}, {{ 'string'.last }}, {{ 'string'.1 }}, {{ 'string'.count }}.
    Ilya Puchka
    #245

Bug Fixes

  • Fixed the performance issues introduced in Stencil 0.12 with the error log improvements.
    Ilya Puchka
    #230
  • Now accessing undefined keys in NSObject does not cause runtime crash and instead renders empty string.
    Ilya Puchka
    #234
  • for tag: When iterating over a dictionary the keys will now always be sorted (in an ascending order) to ensure consistent output generation.
    David Jennes
    #240

Internal Changes

0.12.1

30 Aug 11:52
b476e50
Compare
Choose a tag to compare

Internal Changes

  • Updated the PathKit dependency to 0.9.0 in CocoaPods, to be in line with SPM.
    David Jennes
    #227

0.12.0

26 Aug 21:39
6a4959c
Compare
Choose a tag to compare

Enhancements

  • Added an optional second parameter to the include tag for passing a sub context to the included file.
    Yonas Kolb
    #214
  • Variables now support the subscript notation. For example, if you have a variable key = "name", and an
    object item = ["name": "John"], then {{ item[key] }} will evaluate to "John".
    David Jennes
    #215
  • Adds support for using spaces in filter expression.
    Ilya Puchka
    #178
  • Improvements in error reporting.
    Ilya Puchka
    #167

Bug Fixes

0.11.0

05 Apr 01:39
Compare
Choose a tag to compare

Enhancements

  • Added support for resolving superclass properties for not-NSObject subclasses
  • The {% for %} tag can now iterate over tuples, structures and classes via
    their stored properties.
  • Added split filter
  • Allow default string filters to be applied to arrays
  • Similar filters are suggested when unknown filter is used
  • Added indent filter
  • Allow using new lines inside tags
  • Added support for iterating arrays of tuples
  • Added support for ranges in if-in expression
  • Added property forloop.length to get number of items in the loop
  • Now you can construct ranges for loops using a...b syntax, i.e. for i in 1...array.count

Bug Fixes

  • Fixed rendering {{ block.super }} with several levels of inheritance
  • Fixed checking dictionary values for nil in default filter
  • Fixed comparing string variables with string literals, in Swift 4 string literals became Substring and thus couldn't be directly compared to strings.
  • Integer literals now resolve into Int values, not Float
  • Fixed accessing properties of optional properties via reflection
  • No longer render optional values in arrays as Optional(..)
  • Fixed subscription tuples by value index, i.e. {{ tuple.0 }}