@mkouba mkouba released this May 31, 2018 · 3 commits to master since this release

Assets 2
  • Introduce ContextConverter API
  • Introduce Decorator, DecoratorConverter and DecoratorHelper (#124)
  • Fix ReflectionResolver.HINT_FALLBACK_ENABLED_KEY registration (#123)
  • Deprecate ArrayIndexResolver, ListIndexResolver, InputLiteralLambda, SpecCompliantLambda (#127)

See also Decorate Your Template Data wiki page.

@mkouba mkouba released this Oct 21, 2017 · 21 commits to master since this release

Assets 2
  • ConfigurationKey - allow to use custom converter (#114)
  • EL extension (thanks @rmuller for contributions!)
    • Introduce ELProcessorFactory (#112)
    • Add ELEachHelper (#113)
    • Add ELSetHelper
  • Introduce BuildInfo (#111)
  • Options - add fluent versions of methods (#109)

@mkouba mkouba released this Sep 20, 2017 · 38 commits to master since this release

Assets 2

@mkouba mkouba released this Jul 12, 2017 · 52 commits to master since this release

Assets 2

@mkouba mkouba released this Mar 13, 2017 · 65 commits to master since this release

Assets 2

Big thanks to @mschneid for the contributions!!!

@mkouba mkouba released this Oct 9, 2016 · 112 commits to master since this release

Assets 2
  • Introduce ValueConverter API (#95)
  • Preserve exception message during compilation (#93, thanks @hwellmann !)
  • Don't cache template sources by default (#92)
  • Allow fine-grained template cache invalidation (#91)
  • Add FormatHelper - a simple printf-style format helper, i.e. {{fmt '%tA' now locale='en'}} or {{fmt 'Hello %s!' 'me'}}
  • Support list/array literals in helpers (#90)
  • InvokeHelper - support default method name

@mkouba mkouba released this May 19, 2016 · 132 commits to master since this release

Assets 2

This is a quick bugfix release.

  • Fix ELConfigurationExtension and ELIfHelper (#89)
  • IncludeHelper - concatenate params before calling Options.partial() (#88)
  • EmbedHelper - support multiple params

@mkouba mkouba released this May 11, 2016 · 142 commits to master since this release

Assets 2

NOTE: Trimou 2 is more like an evolution. Do not expect any revolutionary changes. Also we've tried to keep Trimou backward compatible where possible.

  • Reduce the footprint - get rid of guava and commons-lang dependencies (#81, #80)
    • The only runtime dependency of trimou-core is slf4j-api
    • footprint of core reduced by ~ 87% (from 3 MB to 396 KB)
  • Require Java 8, take advantage of new APIs and merge jdk8 extension into core (#82)
  • New EL 3.0 extension
  • New JSON Processing Object Model API extension (#84)
  • New RepeatHelper
  • MustacheEngineBuilder - allow to set CL used for config extensions (#62)
  • Add builder API to FileSystemTemplateLocator and ServletContextTemplateLocator (#85)
  • Java EE MVC extension prototype (#86)
  • LocaleSupport and TextSupport rework
  • EachHelper can be used to iterate over multiple objects
  • MustacheTagInfo - add getId() and getTemplateGeneratedId()
  • HttpServletRequestResolver is disabled by default (#87)
  • Performance improvements, component upgrades, codebase cleanup

@mkouba mkouba released this Mar 6, 2016 · 197 commits to master since this release

Assets 2
  • Add AlternativesHelper (#78)
  • Add CacheHelper (#79)
  • DefaultLiteralSupport - support boolean literals
  • NumericExpressionHelper improvements
    • fix Operator visibility
    • add forEachOperator() utility method
  • InvokeHelper - fix configuration

@mkouba mkouba released this Dec 8, 2015 · 210 commits to master since this release

Assets 2
  • Add support for nested templates (#76):
{{! This is the nested template definition - available only within a defining template}}
{{+item_detail}}
  Name: {{name}}
  Price: {{price}}
{{/item_detail}}

{{! Use nested template by means of partial }}
{{#each activeItems}}
  {{>item_detail}}
{{/each}}
  • NumericExpressionHelper - allow to specify the default operator, add "not in" operator
  • IfHelper - optional else supports simple value expressions:
{{#if item.active else="{item.name} is not active!"}}
   {{item.name}} is active!
{{/if}}