Fork me on GitHub

Changelog

3.2.2
  • Throw a more detailed exception from DefaultAttributeResolver (#653)
  • Make expression nodes fully visitable (#657)
  • Added getTemplates function to MemoryLoader (#660)
  • Generate OSGi metadata into pebble jar to make it OSGi compliant (#663)
  • Add flag for parameter name retention in maven compiler plugin (#664)
3.2.1
  • Fix the null pointer exception on the replace filter (#650)
  • Add native hints for GraalVM (#648)
3.2.0
  • Add support for spring framework 6 and spring-boot 3 (#630)
  • Bump minimum supported java version to 17 in pebble-spring6 and pebble-spring-boot-starter in order to work with spring (#630)
  • Add a memory loader that supports inheritance and doesn't require a filesystem. This is useful for applications that retrieve templates from a database for example (#617).
  • BREAKING CHANGE: Change default suffix to .peb instead of .pebble in spring boot autoconfiguration (#553)
  • BREAKING CHANGE: Rename method getInstance to createInstance in BinaryOperator interface (#521)
  • BREAKING CHANGE: Rename package from com.mitchellbosecke to io.pebbletemplates (#635)
3.1.6
  • Make CacheKey class extendible (#604)
  • Remove support for spring 1.5.x (#628)
  • Fix for older Android versions (#585 #581 #580)
3.1.5
  • Add timeZone parameter to date filter (#530)
  • Add setting to limit the size of output when evaluating a template (#529)
  • Fix variable name starting with operator (#541)
  • Added Servlet5Loader to support Servlet 5.0 (#549)
  • Throw an error when an import alias references an invalid macro (#559)
  • Special for loop variables class, to support all attribute resolvers (#560)
  • Support all Java identifiers (#544)
  • Provide option to customize stock extensions (#552)
  • Cannot use sort filter right after split filter (#568)
  • Support array of List in sort filter (#569)
  • Extension global variables in macros (#571)
  • Add base64 and sha256 filters (#574)
3.1.4
  • Slice filter: Use collection size when toIndex is greater than collection size (#504)
  • Adjust spring boot doc (#509)
  • Build with jdk14 (#508)
  • Set proxyBeanMethods to false and build with spring boot 2.3 (#507)
  • Add access to Spring Beans/request/session and response when using Pebble with WebFlux (#512)
  • Remove allowUnsafeMethods property and replace it with methodAccessValidator. Default one is BlacklistMethodAccessValidtor (#511)
3.1.3
  • Allow treating all number literals as BigDecimals to avoid NumberFormatExceptions (#503)
  • Custom operator can't use external context (#497)
  • Allow all variable names to be retrieve from ScopeChain/Scope (#291)
  • Empty map in strict mode does not throw exception (#491)
3.1.2
  • Add support for jdk13 (#487)
  • Add basic support for Spring 5 WebFlux reactive in Spring Boot 2 (#333)
3.1.1
  • Use a list of unsafeMethods and rename allowGetClass to allowUnsafeMethods (#454)
  • PebbleTemplateAvailabilityProvider doesn't find template files from the classpath (#464)
  • Added inline verbatim description to Verbatim tag documentation (#422)
  • Fix issue of embed tag changing cached templates (#475)
  • Fixes bug which allowed sequential String literals to be parsed correctly (#482)
  • Update to spring boot 2.2 (486)
3.1.0
  • BREAKING CHANGES: Consider avoiding feature version in spring boot starter name (#459)
  • Upgrade spring boot integration to Spring Boot 2.1 (#460)
  • Allow override core operators (#455, #456)
  • Allows variables to be set in templates when provided context is an immutable map (#453)
  • Fixed a few typos in the docs (#452)
  • Remove unnecessary variable 'state' in LexerImpl by using Stack (#450)
  • Updates Orchid to 0.17.1 and fixes its breaking changes (#448)
  • Null value in a Map should not throw AttributeNotFoundException (#447, #446)
3.0.10
  • Add support for JDK 9++ (#442, #443)
  • Add macro support for errors(BindingResult) in spring extension
  • Add spring-petclinic example
3.0.9
  • Add embed tag (#319, #318, #224, #378, #434)
  • Offline documentation (#282, #432)
  • Make allowGetClass check case insensitive (#435, #436)
3.0.8
  • Add split filter (#421)
3.0.7
  • Add Automatic-Module-Name to support Java 9 modules (#416)
3.0.6
  • Check that parseNewVariableName() parses a valid identifier (#409)
  • Set up Pebble documentation site using Orchid (#411)
  • Add twig compatibility matrix documentation (#247)
3.0.5
  • Cannot access List methods (#402)
  • Implement to boolean smart-casting in OR and AND operators (#405)
3.0.4
  • Make NOT operator more tolerant to argument type (#394)
  • Make ternary if operator more tolerant to argument type (#399)
  • Adjust AndExpression and OrExpression logic (#398)
  • Add JSON escaping as part of the default escaping strategies (#395)
3.0.3
  • Support more expressions for if operator (#387)
  • Consider adding greedyMatchMethod to PebbleProperties (#388)
  • Use locale from context for lower/upper filter (#390)
  • Restore cache:invalidateAll method (#393)
3.0.2
  • Add PebbleCache interface and use ConcurrentMap instead of Caffeine as default template/tag cache (#381)
  • Use unbescape instead of Coverity Escapers (#380)
3.0.1
  • Macros are restricted to a local scope (#371)
  • Macros have access to global attributes via "_context" variable (#242)
3.0.0
  • Java 8
  • Macros have access to all variables within the template and are no longer restricted to a "local scope"
  • New signature for filters/functions/tests that accepts the PebbleTemplate, EvaluationContext, and line number
  • Converted EvaluationContext to an interface with limited access to the underlying implementation
  • A "null" used as a boolean expression now throws an error if strict variables is true, treated as "false" otherwise
  • Improved error reporting
  • Java8 Date API support on date filter
  • Replace guava cache with caffeine
  • Add String Interpolation (#235)
  • Add the possibility to extend attribute access (#258)
  • Remove DynamicAttributeProvider
  • Render content on demand. Expose getLiteralTemplate(String templateName) (#295)
  • Introduce SpecializedWriter, (#358)
  • Many performance enhancements
  • Method resolution with overloaded method signatures (#367)
  • Use AbstractTemplateViewResolverProperties for spring-boot (#369)