- Added
split()
builtin - Added support for byte arrays, represented as
ByteString
on the Haskell side
- Added builtin
apply
, making it possible to pass argument lists as arrays
- Added builtin
regex
module for POSIX regular expressions support
- Expose some internals of the
Run
type and the default implementations of built-in functions / filters
- Added built-ins:
partial
,zip
,zipwith
,compose
- Now compiles on GHC 8.4
- CLI: added a
system()
template function (for spawning subprocesses) - CLI accepts YAML
- Added
is
operator (also makes Ginger conform to Jinja2 test syntax) - Various bugfixes
- New builtins:
escaped
,in
, Python-style boolean operators,divisibleBy
,even
,odd
, and more - Boolean literals now also accepted in caps
- Improved documentation
GVal
instances forInteger
- Overridable delimiters
- Make concat() / ~ more generic (now also concatenates lists and dictionaries)
- CLI omits printing of
null
results. Useful when using as a filter. - Fixed excessive newlines in CLI output
- Expose parser error position details
- '|json' filter
StripBlocks
andLTrimBlocks
options+
tag modifier to override whitespace stripping
keepTrailingNewlines
option- Ability to pass parser options into parseGinger
- Runtime warnings
- Documentation fixes
- Haddock documentation fix
- Exceptions / exception handling.
- Marshalling and hoisting: it is now possible to fully marshal
GVal
s between arbitrary carrier monads, as long as suitable conversion functions are provided.
- Added map(), upper(), lower() functions
- Documentation fixes
- Release-related fixups
- Bugfixes wrt indentation mode
- Expose parser error pretty-printer from the library
- Indentation mode:
{% indent %}
introduces an indentation context
- Statements can now return values
- Added
do
expressions (lift statements into expressions)
- Fixed a parser bug related to whitespace in script mode
- Fixed the way local scopes work in script mode
- Documented script mode
- Script mode: alternative syntax that makes it easier to use Ginger as a scripting language, used inside {% script %} blocks.
- Various dependency issues fixed
- Added a
{% switch %}
statement