Latte Versions Save

☕ Latte: the safest & truly intuitive templates for PHP. Engine for those who want the most secure PHP sites.

v3.0.15

1 week ago
  • added filter |group
  • filter |sort accepts iterable
  • Filters::first() accepts iterable
  • Engine: cache-key divided into key and signature, that is stored in a lock file
  • Engine: added underscore to template class name
  • Loader::isExpired() deprecated
  • Blueprint::printClass() rewritten (BC break)

v3.0.14

1 month ago
  • hasBlock() fixed template retrieval #357
  • {contentType}: fixed behavior when used inside <script> #356
  • n:syntax: restores syntax after </ #358
  • added FunctionExecutor for template functions
  • n:syntax must not have a prefix
  • fixed positions of FilterNode
  • TagLexer: typo in regexp nette/application#321
  • Filters::safeUrl(): widened supported types
  • PHP 8.4 compatibility
  • refactoring

v3.0.13

4 months ago
  • added support for application/ld+json (#353)
  • fixed escaping after {contentType xml}
  • Filters & Passes: refactoring
  • removed Filters::$xml

v3.0.12

6 months ago
  • added n:else
  • exception handler can throw exception #307
  • JumpNode: correctly closes all HTML elements #340
  • uses AuxiliaryNode to hide usage of internals #347
  • {exitIf} must not be in prepare()

changes:

  • removed variable Tag::$data, Tag::closestTag() finds by class name
  • StaticCallNode renamed to StaticMethodCallNode
  • RegexpException replaced with CompileException & RuntimeException
  • ExpressionBuilder is deprecated

v2.10.10

6 months ago

support for PHP 8.2, 8.3

v2.11.7

6 months ago
  • support for PHP 8.3

v3.0.10

7 months ago
  • added function hasBlock() #345
  • Filters::safeUrl() accepts Stringable
  • implemented mandatory escaping (cannot be disabled using |noescape)
  • In <script type=unknown> is HTML not escaped
  • Improved escaping in <script type=text/html>
  • Escaper: better detection of type in <script> & <style>
  • FilterExecutor: refactoring, info-aware filter can be dynamic
  • Filters::strLength() uses mbstring, iconv and then utf8_decode

v3.0.9

8 months ago
  • improved support for variable tags <{$foo}>
  • Linter: refactoring, added getEngine()
  • TemplateLexer: rewritten that functions are not generators, exceptions are thrown in parsers

v3.0.8-RC1

8 months ago
  • added strict parsing mode via Engine::setStrictParsing()
  • added support for variable tags <{$foo}>
  • n:tag supports XML
  • in XML are tag names case sensitive
  • content in </foo ...> is not allowed (BC break)
  • TemplateLexer is driven from parser
  • TemplateParserHtml: HTML attribute name can be PrintNode or string (BC break)

v3.0.8

8 months ago
  • added support for magic constants __LINE__, __FILE__, __DIR__
  • added strict parsing mode via Engine::setStrictParsing()
  • added support for variable tags <{$foo}>
  • added constant Template::Source
  • n:tag supports XML
  • in XML are tag names case sensitive
  • content in </foo ...> is not allowed (BC break)
  • TemplateLexer is driven from parser
  • TemplateParserHtml: HTML attribute name can be PrintNode or string (BC break)
  • TokenStream::throwUnexpectedException() reports only single token