<NME> CHANGELOG.md
<BEF> # StencilSwiftKit CHANGELOG

---

## Stable Branch

### Breaking Changes

_None_

### New Features

_None_

### Bug Fixes

_None_

### Internal Changes

_None_

## 2.10.1

### Internal Changes

* Pin `Komondor` to 1.1.3, to avoid issues with SPM for other packages depending on this package.  
  [redryerye](https://github.com/redryerye)
  [#162](https://github.com/SwiftGen/StencilSwiftKit/pull/162)

## 2.10.0
  [@fortmarek](https://github.com/fortmarek)
  [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)
  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)

## 2.7.2


### New Features

* Updated to Stencil 0.15.0, which contains many improvements, chief amongst them is whitespace behaviour control.  
  [David Jennes](https://github.com/djbe)
  [#159](https://github.com/SwiftGen/StencilSwiftKit/pull/159)
* Added an `import` tag for reusing macro's in multiple templates from a common imported file.  
  [David Jennes](https://github.com/djbe)
  [#111](https://github.com/SwiftGen/StencilSwiftKit/pull/111)
* The `swiftIdentifier` now supports a `valid` mode, where it will do the bare minimum to get a valid identifier. I.e. it will not change the case of characters at all (compared to `normal` mode).  
  [David Jennes](https://github.com/djbe)
  [#160](https://github.com/SwiftGen/StencilSwiftKit/pull/160)

### Internal Changes

* Add `Danger` to check pull requests.  
  [David Jennes](https://github.com/djbe)
  [#158](https://github.com/SwiftGen/StencilSwiftKit/pull/158)

## 2.9.0

### New Features

* `stencilSwiftEnvironment` now accepts a list of paths (for the template loader) & extensions.  
  [David Jennes](https://github.com/djbe)
  [#154](https://github.com/SwiftGen/StencilSwiftKit/pull/154)
  [#156](https://github.com/SwiftGen/StencilSwiftKit/pull/156)
* The string filter `replace` can now accept an optional parameter `regex` to enable regular expressions, see the [documentation](Documentation/filters-strings.md) for more information.  
  [David Jennes](https://github.com/djbe)
  [JanGorman](https://github.com/JanGorman)
  [#123](https://github.com/SwiftGen/StencilSwiftKit/pull/123)
  [#155](https://github.com/SwiftGen/StencilSwiftKit/pull/155)

### Internal Changes

* Update to SwiftLint 0.47.1 and enable some extra SwiftLint rules.  
  [David Jennes](https://github.com/djbe)
  [#140](https://github.com/SwiftGen/StencilSwiftKit/pull/140)
  [#153](https://github.com/SwiftGen/StencilSwiftKit/pull/153)

## 2.8.0

### New Features

* Added support for Swift 5.  
  [David Jennes](https://github.com/djbe)
  [@fortmarek](https://github.com/fortmarek)
  [#119](https://github.com/SwiftGen/StencilSwiftKit/pull/119)
  [#122](https://github.com/SwiftGen/StencilSwiftKit/pull/122)
  [#125](https://github.com/SwiftGen/StencilSwiftKit/pull/125)
  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)
* Updated Stencil to the latest version (0.14).  
  [@fortmarek](https://github.com/fortmarek)
  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)

### Bug Fixes

* Fix crash with the `lowerFirstWord` filter when running on empty strings.  
  [@fortmarek](https://github.com/fortmarek)
  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)

### Internal Changes

* Update to SwiftLint 0.42.0 and enable some extra SwiftLint rules.  
  [David Jennes](https://github.com/djbe)
  [@fortmarek](https://github.com/fortmarek)
  [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)
  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)
  [#137](https://github.com/SwiftGen/StencilSwiftKit/pull/137)
* Switch from CircleCI to GitHub Actions.  
  [David Jennes](https://github.com/djbe)
  [#128](https://github.com/SwiftGen/StencilSwiftKit/pull/128)
* Dropped support for Swift 4.2.  
  [David Jennes](https://github.com/djbe)
  [#132](https://github.com/SwiftGen/StencilSwiftKit/pull/132)
* Switched the whole project over to use Swift Package Manager, restructuring some of the internals in the process.  
  [David Jennes](https://github.com/djbe)
  [#130](https://github.com/SwiftGen/StencilSwiftKit/pull/130)
* Made the filter implementations public, so they can be used in other libraries.  
  [David Jennes](https://github.com/djbe)
  [#136](https://github.com/SwiftGen/StencilSwiftKit/pull/136)

## 2.7.2

### Bug Fixes

* `Parameters`: ensure the `flatten` function correctly handles a flag with a `false` value.  
  [David Jennes](https://github.com/djbe)
  [#108](https://github.com/SwiftGen/StencilSwiftKit/pull/108)

### Internal Changes

* Update to SwiftLint 0.30.1 and enable some extra SwiftLint rules.  
  [David Jennes](https://github.com/djbe)
  [#112](https://github.com/SwiftGen/StencilSwiftKit/pull/112)
  [#114](https://github.com/SwiftGen/StencilSwiftKit/pull/114)

## 2.7.1

### Bug Fixes

* `swiftIdentifier`: fix crash on empty string.  
  [David Jennes](https://github.com/djbe)
  [#105](https://github.com/SwiftGen/StencilSwiftKit/pull/105)

## 2.7.0

### New Features

* Updated Stencil to the latest version (0.13).  
  [David Jennes](https://github.com/djbe)
  [#103](https://github.com/SwiftGen/StencilSwiftKit/pull/103)

### Internal Changes

* Improved the documentation of string filters a bit for a better overview of the inputs & outputs.  
  [David Jennes](https://github.com/djbe)
  [#102](https://github.com/SwiftGen/StencilSwiftKit/pull/102)
* Updated to latest Xcode (10.0).  
  [David Jennes](https://github.com/djbe)
  [#103](https://github.com/SwiftGen/StencilSwiftKit/pull/103)

## 2.6.0

### New Features

* The `set` tag can now directly accept an expression as value, see the [documentation](Documentation/tag-set.md) for an explanation on how this differs with the normal `set`/`endset` pair.  
  [David Jennes](https://github.com/djbe)
  [#87](https://github.com/SwiftGen/StencilSwiftKit/pull/87)
* Updated Stencil to the latest version (0.12.1).  
  [David Jennes](https://github.com/djbe)
  [#95](https://github.com/SwiftGen/StencilSwiftKit/pull/95)
  [#99](https://github.com/SwiftGen/StencilSwiftKit/pull/99)

### Bug fixes

* Fixed using filter expression in call node.  
  [Ilya Puchka](https://github.com/ilyapuchka)
  [#85](https://github.com/SwiftGen/StencilSwiftKit/pull/85)
* Fixed compilation issue with Xcode 10 & Swift 4.2 by adding hints to help the compiler.  
  [Olivier Halligon](https://github.com/AliSoftware)
  [#93](https://github.com/SwiftGen/StencilSwiftKit/pull/93)
* Migrated to PathKit for url filters. The dirname will return '.' for a filename without base directory.  
  [Rahul Katariya](https://github.com/RahulKatariya)
  [Philip Jander](https://github.com/janderit)
  [#94](https://github.com/SwiftGen/StencilSwiftKit/pull/94)

### Internal Changes

* Updated to latest Xcode (9.3.0).  
  [David Jennes](https://github.com/djbe)
  [#86](https://github.com/SwiftGen/StencilSwiftKit/pull/86)
* Update to SwiftLint 0.27 and enable some extra SwiftLint rules.  
  [David Jennes](https://github.com/djbe)
  [#96](https://github.com/SwiftGen/StencilSwiftKit/pull/96)
* Test Linux SPM support in CI.  
  [David Jennes](https://github.com/janderit)
  [#90](https://github.com/SwiftGen/StencilSwiftKit/pull/90)

## 2.5.0

### New Features

* Updated Stencil to the latest version (0.11.0).  
  [David Jennes](https://github.com/djbe)
  [#83](https://github.com/SwiftGen/StencilSwiftKit/pull/83)

### Internal Changes

* Switched to using SwiftLint via CocoaPods instead of our own install scripts.  
  [David Jennes](https://github.com/djbe)
  [#78](https://github.com/SwiftGen/StencilSwiftKit/pull/78)
* Enabled some extra SwiftLint rules for better code consistency.  
  [David Jennes](https://github.com/djbe)
  [#79](https://github.com/SwiftGen/StencilSwiftKit/pull/79)
* Migrated to CircleCI 2.0.  
  [David Jennes](https://github.com/djbe)
  [#81](https://github.com/SwiftGen/StencilSwiftKit/pull/81)
* Migrated to Swift 4, and dropped support for Swift 3.  
  [David Jennes](https://github.com/djbe)
  [#80](https://github.com/SwiftGen/StencilSwiftKit/pull/80)

## 2.4.0

### New Features

* Add `!` counterpart for strings boolean filters.  
  [Antondomashnev](https://github.com/antondomashnev)
  [#68](https://github.com/SwiftGen/StencilSwiftKit/pull/68)
* Updated Stencil to the latest version (0.10.1).  
  [Ilya Puchka](https://github.com/ilyapuchka)
  [#73](https://github.com/SwiftGen/StencilSwiftKit/pull/73)

## 2.3.0

### New Features

* Added `Parameters.flatten(dictionary:)` method to do the opposite of
  `Parameters.parse(items:)` and turn a dictionary into the list of parameters to pass from the command line.  
  [Olivier Halligon](https://github.com/AliSoftware)
  [#70](https://github.com/SwiftGen/StencilSwiftKit/pull/70)

### Bug Fixes

* Workaround for `parseString` to support `NSString`.  
  [Antondomashnev](https://github.com/antondomashnev)
  [#68](https://github.com/SwiftGen/StencilSwiftKit/pull/68)

## 2.2.0

### New Features

* Accept `LosslessStringConvertible` input for strings filters.  
  [Antondomashnev](https://github.com/antondomashnev)
  [#65](https://github.com/SwiftGen/StencilSwiftKit/pull/65)
* `StencilContext.enrich` now also accept a Dictionary for specifying parameters
  (in preparation for supporting Config files in SwiftGen).  
  [Olivier Halligon](https://github.com/AliSoftware)
  [#66](https://github.com/SwiftGen/StencilSwiftKit/pull/66)

### Internal Changes

* Refactoring of `Filters+Strings`.  
  [Antondomashnev](https://github.com/antondomashnev)
  [#63](https://github.com/SwiftGen/StencilSwiftKit/pull/63)

## 2.1.0

### New Features

* Added the `basename` and `dirname` string filters for getting a filename, or parent folder (respectively), out of a path.  
  [David Jennes](https://github.com/djbe)
  [#60](https://github.com/SwiftGen/StencilSwiftKit/pull/60)
* Modify the `swiftIdentifier` string filter to accept an optional "pretty" mode, to also apply the `snakeToCamelCase` filter and other manipulations if needed for a "prettier" but still valid identifier.  
  [David Jennes](https://github.com/djbe)
  [#61](https://github.com/SwiftGen/StencilSwiftKit/pull/61)

### Internal Changes

* Ensure `swiftlint` is run using `bundler`.  
  [David Jennes](https://github.com/djbe)
  [#59](https://github.com/SwiftGen/StencilSwiftKit/pull/59)

## 2.0.1

* Fix compilation on Linux.  
  [JP Simard](https://github.com/jpsim)
  [#56](https://github.com/SwiftGen/StencilSwiftKit/pull/56)

## 2.0.0

Due to the removal of legacy code, there are a few breaking changes in this new version that affect both template writers as well as developers. We've provided a migration guide to help you through these changes, which you can find here:
[Migration Guide for 2.0](Documentation/MigrationGuide.md#stencilswiftkit-20-swiftgen-50)

### Breaking Changes

* The `ParametersError` enum has been replaced by the `Parameters.Error` nested type.  
  [Olivier Halligon](https://github.com/AliGator)
  [#37](https://github.com/SwiftGen/StencilSwiftKit/issues/37)
* The `FilterError` enum has been replaced by the `Filters.Error` nested type.  
  [Olivier Halligon](https://github.com/AliGator)
  [#37](https://github.com/SwiftGen/StencilSwiftKit/issues/37)
* The filters in `StringFilters` and `NumFilters` are now located under `Filters.Strings` and `Filters.Numbers`.  
  [Olivier Halligon](https://github.com/AliGator)
  [#40](https://github.com/SwiftGen/StencilSwiftKit/issues/40)
* Removed the `join` filter, as it's now integrated in `Stencil` proper.  
  [David Jennes](https://github.com/djbe)
  [#10](https://github.com/SwiftGen/StencilSwiftKit/issues/10)
* Refactored the `snakeToCamelCase` filter to now accept an (optional) boolean parameter to control the `noPrefix` behaviour.  
  [David Jennes](https://github.com/djbe)
  [#41](https://github.com/SwiftGen/StencilSwiftKit/issues/41)
* Rename the `stringToSwiftIdentifier` function to `swiftIdentifier` to better match the other method names.  
  [David Jennes](https://github.com/djbe)
  [#46](https://github.com/SwiftGen/StencilSwiftKit/issues/46)

### New Features

* Added the `contains`, `replace`, `hasPrefix`, `hasSuffix`, `lowerFirstLetter` filters for strings.  
  [Antondomashnev](https://github.com/antondomashnev)
  [#54](https://github.com/SwiftGen/StencilSwiftKit/pull/54)
* Added the `removeNewlines` filter to remove newlines (and spaces) from a string.  
  [David Jennes](https://github.com/djbe)
  [#47](https://github.com/SwiftGen/StencilSwiftKit/issues/47)
  [#48](https://github.com/SwiftGen/StencilSwiftKit/issues/48)

### Bug Fixes

* Fix `snakeToCamelCase` parameters information in README.  
  [Liquidsoul](https://github.com/Liquidsoul)
  [#45](https://github.com/SwiftGen/StencilSwiftKit/issues/45)

## 1.0.2

### New Features

* Added camelToSnakeCase filter.  
  [Gyuri Grell](https://github.com/ggrell)
  [#24](https://github.com/SwiftGen/StencilSwiftKit/pull/24)

### Bug Fixes

* The context enrich function won't overwrite existing values in the `env` and `param` variables.  
  [David Jennes](https://github.com/djbe)
  [#29](https://github.com/SwiftGen/StencilSwiftKit/issues/29)

### Internal Changes

* Further refactor the Rakefile into rakelibs, and add a Gemfile for gem dependencies.  
  [David Jennes](https://github.com/djbe)
  [#28](https://github.com/SwiftGen/StencilSwiftKit/issues/28)
  [#31](https://github.com/SwiftGen/StencilSwiftKit/issues/31)
* Update Stencil to 0.9.0 and update project to Xcode 8.3.  
  [Diogo Tridapalli](https://github.com.diogot)
  [#32](https://github.com/SwiftGen/StencilSwiftKit/pull/32)
* Added documentation for tags and filters.  
  [David Jennes](https://github.com/djbe)
  [#12](https://github.com/SwiftGen/StencilSwiftKit/pull/12)

### Deprecations

* The `ParametersError` enum has been replaced by the `Parameters.Error` nested type.
  `ParametersError` still works (it is now `typealias`) but will be removed in the
  next major release.  
  [Olivier Halligon](https://github.com/AliGator)
* The `FilterError` enum has been replaced by the `Filters.Error` nested type.
  `FilterError` still works (it is now `typealias`) but will be removed in the
  next major release.  
  [Olivier Halligon](https://github.com/AliGator)

## 1.0.1

### Internal Changes

* Switch from Travis CI to Circle CI, clean up the Rakefile in the process.  
  [David Jennes](https://github.com/djbe)
  [#20](https://github.com/SwiftGen/StencilSwiftKit/issues/20)
  [#25](https://github.com/SwiftGen/StencilSwiftKit/issues/25)
* Fixed SPM dependency in `Package.swift`.  
  [Krzysztof Zabłocki](https://github.com/krzysztofzablocki)
  [#26](https://github.com/SwiftGen/StencilSwiftKit/pull/26/files)

## 1.0.0

### New Features

* Added support for Swift Package Manager.  
  [Krzysztof Zabłocki](https://github.com/krzysztofzablocki)
  [#15](https://github.com/SwiftGen/StencilSwiftKit/issues/15)
* Added `MapNode` to apply a `map` operator to an array.
  You can now use `{% map someArray into result using item %}`
  to do the equivalent of the `result = someArray.map { item in … }` Swift code.  
  [David Jennes](https://github.com/djbe)
  [#11](https://github.com/SwiftGen/StencilSwiftKit/pull/11)
* Add a "parameters parser" able to transform parameters passed as a set of strings
  (`a=1 b.x=2 b.y=3 c=4 c=5`) — typically provided as the command line arguments of a CLI
   — into a Dictionary suitable for Stencil contexts.  
  [David Jennes](https://github.com/djbe)
  [#8](https://github.com/SwiftGen/StencilSwiftKit/pull/8)
* Add a `StencilContext.enrich` function to enrich Stencil contexts with `param` and `env` dictionaries.  
  The `param` dictionary typically contains parameters parsed via the parameters parser above.  
  The `env` dictionary contains all the environment variables. You can thus access them in
  your templates using `env.USER`, `env.LANG`, `env.PRODUCT_MODULE_NAME`, etc.  
  [#19](https://github.com/SwiftGen/StencilSwiftKit/pull/19)

### Internal Changes

* Renamed `SwiftTemplate` to `StencilSwiftTemplate`.  
  [David Jennes](https://github.com/djbe)
  [#14](https://github.com/SwiftGen/StencilSwiftKit/issues/14)
* Refactor stencil swift extensions registration for easier use with an existing `Extension`.  
  [David Jennes](https://github.com/djbe)
  [#16](https://github.com/SwiftGen/StencilSwiftKit/issues/16)
* Refactor stencil node tests to not use templates and output files.  
  [David Jennes](https://github.com/djbe)
  [#17](https://github.com/SwiftGen/StencilSwiftKit/issues/17)

## Pre-1.0.0

_See SwitftGen's own CHANGELOG pre SwiftGen 4.2 version, before the refactoring that led us to split the code in frameworks_

<MSG> Add changelog entry

<DFF> @@ -32,6 +32,9 @@ _None_
   [@fortmarek](https://github.com/fortmarek)
   [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)
   [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)
+* Switch from CircleCI to GitHub Actions.  
+  [David Jennes](https://github.com/djbe)
+  [#128](https://github.com/SwiftGen/StencilSwiftKit/pull/128)
 
 ## 2.7.2
 

{'commit': 'diff --git a/CHANGELOG.md b/CHANGELOG.md\nindex 92db25e..4abae7b 100644\n--- a/CHANGELOG.md\n+++ b/CHANGELOG.md\n@@ -32,6 +32,9 @@ _None_\n   [@fortmarek](https://github.com/fortmarek)\n   [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)\n   [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n+* Switch from CircleCI to GitHub Actions.  \n+  [David Jennes](https://github.com/djbe)\n+  [#128](https://github.com/SwiftGen/StencilSwiftKit/pull/128)\n \n ## 2.7.2\n \n', 'commit_subject': 'Add changelog entry', 'repo_name': 'SwiftGen/StencilSwiftKit', 'committer': {'name': 'David Jennes', 'email': 'c375efddfb84e083826563fa74f94e014b2f51f1@gmail.com', 'time_sec': '1602711580', 'tz_offset': '120', 'date': {'seconds': '1602711580'}}, 'commit_tree': 'f106cd7b1e8ae6d3d192461c7f9e327bc4daa557', 'commit_message': 'Add changelog entry\n', 'language_name': 'Swift', 'license': 'mit', 'hunks': '@@ -32,6 +32,9 @@ _None_\n   [@fortmarek](https://github.com/fortmarek)\n   [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)\n   [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n+* Switch from CircleCI to GitHub Actions.  \n+  [David Jennes](https://github.com/djbe)\n+  [#128](https://github.com/SwiftGen/StencilSwiftKit/pull/128)\n \n ## 2.7.2\n \n', 'addition_count': 3, 'deletion_count': 0, 'src_file': 'a/CHANGELOG.md', 'tgt_file': 'b/CHANGELOG.md', 'file_extension': '.md', 'before_file': '# StencilSwiftKit CHANGELOG\n\n---\n\n## Stable Branch\n\n### Breaking Changes\n\n_None_\n\n### New Features\n\n_None_\n\n### Bug Fixes\n\n_None_\n\n### Internal Changes\n\n_None_\n\n## 2.10.1\n\n### Internal Changes\n\n* Pin `Komondor` to 1.1.3, to avoid issues with SPM for other packages depending on this package.  \n  [redryerye](https://github.com/redryerye)\n  [#162](https://github.com/SwiftGen/StencilSwiftKit/pull/162)\n\n## 2.10.0\n  [@fortmarek](https://github.com/fortmarek)\n  [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)\n  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n\n## 2.7.2\n\n\n### New Features\n\n* Updated to Stencil 0.15.0, which contains many improvements, chief amongst them is whitespace behaviour control.  \n  [David Jennes](https://github.com/djbe)\n  [#159](https://github.com/SwiftGen/StencilSwiftKit/pull/159)\n* Added an `import` tag for reusing macro\'s in multiple templates from a common imported file.  \n  [David Jennes](https://github.com/djbe)\n  [#111](https://github.com/SwiftGen/StencilSwiftKit/pull/111)\n* The `swiftIdentifier` now supports a `valid` mode, where it will do the bare minimum to get a valid identifier. I.e. it will not change the case of characters at all (compared to `normal` mode).  \n  [David Jennes](https://github.com/djbe)\n  [#160](https://github.com/SwiftGen/StencilSwiftKit/pull/160)\n\n### Internal Changes\n\n* Add `Danger` to check pull requests.  \n  [David Jennes](https://github.com/djbe)\n  [#158](https://github.com/SwiftGen/StencilSwiftKit/pull/158)\n\n## 2.9.0\n\n### New Features\n\n* `stencilSwiftEnvironment` now accepts a list of paths (for the template loader) & extensions.  \n  [David Jennes](https://github.com/djbe)\n  [#154](https://github.com/SwiftGen/StencilSwiftKit/pull/154)\n  [#156](https://github.com/SwiftGen/StencilSwiftKit/pull/156)\n* The string filter `replace` can now accept an optional parameter `regex` to enable regular expressions, see the [documentation](Documentation/filters-strings.md) for more information.  \n  [David Jennes](https://github.com/djbe)\n  [JanGorman](https://github.com/JanGorman)\n  [#123](https://github.com/SwiftGen/StencilSwiftKit/pull/123)\n  [#155](https://github.com/SwiftGen/StencilSwiftKit/pull/155)\n\n### Internal Changes\n\n* Update to SwiftLint 0.47.1 and enable some extra SwiftLint rules.  \n  [David Jennes](https://github.com/djbe)\n  [#140](https://github.com/SwiftGen/StencilSwiftKit/pull/140)\n  [#153](https://github.com/SwiftGen/StencilSwiftKit/pull/153)\n\n## 2.8.0\n\n### New Features\n\n* Added support for Swift 5.  \n  [David Jennes](https://github.com/djbe)\n  [@fortmarek](https://github.com/fortmarek)\n  [#119](https://github.com/SwiftGen/StencilSwiftKit/pull/119)\n  [#122](https://github.com/SwiftGen/StencilSwiftKit/pull/122)\n  [#125](https://github.com/SwiftGen/StencilSwiftKit/pull/125)\n  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n* Updated Stencil to the latest version (0.14).  \n  [@fortmarek](https://github.com/fortmarek)\n  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n\n### Bug Fixes\n\n* Fix crash with the `lowerFirstWord` filter when running on empty strings.  \n  [@fortmarek](https://github.com/fortmarek)\n  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n\n### Internal Changes\n\n* Update to SwiftLint 0.42.0 and enable some extra SwiftLint rules.  \n  [David Jennes](https://github.com/djbe)\n  [@fortmarek](https://github.com/fortmarek)\n  [#116](https://github.com/SwiftGen/StencilSwiftKit/pull/116)\n  [#127](https://github.com/SwiftGen/StencilSwiftKit/pull/127)\n  [#137](https://github.com/SwiftGen/StencilSwiftKit/pull/137)\n* Switch from CircleCI to GitHub Actions.  \n  [David Jennes](https://github.com/djbe)\n  [#128](https://github.com/SwiftGen/StencilSwiftKit/pull/128)\n* Dropped support for Swift 4.2.  \n  [David Jennes](https://github.com/djbe)\n  [#132](https://github.com/SwiftGen/StencilSwiftKit/pull/132)\n* Switched the whole project over to use Swift Package Manager, restructuring some of the internals in the process.  \n  [David Jennes](https://github.com/djbe)\n  [#130](https://github.com/SwiftGen/StencilSwiftKit/pull/130)\n* Made the filter implementations public, so they can be used in other libraries.  \n  [David Jennes](https://github.com/djbe)\n  [#136](https://github.com/SwiftGen/StencilSwiftKit/pull/136)\n\n## 2.7.2\n\n### Bug Fixes\n\n* `Parameters`: ensure the `flatten` function correctly handles a flag with a `false` value.  \n  [David Jennes](https://github.com/djbe)\n  [#108](https://github.com/SwiftGen/StencilSwiftKit/pull/108)\n\n### Internal Changes\n\n* Update to SwiftLint 0.30.1 and enable some extra SwiftLint rules.  \n  [David Jennes](https://github.com/djbe)\n  [#112](https://github.com/SwiftGen/StencilSwiftKit/pull/112)\n  [#114](https://github.com/SwiftGen/StencilSwiftKit/pull/114)\n\n## 2.7.1\n\n### Bug Fixes\n\n* `swiftIdentifier`: fix crash on empty string.  \n  [David Jennes](https://github.com/djbe)\n  [#105](https://github.com/SwiftGen/StencilSwiftKit/pull/105)\n\n## 2.7.0\n\n### New Features\n\n* Updated Stencil to the latest version (0.13).  \n  [David Jennes](https://github.com/djbe)\n  [#103](https://github.com/SwiftGen/StencilSwiftKit/pull/103)\n\n### Internal Changes\n\n* Improved the documentation of string filters a bit for a better overview of the inputs & outputs.  \n  [David Jennes](https://github.com/djbe)\n  [#102](https://github.com/SwiftGen/StencilSwiftKit/pull/102)\n* Updated to latest Xcode (10.0).  \n  [David Jennes](https://github.com/djbe)\n  [#103](https://github.com/SwiftGen/StencilSwiftKit/pull/103)\n\n## 2.6.0\n\n### New Features\n\n* The `set` tag can now directly accept an expression as value, see the [documentation](Documentation/tag-set.md) for an explanation on how this differs with the normal `set`/`endset` pair.  \n  [David Jennes](https://github.com/djbe)\n  [#87](https://github.com/SwiftGen/StencilSwiftKit/pull/87)\n* Updated Stencil to the latest version (0.12.1).  \n  [David Jennes](https://github.com/djbe)\n  [#95](https://github.com/SwiftGen/StencilSwiftKit/pull/95)\n  [#99](https://github.com/SwiftGen/StencilSwiftKit/pull/99)\n\n### Bug fixes\n\n* Fixed using filter expression in call node.  \n  [Ilya Puchka](https://github.com/ilyapuchka)\n  [#85](https://github.com/SwiftGen/StencilSwiftKit/pull/85)\n* Fixed compilation issue with Xcode 10 & Swift 4.2 by adding hints to help the compiler.  \n  [Olivier Halligon](https://github.com/AliSoftware)\n  [#93](https://github.com/SwiftGen/StencilSwiftKit/pull/93)\n* Migrated to PathKit for url filters. The dirname will return \'.\' for a filename without base directory.  \n  [Rahul Katariya](https://github.com/RahulKatariya)\n  [Philip Jander](https://github.com/janderit)\n  [#94](https://github.com/SwiftGen/StencilSwiftKit/pull/94)\n\n### Internal Changes\n\n* Updated to latest Xcode (9.3.0).  \n  [David Jennes](https://github.com/djbe)\n  [#86](https://github.com/SwiftGen/StencilSwiftKit/pull/86)\n* Update to SwiftLint 0.27 and enable some extra SwiftLint rules.  \n  [David Jennes](https://github.com/djbe)\n  [#96](https://github.com/SwiftGen/StencilSwiftKit/pull/96)\n* Test Linux SPM support in CI.  \n  [David Jennes](https://github.com/janderit)\n  [#90](https://github.com/SwiftGen/StencilSwiftKit/pull/90)\n\n## 2.5.0\n\n### New Features\n\n* Updated Stencil to the latest version (0.11.0).  \n  [David Jennes](https://github.com/djbe)\n  [#83](https://github.com/SwiftGen/StencilSwiftKit/pull/83)\n\n### Internal Changes\n\n* Switched to using SwiftLint via CocoaPods instead of our own install scripts.  \n  [David Jennes](https://github.com/djbe)\n  [#78](https://github.com/SwiftGen/StencilSwiftKit/pull/78)\n* Enabled some extra SwiftLint rules for better code consistency.  \n  [David Jennes](https://github.com/djbe)\n  [#79](https://github.com/SwiftGen/StencilSwiftKit/pull/79)\n* Migrated to CircleCI 2.0.  \n  [David Jennes](https://github.com/djbe)\n  [#81](https://github.com/SwiftGen/StencilSwiftKit/pull/81)\n* Migrated to Swift 4, and dropped support for Swift 3.  \n  [David Jennes](https://github.com/djbe)\n  [#80](https://github.com/SwiftGen/StencilSwiftKit/pull/80)\n\n## 2.4.0\n\n### New Features\n\n* Add `!` counterpart for strings boolean filters.  \n  [Antondomashnev](https://github.com/antondomashnev)\n  [#68](https://github.com/SwiftGen/StencilSwiftKit/pull/68)\n* Updated Stencil to the latest version (0.10.1).  \n  [Ilya Puchka](https://github.com/ilyapuchka)\n  [#73](https://github.com/SwiftGen/StencilSwiftKit/pull/73)\n\n## 2.3.0\n\n### New Features\n\n* Added `Parameters.flatten(dictionary:)` method to do the opposite of\n  `Parameters.parse(items:)` and turn a dictionary into the list of parameters to pass from the command line.  \n  [Olivier Halligon](https://github.com/AliSoftware)\n  [#70](https://github.com/SwiftGen/StencilSwiftKit/pull/70)\n\n### Bug Fixes\n\n* Workaround for `parseString` to support `NSString`.  \n  [Antondomashnev](https://github.com/antondomashnev)\n  [#68](https://github.com/SwiftGen/StencilSwiftKit/pull/68)\n\n## 2.2.0\n\n### New Features\n\n* Accept `LosslessStringConvertible` input for strings filters.  \n  [Antondomashnev](https://github.com/antondomashnev)\n  [#65](https://github.com/SwiftGen/StencilSwiftKit/pull/65)\n* `StencilContext.enrich` now also accept a Dictionary for specifying parameters\n  (in preparation for supporting Config files in SwiftGen).  \n  [Olivier Halligon](https://github.com/AliSoftware)\n  [#66](https://github.com/SwiftGen/StencilSwiftKit/pull/66)\n\n### Internal Changes\n\n* Refactoring of `Filters+Strings`.  \n  [Antondomashnev](https://github.com/antondomashnev)\n  [#63](https://github.com/SwiftGen/StencilSwiftKit/pull/63)\n\n## 2.1.0\n\n### New Features\n\n* Added the `basename` and `dirname` string filters for getting a filename, or parent folder (respectively), out of a path.  \n  [David Jennes](https://github.com/djbe)\n  [#60](https://github.com/SwiftGen/StencilSwiftKit/pull/60)\n* Modify the `swiftIdentifier` string filter to accept an optional "pretty" mode, to also apply the `snakeToCamelCase` filter and other manipulations if needed for a "prettier" but still valid identifier.  \n  [David Jennes](https://github.com/djbe)\n  [#61](https://github.com/SwiftGen/StencilSwiftKit/pull/61)\n\n### Internal Changes\n\n* Ensure `swiftlint` is run using `bundler`.  \n  [David Jennes](https://github.com/djbe)\n  [#59](https://github.com/SwiftGen/StencilSwiftKit/pull/59)\n\n## 2.0.1\n\n* Fix compilation on Linux.  \n  [JP Simard](https://github.com/jpsim)\n  [#56](https://github.com/SwiftGen/StencilSwiftKit/pull/56)\n\n## 2.0.0\n\nDue to the removal of legacy code, there are a few breaking changes in this new version that affect both template writers as well as developers. We\'ve provided a migration guide to help you through these changes, which you can find here:\n[Migration Guide for 2.0](Documentation/MigrationGuide.md#stencilswiftkit-20-swiftgen-50)\n\n### Breaking Changes\n\n* The `ParametersError` enum has been replaced by the `Parameters.Error` nested type.  \n  [Olivier Halligon](https://github.com/AliGator)\n  [#37](https://github.com/SwiftGen/StencilSwiftKit/issues/37)\n* The `FilterError` enum has been replaced by the `Filters.Error` nested type.  \n  [Olivier Halligon](https://github.com/AliGator)\n  [#37](https://github.com/SwiftGen/StencilSwiftKit/issues/37)\n* The filters in `StringFilters` and `NumFilters` are now located under `Filters.Strings` and `Filters.Numbers`.  \n  [Olivier Halligon](https://github.com/AliGator)\n  [#40](https://github.com/SwiftGen/StencilSwiftKit/issues/40)\n* Removed the `join` filter, as it\'s now integrated in `Stencil` proper.  \n  [David Jennes](https://github.com/djbe)\n  [#10](https://github.com/SwiftGen/StencilSwiftKit/issues/10)\n* Refactored the `snakeToCamelCase` filter to now accept an (optional) boolean parameter to control the `noPrefix` behaviour.  \n  [David Jennes](https://github.com/djbe)\n  [#41](https://github.com/SwiftGen/StencilSwiftKit/issues/41)\n* Rename the `stringToSwiftIdentifier` function to `swiftIdentifier` to better match the other method names.  \n  [David Jennes](https://github.com/djbe)\n  [#46](https://github.com/SwiftGen/StencilSwiftKit/issues/46)\n\n### New Features\n\n* Added the `contains`, `replace`, `hasPrefix`, `hasSuffix`, `lowerFirstLetter` filters for strings.  \n  [Antondomashnev](https://github.com/antondomashnev)\n  [#54](https://github.com/SwiftGen/StencilSwiftKit/pull/54)\n* Added the `removeNewlines` filter to remove newlines (and spaces) from a string.  \n  [David Jennes](https://github.com/djbe)\n  [#47](https://github.com/SwiftGen/StencilSwiftKit/issues/47)\n  [#48](https://github.com/SwiftGen/StencilSwiftKit/issues/48)\n\n### Bug Fixes\n\n* Fix `snakeToCamelCase` parameters information in README.  \n  [Liquidsoul](https://github.com/Liquidsoul)\n  [#45](https://github.com/SwiftGen/StencilSwiftKit/issues/45)\n\n## 1.0.2\n\n### New Features\n\n* Added camelToSnakeCase filter.  \n  [Gyuri Grell](https://github.com/ggrell)\n  [#24](https://github.com/SwiftGen/StencilSwiftKit/pull/24)\n\n### Bug Fixes\n\n* The context enrich function won\'t overwrite existing values in the `env` and `param` variables.  \n  [David Jennes](https://github.com/djbe)\n  [#29](https://github.com/SwiftGen/StencilSwiftKit/issues/29)\n\n### Internal Changes\n\n* Further refactor the Rakefile into rakelibs, and add a Gemfile for gem dependencies.  \n  [David Jennes](https://github.com/djbe)\n  [#28](https://github.com/SwiftGen/StencilSwiftKit/issues/28)\n  [#31](https://github.com/SwiftGen/StencilSwiftKit/issues/31)\n* Update Stencil to 0.9.0 and update project to Xcode 8.3.  \n  [Diogo Tridapalli](https://github.com.diogot)\n  [#32](https://github.com/SwiftGen/StencilSwiftKit/pull/32)\n* Added documentation for tags and filters.  \n  [David Jennes](https://github.com/djbe)\n  [#12](https://github.com/SwiftGen/StencilSwiftKit/pull/12)\n\n### Deprecations\n\n* The `ParametersError` enum has been replaced by the `Parameters.Error` nested type.\n  `ParametersError` still works (it is now `typealias`) but will be removed in the\n  next major release.  \n  [Olivier Halligon](https://github.com/AliGator)\n* The `FilterError` enum has been replaced by the `Filters.Error` nested type.\n  `FilterError` still works (it is now `typealias`) but will be removed in the\n  next major release.  \n  [Olivier Halligon](https://github.com/AliGator)\n\n## 1.0.1\n\n### Internal Changes\n\n* Switch from Travis CI to Circle CI, clean up the Rakefile in the process.  \n  [David Jennes](https://github.com/djbe)\n  [#20](https://github.com/SwiftGen/StencilSwiftKit/issues/20)\n  [#25](https://github.com/SwiftGen/StencilSwiftKit/issues/25)\n* Fixed SPM dependency in `Package.swift`.  \n  [Krzysztof Zabłocki](https://github.com/krzysztofzablocki)\n  [#26](https://github.com/SwiftGen/StencilSwiftKit/pull/26/files)\n\n## 1.0.0\n\n### New Features\n\n* Added support for Swift Package Manager.  \n  [Krzysztof Zabłocki](https://github.com/krzysztofzablocki)\n  [#15](https://github.com/SwiftGen/StencilSwiftKit/issues/15)\n* Added `MapNode` to apply a `map` operator to an array.\n  You can now use `{% map someArray into result using item %}`\n  to do the equivalent of the `result = someArray.map { item in … }` Swift code.  \n  [David Jennes](https://github.com/djbe)\n  [#11](https://github.com/SwiftGen/StencilSwiftKit/pull/11)\n* Add a "parameters parser" able to transform parameters passed as a set of strings\n  (`a=1 b.x=2 b.y=3 c=4 c=5`) — typically provided as the command line arguments of a CLI\n   — into a Dictionary suitable for Stencil contexts.  \n  [David Jennes](https://github.com/djbe)\n  [#8](https://github.com/SwiftGen/StencilSwiftKit/pull/8)\n* Add a `StencilContext.enrich` function to enrich Stencil contexts with `param` and `env` dictionaries.  \n  The `param` dictionary typically contains parameters parsed via the parameters parser above.  \n  The `env` dictionary contains all the environment variables. You can thus access them in\n  your templates using `env.USER`, `env.LANG`, `env.PRODUCT_MODULE_NAME`, etc.  \n  [#19](https://github.com/SwiftGen/StencilSwiftKit/pull/19)\n\n### Internal Changes\n\n* Renamed `SwiftTemplate` to `StencilSwiftTemplate`.  \n  [David Jennes](https://github.com/djbe)\n  [#14](https://github.com/SwiftGen/StencilSwiftKit/issues/14)\n* Refactor stencil swift extensions registration for easier use with an existing `Extension`.  \n  [David Jennes](https://github.com/djbe)\n  [#16](https://github.com/SwiftGen/StencilSwiftKit/issues/16)\n* Refactor stencil node tests to not use templates and output files.  \n  [David Jennes](https://github.com/djbe)\n  [#17](https://github.com/SwiftGen/StencilSwiftKit/issues/17)\n\n## Pre-1.0.0\n\n_See SwitftGen\'s own CHANGELOG pre SwiftGen 4.2 version, before the refactoring that led us to split the code in frameworks_\n', 'message': 'Add changelog entry\n', 'author_name': 'David Jennes', 'lang': 'md'}