# Changelog
## 1.20.0 (2024-05-27)
- Support parenthesis in if statemetns
- Allow escaped newline and tab join separator
## 1.19.1 (2023-09-03)
- Minimum supported Rust version (MSRV) is now 1.63 due to transitive dependencies.
- Update crates.io metadata for the website
## 1.19.0 (2023-05-31)
- Revert change to glob path to not error if the path doesn't exist
- Allow macro definition in renderable template
## 1.18.1 (2023-03-15)
- Fix panic on invalid globs to Tera::new
## 1.18.0 (2023-03-08)
- Add `abs` filter
- Add `indent` filter
- Deprecate `get_json_pointer` in favour of `dotted_pointer`, a faster alternative
- Always canonicalize glob paths passed to Tera to workaround a globwalk bug
- Handle apostrophes in title case filter
- Some performance improvement
## 1.17.1 (2022-09-19)
- Make `get_random` use isize instead of i32 and bad error message
- Fix variables lookup when the evaluated key has a `.` or quotes
- Fix changed output of f64 from serde_json 1.0.85
## 1.17.0 (2022-08-14)
- Fix bug where operands in `in` operation were escaped before comparison
- Force chrono dep to be 0.4.20 minimum
- Better support for parenthesis in expression
## 1.16.0 (2022-06-10)
- Add a feature just for the urlencode builtin
- Fix bug in slice filter if start >= end
- Allow supplying a timezone to a timestamp for the date filter
## 1.15.0 (2021-11-03)
- Add `default` parameter to `get` filter
- `Tera::extend` now also copies over function
- Remove the new Context-local Tera function support, it was an accidental breaking change and will be added in v2 in some ways
instead
## 1.14.0 (2021-11-01) - YANKED as it added a generic to Context, a breaking change
- Ensure `Context` stays valid in Sync+Send, fixing an issue introduced in 1.13. 1.113 will be yanked.
## 1.13.0 (2021-10-17) - YANKED as it made Context not Send+Sync
- Add `default` parameter to `get` filter
- `Tera::extend` now also copies over function
- Add Context-local Tera functions
## 1.12.1 (2021-07-13)
- Remove unused feature of chrono
- Remove unwanted bloat in crate from accidental WASM files
## 1.12.0 (2021-06-29)
- Add `spaceless` filter from Django
## 1.11.0 (2021-06-14)
- Allow iterating on strings with `for`
## 1.10.0 (2021-05-21)
- Add `Tera::get_template_names`
## 1.9.0 (2021-05-16)
- Add `Context::remove`
## 1.8.0 (2021-04-21)
- Add `linebreaksbr` filter from Django
- Allow dots in context object key names
## 1.7.1 (2021-04-12)
- Fix parsing of filter arguments separated by whitespaces
## 1.7.0 (2021-03-07)
- Allow rendering to `std::io::Write`
- Follow symlinks in glob
- Allow including lists of templates
- Comment tags can now use whitespace control
## 1.6.1 (2020-12-29)
- Fix date filter sometimes panicking with some format input
## 1.6.0 (2020-12-19)
- Allow multiline function kwargs with trailing comma
- Add `Context::try_insert`
## 1.5.0 (2020-08-10)
- Add the concept of safe functions and filters
- Allow negative index on `slice` filter
## 1.4.0 (2020-07-24)
- Add `Context::get` and `Context::contains_key`
## 1.3.1 (2020-06-09)
- Fix `raw` tag swallowing all whitespace at beginning and end
- Make batch template sources generic
- Automatically add function/test/filter function name to their error message
## 1.3.0 (2020-05-16)
- Add a `urlencode_strict` filter
- Add more array literals feature in templates
- Make `filter` filter value argument optional
## 1.2.0 (2020-03-29)
- Add `trim_start`, `trim_end`, `trim_start_matches` and `trim_end_matches` filters
- Allow blocks in filter sections
## 1.1.0 (2020-03-08)
- Add Tera::render_str, like Tera::one_off but can use an existing Tera instance
## 1.0.2 (2020-01-13)
- Length filter now errors for things other than array, objects and strings. The fact that it was returning 0 before
for other types was something that should have been fixed before 1.0 but got forgotten and was considered a bug.
## 1.0.1 (2019-12-18)
- Fix filter sections not keeping whitespaces