2024-12-06 Verision 2.7.4 (Maven Central)
- Implement jinja2.ext.loopcontrols extensions (break and continue)
- Apply whitespace rules for LStrip and Trim to comment blocks
2024-09-12 Version 2.7.3 (Maven Central)
- Add support for numeric keys in map literal
- Add feature to consider undefined variable a TemplateError
- Improve Optional value serialization
- Fix bug where extends roots were processed inside of the RenderFilter
- Don't allow illegal characters in XmlAttrFilter
- Limit string length in
+
and~
operators - Fix various RuntimeExceptions in filters and functions
- Updates dependency versions
2024-02-12 Version 2.7.2 (Maven Central)
- Use interpreter's locale for strftime functions
- Prevent infinite hashCode recursion in PyList or PyMap
- Support aliasing macro function names in {% from %} tag
- Add whitespace trimming functionality for notes and expressions
- Add feature to prevent accidental expressions from being output
- Add length-limiting to |render filter and add |closehtml filter
- Add length-limiting to |tojson filter
- Make |pprint filter output in JSON format
- Allow for loop with
null
values - Add length-limiting when coercing strings
- Add
ECHO_UNDEFINED
feature - Various PRs for eager execution to support two-phase rendering.
2023-08-11 Version 2.7.1 (Maven Central)
- Introduce
{% do %}
blocks - Add warnings for unclosed tokens
- Fix
|default(null)
behavior - Improve EscapeJinjavaFilter
- Improve BeanELResolver Extensibility
- Add snake_case serialization config option
- Add generic node pre/post processors
- Upgrade jackson to 2.14.0
- Upgrade jsoup to 1.15.3
- Upgrade guava to 31.1
- Add feature flags to JinjavaConfig
- Make restricted methods and properties configurable
- Gracefully handle invalid escaped quotes
- Warn when datetime filters use null arguments
- Fix interpreter scope inside striptags filter
- Fix various RuntimeExceptions in filters and functions
- Various PRs for eager execution to support two-phase rendering.
2023-03-03 Version 2.7.0 (Maven Central)
- Use number operations for multiply and divide filters
- Add config to require whitespace in tokens
- Make reject filter the inverse of select filter
- Make ObjectMapper configurable via JinjavaConfig
- Limit rendering cycle detection to expression nodes
- Add URL decode filter
- Fix truthiness of numbers between 0 and 1
- Fix macro function scoping inside of another macro function
- Handle thread interrupts by throwing an InterpretException
- Fix right-side inline whitespace trimming
- Fix Jinjava functionality for duplicate macro functions and call tags
- Fix custom operator precedence
- Parse leading negatives in expression nodes
- add keys function to dictionary
- Update title filter to ignore special characters
- add unescape_html filter
- Move object unwrap behavior to config object
- Get best invoke method based on parameters
- Create format_number filter
- Get current date and time from a provider
- Create context method for checking if in for loop
- Filter duplicate template errors
- Fix various NullPointerExceptions in filters and functions
- Various changes to reduce non-deterministic behavior
- Various changes to improve datetime formatting and exception handling
- Various PRs for eager execution to support two-phase rendering.
2021-10-29 Version 2.6.0 (Maven Central)
- Create interface for object truth values
- Catch concurrent modification in for loop
- Add Originating Exception Message For A TemplateSyntaxException
- Throw a template error when attempting to divide by zero
- Make unixtimestamp behave the same as System.currentTimeMillis()
- handle null argument in range function
- Track Current Processed Node In The Context
- Add Base 64 encode and decode filters
2021-09-02 Version 2.5.10 (Maven Central)
- Make LazyExpression memoization disable-able
- Add new MapELResolver with type coercion to support accessing enum keys
- Add methods to remove error from interpreter, get the last error, and remove the last error
- Pass value of throwInterpreterErrors to child contexts
- Support Assignment Blocks with Set tags
- Handle spaces better in for loop expressions
- Support "not in"
- Set propertyResolved after evaluating the AbstractCallableMethod
- Limit infinite evaluation from recursive extends tags
- Fix striptags to clean HTML instead of parsing
- Various PRs for eager execution to support two-phase rendering.
2021-05-21 Version 2.5.9 (Maven Central)
2021-05-20 Version 2.5.8 (Maven Central)
- Various PRs for eager execution to support two-phase rendering.
- Add rangeLimit to JinjavaConfig
- Add namespace functionality
- Fix capitalize and title filters
2021-04-09 Version 2.5.7 (Maven Central)
- Various PRs for support EagerTokens and two-phase rendering via ChunkResolver.
- Preserve Raw Tags Config
- Change config name to preserveForFinalPass
- Ensure that after pushing the interpreter, it gets popped
- Python Booleans and Filter base with parsing
- toyaml/fromyaml filters
- Add ChunkResolver to partially resolve expressions
- Simply JinjavaConfig construction
- Add size limited pymaps and pylists
- Remove overrides for append and insert
- Filter upgrades to support kw params
- Check if list index is numeric before parsing to int
- Rethrow CollectionTooBigExceptions in resolver
- Add error for collection too big
- Fix args for aliased functions
- Add filter to interpret a string early
- Variable function evaluator
- Check that disabled library map isn't null
- Pyish String representations of objects
- Intial support for vsCodeTagSnippets
- Fix documentation for truncate function
- Fix bug with whitespace controls not applying properly
- Allow replace filter on non-strings
- Add function and filter to convert string to date
- Expose jinjava snippets throught the jinjava object
- Output pyish versions of objects using legacy override flag
- Trim before checking if expression is quoted
- Fix tuple parsing bug
- Fix NPE around code snippets documentation
2020-10-07 Version 2.5.6 (Maven Central)
- Accept ip address without network prefix in ipaddr('address') filter
- Expression test parity with jinja including isIterable
- Support IN operator for dictionaries
- Disallow adding a pyMap to itself
- Disallow adding a map to itself
2020-06-23 Version 2.5.5 (Maven Central)
- TagCycleException was thrown when rendering template that doesn't have any cycles
- Make global context thread-safe
- Defer variables used in deferred
- Check for nulls in range function
- Fix for "Equalto operator doesn't work in "or" statement (== does)"
2020-05-01 Version 2.5.4 (Maven Central)
- Remove hacky replaceL behavior
- Add over limit to template errors
- Fix several parse errors
- Add support for Custom Token Scanner Symbols
- Remove print statements from test
- Check for null Config
- Remove reference to TokenScannerSymbols in Nodes and Tokens
- Add to host blacklist for security
- Update blacklist error message copy
- Allow ELResolver to be configured
- Add interpreter to blacklist
2020-03-06 Version 2.5.3 (Maven Central)
- Return empty string for un-evaluated lazy expression
- Add millis precision to unixtimestamp function
- Fix implementation for slice filter
- Implement safe filter as SafeString and handle SafeString in filters, functions and expressions
- Add PyList support to ForTag
- Change DefaultFilter to implement AdvancedFilter
- Adds dict support for DefaultFilter
- Add basic deferred value support for from tag
- Fix template error line numbers
- Track dependencies in FromTag
- Lower logging level for truncate
- Handling for OutputTooBigException
- Serialize lazy expression as its underlying value
- Return image when calling toString for LazyExpression
- More supplier conversions
- Avoid tag cycles when keeping track of parent paths for blocks
- Add python list operations to PyList
- Fix NPE with lazy expression in intermediate expression resolution
- Create new class that lazily resolves
- Upgrade map filter to advanced filter, improve error messages, and pass through args for filters
- enable more checkstyle rules
- Add codeStyleChecker
2019-07-11 Version 2.5.2 (Maven Central)
- Add type conversion to collection expression tests
- Change initialization of JinjavaInterpreter to instantiation
- Resolve Failure on Unknown Incompatible with default filter
- Add initial support for resolving relative paths
- Add dummy object for validation mode
- Implements equals() and hashCode() methods for TemplateError
2019-06-07 Version 2.5.1 (Maven Central)
- Support more ipaddr filters
- Upgrade to newer basepom
- Support empty bracket implicit index syntax
- Support nominative date formats
- Add a warning for unclosed comments
- Add a warning when there is no matching start tag for an end tag
- Add child dependency to parent dependencies
- Rewrite sort filter to address several problems
- Fix cycle reference during serialization
- Add support for resolving relative paths in separate files
- Return long value from int filter if over max int length
- Use type converter when evaulting 'in'
- Only add max depth error when not in validation mode
- Expand documentation factory with new fields
- Allow ability to set a max recursion depth in config
2019-02-05 Version 2.5.0 (Maven Central)
- Render node in include tag in the same interpreter scopes
- Fix expression resolver in include and from tag
- Add root and log filters
- Update expression resolver to return null instead of blank string
- Expression resolver fixed in import tag
- Error and documentation overhaul
- Allow partial evalutation of templates
2019-02-05 Version 2.4.15 (Maven Central)
- Upgrade format filter to advanced filter
- Allow null in string expression tests
- Support negative indices in list slices
- Add max string length configuration
- Removed uses of
Throwables.propagate
- Allow tags to declare themselves safe for execution in validation mode
2019-01-08 Version 2.4.14 (Maven Central)
2019-01-07 Version 2.4.13 (Maven Central)
- Add support for expressions in selectattr and rejectattr
- Add filters for datetime arithmetic
- Add conversion to Java datetime format for strtotime
- Add set theory filters such as union, intersect and difference
- Add validation mode for extended syntax checking
- Better handling for out of range values in ranage function
2018-11-21 Version 2.4.12 (Maven Central)
2018-10-23 Version 2.4.11 (Maven Central)
2018-10-19 Version 2.4.10 (Maven Central)
2018-10-15 Version 2.4.9 (Maven Central)
- Add
ipaddr
filter to test valid IP addresses - Enable nested properties for
selectattr
andrejectattr
- Add
do
tag to evaluate expressions without print - Add support for timezone conversions in
datetimeformat
filter - Add
prefix
function foripaddr
filter
2018-09-07 Version 2.4.8 (Maven Central)
2018-08-31 Version 2.4.7 (Maven Central)
2018-08-29 Version 2.4.6 (Maven Central)
2018-08-16 Version 2.4.5 (Maven Central)
- Limit the number errors
- Detect fromTag cycle
- Make jinjajava interpreter render timings trackable
- Add raw object to group in groupby filter
- Register json filters
- Add filter to convert JSON string to Map
- Add filter to convert objects to JSON
- Deepen equalto expression test comparison
2018-07-10 Version 2.4.4 (Maven Central)
2018-06-13 Version 2.4.3 (Maven Central)
2018-06-01 Version 2.4.2 (Maven Central)
2018-04-22 Version 2.4.1 (Maven Central)
- Use
AdvancedFilter
forselectattr
filter - Java 9 Support
- Adds negation for expressions ("is not")
- Fix column numbers in syntax errors
- When reporting errors, preserve casing
- Populate
fieldName
inTemplateSyntaxException
s - Reintroduce stricter parsing in int and float filters
2018-02-26 Version 2.4.0 (Maven Central)
2018-02-09 Version 2.3.6 (Maven Central)
2018-01-26 Version 2.3.5 (Maven Central)
2017-11-30 Version 2.3.4 (Maven Central)
2017-11-16 Version 2.3.3 (Maven Central)
2017-11-14 Version 2.3.2 (Maven Central)
- select filter now supports expression tests with arguments like 'equalto'
TemplateError
s now include a scope depth
2017-10-30 Version 2.3.0 (Maven Central)
- Add column numbers to error messages
2017-10-24 Version 2.2.10 (Maven Central)
- Use code of bad syntax as field name for
TemplateSyntaxException
s
2017-08-31 Version 2.2.9 (Maven Central)
- Apply resolved functions, expressions, and values to all parents of Context object
2017-08-12 Version 2.2.8 (Maven Central)
- Prevent recursion in Jinjava.
- Fix failsOnUnknownTokens.
- Add EscapeJson filter.
2017-08-12 Version 2.2.7 (Maven Central)
- Delegate toString() method on PyMap
2017-08-03 Version 2.2.6 (Maven Central)
- Limit size of output when building strings
2017-08-02 Version 2.2.5 (Maven Central)
- Enable configuration of a non-random number generator for tests
2017-08-01 Version 2.2.4 (Maven Central)
- Allow the use of filters including upper case letters: #132
- Add function to apply resolved strings from one Context object to another: #133
2017-07-21 Version 2.2.3 (Maven Central)
- Make nested expressions configuration default to true.
2017-07-19 Version 2.2.2 (Maven Central)
- Disable interpretation of nested expressions with a configuration.
2017-06-14 Version 2.2.1 (Maven Central)
- Includes field name in unknown tag error
2017-05-12 Version 2.2.0 (Maven Central)
- Removes
FileResourceLocator
as a defaultResourceLocator
to close a security hole. See the README for details on how to reenable it.
2017-04-11 Version 2.1.19 (Maven Central)
- preserve order of named parameters
2017-04-10 Version 2.1.18 (Maven Central)
- fix bug when passing null argument to
filter
2017-03-31 Version 2.1.17 (Maven Central)
- added config option to limit the rendered output size
- added named parameter support for filters
- added
type()
function
2017-03-09 Version 2.1.16 (Maven Central)
- disabled functions, filters and tags now add to template errors rather than throwing a fatal exception
2017-01-18 Version 2.1.15 (Maven Central)
- shaded JUEL
- added
failOnUnknownTokens
mode which is similar to Jinja's StrictUndefined
2016-11-18 Version 2.1.14 (Maven Central)
- Enabled manual whitespace control by ending or closing tags with
{%-
or-%}
- Fixed issue with passing arguments to
rejectattr
Version 2.1.13 (Maven Central)
- Added support for disabling specific functions, filters and tags
Version 2.1.12 (Maven Central)
- Added ** and // operators
- Fixed issue with passing arguments to expression tests
Version 2.1.11 (Maven Central)
- Add additional specific error enums
- Add escapeJS filter
- Allow null expressions as target of replace filter
Version 2.1.10 (Maven Central)
Version 2.1.9 (Maven Central)
- Exclude 'caller' from recursive macro check
Version 2.1.8 (Maven Central)
- Add additional category information and error message tokens to TemplateError
- Add range function
- Update ListFilter to work with strings
- Do not allow macros to be called recursively
- Update checkstyle to 2.17
Version 2.1.7 (Maven Central)
- Updated RawTag to not evaluate tags nested within it
Version 2.1.6 (Maven Central)
- Added new bool filter to return boolean value from string
- Added record of expressions and values evalulated
Version 2.1.5 (Maven Central)
- Add support for java.util.Optional properties, nested properties in EL expressions
Version 2.1.4 (Maven Central)
- fixed ArrayIndexOutOfBoundsException when importing template with no trailing newline
Version 2.1.3 (Maven Central)
- Added two new expression tests for strings: "is string_startingwith" and "is string_containing"
- Added support for multi-variable set in set tag (@amannm)
- Added new detail dimension to TemplateError: ErrorItem
Version 2.1.2 (Maven Central)
- Use resolved path value in include tag cycle detection
- Store autoEscape flag in context outside of user-editable properties
- Store superBlock reference in context outside of user-editable properties
- make EL resolver read-only by default, expose as config parameter
- restrict certain methods/properties in object expressions
Version 2.1.1 (Maven Central)
- Better error messages for invalid assignment in expression
- Allow for locale-based date formatting in StrftimeFormatter
- Use configured locale for Functions.datetimeformat
Version 2.1.0 (Maven Central)
- Refactored node render logic to return richer OutputNode instances, removing a need for a special intermediate string value in text output
- Refactored cycle detection in import and include tags to remove use of special named vars in context
- Fix bug to properly detect cycles in extends tag
- Fix infinite recursion bug in resolveBlockStubs when block contains self-reference
Version 2.0.11 (Maven Central)
- Renaming JinjavaInterpreter.renderString() to renderFlat() to better signify its purpose
- Released build for jdk7 as version 2.0.11-java7
Version 2.0.10 (Maven Central)
- minor performance enhancements
Version 2.0.9 (Maven Central)
- update truncate_html filter to support preserving words by default, with an additional parameter to chop words at length
- added unique filter to remove duplicate objects from a sequence
- add support for global trim_blocks, lstrip_blocks config settings
Version 2.0.8 (Maven Central)
- Updated escape filter to apply to string representation of all objects, not just string instances
- Reworked variable resolution to use juel rather than custom approach
- Adding ability to track dependencies used in rendering templates
- fix issue with handling escape sequences in quoted strings within block tags
Version 2.0.7 (Maven Central)
- Propagate interpreter errors from child interpreters
- Changed error level to WARN for invalid date format strings, invalid locale strings
Version 2.0.6 (Maven Central)
- Fix ifchanged end tag name
- Fix implementation of autoescape tag
- Fix propagation of InterpretExceptions from tag render
- doc updates
Version 2.0.5 (Maven Central)
- Changed behavior of date filter to be same as datetimeformat filter
- Fixed date format conversion for single-digit values, for %e, %k, %l
- Updated Jinjavadoc to support isDeprecated flag, as well as arbitrary key-value metadata
Version 2.0.4 (Maven Central)
- Fix issue with PyishDate.isoformat()
Version 2.0.3 (Maven Central)
- Upgrading javassist, commons-lang3 library dependencies
- Adding new factory method to Jinjava for creating a new JinjavaInterpreter instance
Version 2.0.2 (Maven Central)
- Adding code snippets to jinjavadoc
- Adding shuffle filter for collections
Version 2.0.1 (Maven Central)
- Adding self-documenting feature to jinjava core
- Updating addition expression operator ('+') to work with lists and dicts
Version 2.0.0 (Maven Central)
-
2.0.x requires JDK 8, as it contains some critical fixes to date formatting for certain languages (i.e. Finnish months)
-
The 2.0.x release has some significant refactorings in the parsing code: ** nests the .parse package under the existing .tree package ** consolidating the token scanner logic, updating the node tree parser
-
future updates will be able to detect more specific template syntax errors than was previously possible.
-
NodeList has been removed in favor of the native JDK LinkedList implementation
Version 1.0.9 (Maven Central)
-
changed how validation of object properties happens; previously, jinjava would add TemplateErrors for unknown properties at the context root (i.e. 'foo') and when the property existed but the value was null (i.e. 'foo.bar == null'). the new logic will only add an error when the property isn't found on the given base object.
-
creating richer exception hierarchy for more detailed and specific error messaging
-
the simple Jinjava.render(String, Map) method will now return a container exception containing all errors encountered during rendering, instead of simply the first one
Version 1.0.8 (Maven Central)
- fixed issue with multiple includes of the same file in a template
Version 1.0.7 (Maven Central)
- added logic to avoid include/import cycles in include and import tags
Version 1.0.6 (Maven Central)
- fixed issue in strftimeformatter with format strings ending in literals
- updated expression resolver to return blank strings rather than false for exception cases
Version 1.0.5 (Maven Central)
- fixed issue in sort filter when using nested attribute
Version 1.0.4 (Maven Central)
- Fix issue where HelperStringTokenizer could return a null last value
- Added
unless
tag, for inverse-if functionality - Implemented
from
tag for importing specific named variables from another context
Version 1.0.3 (Maven Central)
- Adding python methods dict.update() and date.isoformat() to analogous types
Version 1.0.2 (Maven Central)
- Fix issue with closure scope lookups within macro functions
Version 1.0.1 (Maven Central)
- Properly implement call tag syntax
- Fix issue with declaring a list as a default method parameter value
- Adding string split built-in filter
Version 1.0.0 (Maven Central)
- Initial Public Release