All notable changes to Crinja will be documented in this file.
Compatibility with PCRE2 (Crystal 1.8)
Compatbility with Crystal 1.1
- Updates dependencies with more relaxed version restrictions
- Removes autogeneration for predicate method without suffix to avoid duplicate when conditions
- Fixes type bugs discovered through Crystal 1.1
- Adds GitHub actions
- Fixes some minor documentation bugs
- Improves
TagCycleException
- Adds
do
tag (#33, thanks @n-rodriguez) - Adds compatibility with Crystal >= 0.35.1 and Shards >= 0.11.0
- Adds support for mapping predicate methods
- Smaller cleanup and improvements
Compatibility with Crystal 0.35.0
Compatibility with Crystal 0.34.0
- Improvements to Makefile and CI setup
- Use
Log
framework from Crystal 0.34.0
This release brings compatibility with Crystal 0.32.1
This release brings compatibility with Crystal 0.29.0
- Rename
FeatureLibrary#aliasses
to#aliases
- Add experimental support for liquid syntax with
Crinja.liquid_support
This release doesn't add any new features but fixes compatibility with Crystal 0.27.0.
This release comes with some refactorings of the public API to make it easier to use. Most prominently, annotation based autogenerator for exposing object properties to the Crinja runtime were added.
require "crinja"
class User
include Crinja::Object::Auto
@[Crinja::Attribute]
def name : String
"john paul"
end
end
Crinja.new.from_string("{{ user.name }}").render({"user" => User.new}) # => "john paul"
Autogeneration of crinja_call
will be left for the next release.
Most other changes involve the CI infrastructure, with Circle CI taking over the main load from travis.
- (breaking-change) Replaced
Crinja::PyObject
byCrinja::Object
and renamed hook methods tocrinja_attribute
andcrinja_call
.getitem
hook has been removed. - (breaking-change) Added
Crinja::Object::Auto
for generating automatic bindings forcrinja_attribute
(previously provided byCrinja::PyObject.getattr
). The behaviour can be configured using annotationsCrinja::Attribute
andCrinja::Attributes
. - (breaking-change) Renamed
Crinja::Callable::Arguments
toCrinja::Arguments
. The API has been simplified by removing unused setters. - (breaking-change) Removed
Crinja::Arguments#[](key : Symbol)
. Use a string key instead. - (breaking-change) Renamed
Crinja::Callable::Arguments::UnknownArgumentException
toCrinja::Arguments.:UnknownArgumentError
. - (breaking-change) Renamed
Crinja::Callable::Arguments::ArgumentError
toCrinja::Arguments::Error
. - (breaking-change) Renamed
Crinja::PyTuple
toCrinja::Tuple
. - (breaking-change) Updated
BakedFileLoader
for compatibility withbaked_file_system 0.9.6
- Upgraded to Crystal 0.26.1.
- Fixed number filters (
int
andfloat
) to not rely on raising an error. - Fixed
generate-docs
script. - Added
Makefile
. - Added Circle CI integration with nighly builds testing with Crystal nightly.
- Added integration tests for usage examples (
./examples
) in travis-ci and Circle CI. - Added automatic docs generation to circle CI workflow and removed it from travis-ci.
- Added formatter checks to CI checks.
- Added preliminary Windows support by removing dependency on
xml
. - Added this changelog.
- Improved reference to exmples in README.
This release updated Crinja to work with Crystal 0.25.1
Notable changes:
- (breaking-change) Renamed
Crinja::Environment
to justCrinja
- (breaking-change) Removed
Crinja::Type
in favour ofCrinja::Value
to avoid recursive aliases and reduce a lot of.as(Type)
castings all over the place. This change was similar toJSON::Type
->JSON::Any
in Crystal 0.25.0. - (breaking-change) Removed
Crinja::Bindings
. Some methods are obsolete withCrinja::Value
, others moved toCrinja
namespace. - Added dedicated documentation of Template Syntax