201baee8 |
* 1.42.3 (2019-08-24)
|
5c9ec4d4 |
|
743135fc |
* fixed the "split" filter when the delimiter is "0"
|
b202fe38 |
* fixed the "empty" test on Traversable instances
|
ef4ae447 |
* fixed cache when opcache is installed but disabled
|
743135fc |
* fixed PHP 7.4 compatibility
|
d1927ade |
* bumped the minimal PHP version to 5.5
|
5c9ec4d4 |
|
21707d6e |
* 1.42.2 (2019-06-18)
|
e0ee3b5e |
|
c910e71f |
* Display partial output (PHP buffer) when an error occurs in debug mode
|
e0ee3b5e |
|
67134760 |
* 1.42.1 (2019-06-04)
|
0a639736 |
|
2218cfe2 |
* added support for "Twig\Markup" instances in the "in" test (again)
|
5835c234 |
* allowed string operators as variables names in assignments
|
0a639736 |
|
2983fcf2 |
* 1.42.0 (2019-05-31)
|
b03f07e9 |
|
c2f685e1 |
* fixed the "filter" filter when the argument is \Traversable but does not implement \Iterator (\SimpleXmlElement for instance)
|
11353ce3 |
* fixed a PHP fatal error when calling a macro imported in a block in a nested block
|
ba9b9681 |
* fixed a PHP fatal error when calling a macro imported in the template in another macro
|
118462c1 |
* fixed wrong error message on "import" and "from"
|
b03f07e9 |
|
575cd502 |
* 1.41.0 (2019-05-14)
|
d7eaeead |
|
1fb0f970 |
* fixed support for PHP 7.4
|
b30bce11 |
* added "filter", "map", and "reduce" filters (and support for arrow functions)
|
6196fe5b |
* fixed partial output leak when a PHP fatal error occurs
|
5b5f5659 |
* optimized context access on PHP 7.4
|
d7eaeead |
|
35889516 |
* 1.40.1 (2019-04-29)
|
b10a8fad |
|
e89800de |
* fixed regression in NodeTraverser
|
b10a8fad |
|
2ba4eaf6 |
* 1.40.0 (2019-04-28)
|
c470d13d |
|
f297b52f |
* allowed Twig\NodeVisitor\NodeVisitorInterface::leaveNode() to return "null" instead of "false" (same meaning)
|
619bc12f |
* added the "apply" tag as a replacement for the "filter" tag
|
5138cfd2 |
* allowed Twig\Loader\FilesystemLoader::findTemplate() to return "null" instead of "false" (same meaning)
|
8f00576e |
* added support for "Twig\Markup" instances in the "in" test
|
7b5851fe |
* fixed Lexer when using custom options containing the # char
|
f0c58854 |
* fixed "import" when macros are stored in a template string
|
c470d13d |
|
23e7b6f0 |
* 1.39.1 (2019-04-16)
|
f8b076b9 |
|
a3fc6392 |
* fixed EscaperNodeVisitor
|
f8b076b9 |
|
44890db0 |
* 1.39.0 (2019-04-16)
|
37d41807 |
|
1f82f228 |
* added Traversable support for the length filter
|
094df799 |
* fixed some wrong location in error messages
* made exception creation faster
|
dfa94113 |
* made escaping on ternary expressions (?: and ??) more fine-grained
|
d7e2e541 |
* added the possibility to give a nice name to string templates (template_from_string function)
|
5db54551 |
* fixed the "with" behavior to always include the globals (for consistency with the "include" and "embed" tags)
|
49725a1e |
* fixed "include" with "ignore missing" when an error loading occurs in the included template
|
96eab472 |
* added support for a new whitespace trimming option ({%~ ~%}, {{~ ~}}, {#~ ~#})
|
37d41807 |
|
7732e9e7 |
* 1.38.4 (2019-03-23)
|
deab8a77 |
|
e24f796b |
* fixed CheckToStringNode implementation (broken when a function/filter is variadic)
|
deab8a77 |
|
5df0ef0c |
* 1.38.3 (2019-03-21)
|
dae3b1ce |
|
f5689b50 |
* fixed the spaceless filter so that it behaves like the spaceless tag
|
b24d5256 |
* fixed BC break on Environment::resolveTemplate()
|
0c1d18b9 |
* fixed the bundled Autoloader to also load namespaced classes
|
572a2a09 |
* allowed Traversable objects to be used in the "with" tag
|
068306fe |
* allowed Traversable objects to be used in the "with" argument of the "include" and "embed" tags
|
dae3b1ce |
|
874adbd9 |
* 1.38.2 (2019-03-12)
|
b0d8cd77 |
|
861066e5 |
* added TemplateWrapper::getTemplateName()
|
b0d8cd77 |
|
88fc6d14 |
* 1.38.1 (2019-03-12)
|
47297c2a |
|
67568684 |
* fixed class aliases
|
47297c2a |
|
754b8dfc |
* 1.38.0 (2019-03-12)
|
9544f7ef |
|
eac54229 |
* fixed sandbox security issue (under some circumstances, calling the
__toString() method on an object was possible even if not allowed by the
security policy)
|
750cb237 |
* fixed batch filter clobbers array keys when fill parameter is used
|
ede9a604 |
* added preserveKeys support for the batch filter
|
92a63e0c |
* fixed "embed" support when used from "template_from_string"
|
c82d7dca |
* added the possibility to pass a TemplateWrapper to Twig\Environment::load()
|
5c661869 |
* improved the performance of the sandbox
|
b823898e |
* added a spaceless filter
|
f16405f7 |
* added max value to the "random" function
|
038809d1 |
* made namespace classes the default classes (PSR-0 ones are aliases now)
* removed duplicated directory separator in FilesystemLoader
|
31a549ce |
* added Twig\Loader\ChainLoader::getLoaders()
|
66b708bd |
* changed internal code to use the namespaced classes as much as possible
|
9544f7ef |
|
66be9366 |
* 1.37.1 (2019-01-14)
|
9f0ed3c3 |
|
86acbefe |
* fixed regression (key exists check for non ArrayObject objects)
|
361d8641 |
* fixed logic in TemplateWrapper
|
9f0ed3c3 |
|
e48a7b32 |
* 1.37.0 (2019-01-14)
|
7222faf6 |
|
67dab869 |
* fixed ArrayObject access with a null value
|
a573d464 |
* fixed embedded templates starting with a BOM
|
547fc612 |
* fixed using a Twig_TemplateWrapper instance as an argument to extends
|
8758b570 |
* switched generated code to use the PHP short array notation
|
63702811 |
* dropped PHP 5.3 support
|
e346c2ac |
* fixed float representation in compiled templates
|
e3790ab0 |
* added a second argument to the join filter (last separator configuration)
|
7222faf6 |
|
730c9c44 |
* 1.36.0 (2018-12-16)
|
cb848ee0 |
|
4f580796 |
* made sure twig_include returns a string
* fixed multi-byte UFT-8 in escape('html_attr')
|
2ab43383 |
* added the "deprecated" tag
|
4beb7bfb |
* added support for dynamically named tests
|
4f580796 |
* fixed GlobalsInterface extended class
|
03542492 |
* fixed filesystem loader throwing an exception instead of returning false
|
cb848ee0 |
|
7e081e98 |
* 1.35.4 (2018-07-13)
|
c35ad8c4 |
|
c4593935 |
* ensured that syntax errors are triggered with the right line
|
5b9a70b3 |
* added the Symfony ctype polyfill as a dependency
|
5c7b080b |
* "js" filter now produces valid JSON
|
c35ad8c4 |
|
b48680b6 |
* 1.35.3 (2018-03-20)
|
fe4a5e84 |
|
dc53726f |
* fixed block names unicity
* fixed counting children of SimpleXMLElement objects
|
de2be6a0 |
* added missing else clause to avoid infinite loops
|
6f45fcf5 |
* fixed .. (range operator) in sandbox policy
|
fe4a5e84 |
|
9c24f2cd |
* 1.35.2 (2018-03-03)
|
067ade15 |
|
7b2bdbe3 |
* fixed a regression in the way the profiler is registered in templates
|
067ade15 |
|
ffda54d8 |
* 1.35.1 (2018-03-02)
|
e7944a1f |
|
bf34cadf |
* added an exception when using "===" instead of "same as"
* fixed possible array to string conversion concealing actual error
* made variable names deterministic in compiled templates
* fixed length filter when passing an instance of IteratorAggregate
|
5322c9b4 |
* fixed Environment::resolveTemplate to accept instances of TemplateWrapper
|
e7944a1f |
|
daa65707 |
* 1.35.0 (2017-09-27)
|
f1703ea4 |
|
a726fc51 |
* added Twig_Profiler_Profile::reset()
|
421d8722 |
* fixed use TokenParser to return an empty Node
|
6f08f574 |
* added RuntimeExtensionInterface
|
6e17134b |
* added circular reference detection when loading templates
|
f1703ea4 |
|
f878bab4 |
* 1.34.4 (2017-07-04)
|
b3cb3d22 |
|
64c1a608 |
* added support for runtime loaders in IntegrationTestCase
|
aebec7d8 |
* fixed deprecation when using Twig_Profiler_Dumper_Html
|
b3cb3d22 |
|
451c6f41 |
* 1.34.3 (2017-06-07)
|
c071a2e3 |
|
451c6f41 |
* fixed namespaces introduction
|
c071a2e3 |
|
55e4beb7 |
* 1.34.2 (2017-06-05)
|
1af645d5 |
|
55e4beb7 |
* fixed namespaces introduction
|
1af645d5 |
|
5c0f990d |
* 1.34.1 (2017-06-05)
|
1cb696c6 |
|
ef183c1c |
* fixed namespaces introduction
|
1cb696c6 |
|
b3863676 |
* 1.34.0 (2017-06-05)
|
ef680be8 |
|
8bc1c950 |
* added support for PHPUnit 6 when testing extensions
* fixed PHP 7.2 compatibility
* fixed template name generation in Twig_Environment::createTemplate()
* removed final tag on Twig_TokenParser_Include
|
5420a5e3 |
* added namespaced aliases for all (non-deprecated) classes and interfaces
|
6ff8d6f4 |
* dropped HHVM support
|
75f2231a |
* dropped PHP 5.2 support
|
ef680be8 |
|
dd6ca962 |
* 1.33.2 (2017-04-20)
|
530be06a |
|
413be416 |
* fixed edge case in the method cache for Twig attributes
|
530be06a |
|
a87f959f |
* 1.33.1 (2017-04-18)
|
c622995d |
|
9b417f42 |
* fixed the empty() test
|
c622995d |
|
05cf4992 |
* 1.33.0 (2017-03-22)
|
f5193e92 |
|
82ff9d6b |
* fixed a race condition handling when writing cache files
|
f5193e92 |
* "length" filter now returns string length when applied to an object that does
not implement \Countable but provides __toString()
* "empty" test will now consider the return value of the __toString() method for
objects implement __toString() but not \Countable
|
7f913495 |
* fixed JS escaping for unicode characters with higher code points
|
27d7ea96 |
|
9935b662 |
* 1.32.0 (2017-02-26)
|
9b3796b1 |
|
48e17f7c |
* fixed deprecation notice in Twig_Util_DeprecationCollector
|
056689f7 |
* added a PSR-11 compatible runtime loader
|
7d8e7550 |
* added `side` argument to `trim` to allow left or right trimming only.
|
9b3796b1 |
|
ddc9e3e2 |
* 1.31.0 (2017-01-11)
|
2cbc573a |
|
0f9f76a1 |
* added Twig_NodeCaptureInterface for nodes that capture all output
* fixed marking the environment as initialized too early
* fixed C89 compat for the C extension
|
95c10991 |
* turned fatal error into exception when a previously generated cache is corrupted
* fixed offline cache warm-ups for embedded templates
|
2cbc573a |
|
c6ff7109 |
* 1.30.0 (2016-12-23)
|
1ee6bee3 |
|
d9e56ac6 |
* added Twig_FactoryRuntimeLoader
|
7ffb1887 |
* deprecated function/test/filter/tag overriding
|
014ab1f8 |
* deprecated the "disable_c_ext" attribute on Twig_Node_Expression_GetAttr
|
1ee6bee3 |
|
74f723e5 |
* 1.29.0 (2016-12-13)
|
2436915b |
|
5f2132db |
* fixed sandbox being left enabled if an exception is thrown while rendering
|
e89c712f |
* marked some classes as being final (via @final)
|
44f0f9ce |
* made Twig_Error report real source path when possible
|
8ab764b4 |
* added support for {{ _self }} to provide an upgrade path from 1.x to 2.0 (replaces {{ _self.templateName }})
|
ae9b503b |
* deprecated silent display of undefined blocks
|
6668d475 |
* deprecated support for mbstring.func_overload != 0
|
2436915b |
|
b22ce0eb |
* 1.28.2 (2016-11-23)
|
4c960312 |
|
62aefc57 |
* fixed precedence between getFoo() and isFoo() in Twig_Template::getAttribute()
* improved a deprecation message
|
4c960312 |
|
fff80c4a |
* 1.28.1 (2016-11-18)
|
e5506986 |
|
8c090a7c |
* fixed block() function when used with a template argument
|
e5506986 |
|
60ae3036 |
* 1.28.0 (2016-11-17)
|
3ff5abf7 |
|
cfc3931f |
* added support for the PHP 7 null coalescing operator for the ?? Twig implementation
|
d7062f35 |
* exposed a way to access template data and methods in a portable way
|
6effc9aa |
* changed context access to use the PHP 7 null coalescing operator when available
|
a50f765a |
* added the "with" tag
|
5ed59be9 |
* added support for a custom template on the block() function
|
c81bae48 |
* added "is defined" support for block() and constant()
|
924c2f48 |
* optimized the way attributes are fetched
|
3ff5abf7 |
|
3c6c0033 |
* 1.27.0 (2016-10-25)
|
b75b3f75 |
|
4deb03ae |
* deprecated Twig_Parser::getEnvironment()
|
31c444b5 |
* deprecated Twig_Parser::addHandler() and Twig_Parser::addNodeVisitor()
|
bc499a47 |
* deprecated Twig_Compiler::addIndentation()
|
47432f32 |
* fixed regression when registering two extensions having the same class name
|
21ecba8c |
* deprecated Twig_LoaderInterface::getSource() (implement Twig_SourceContextLoaderInterface instead)
|
a343c928 |
* fixed the filesystem loader with relative paths
|
39d94dfb |
* deprecated Twig_Node::getLine() in favor of Twig_Node::getTemplateLine()
|
7598f27e |
* deprecated Twig_Template::getSource() in favor of Twig_Template::getSourceContext()
|
e231aa53 |
* deprecated Twig_Node::getFilename() in favor of Twig_Node::getTemplateName()
|
eb47dc95 |
* deprecated the "filename" escaping strategy (use "name" instead)
|
6c76583e |
* added Twig_Source to hold information about the original template
|
b399ec0d |
* deprecated Twig_Error::getTemplateFile() and Twig_Error::setTemplateFile() in favor of Twig_Error::getTemplateName() and Twig_Error::setTemplateName()
|
d77f3dd3 |
* deprecated Parser::getFilename()
|
b98f4318 |
* fixed template paths when a template name contains a protocol like vfs://
|
e1c980fa |
* improved debugging with Twig_Sandbox_SecurityError exceptions for disallowed methods and properties
|
b75b3f75 |
|
a09d8ee1 |
* 1.26.1 (2016-10-05)
|
f00e7b8c |
|
33dfadb7 |
* removed template source code from generated template classes when debug is disabled
|
75e4aa5e |
* fixed default implementation of Twig_Template::getDebugInfo() for better BC
|
e01c29be |
* fixed regression on static calls for functions/filters/tests
|
f00e7b8c |
|
81c2b5fd |
* 1.26.0 (2016-10-02)
|
c9aac240 |
|
a15f4ce7 |
* added template cache invalidation based on more environment options
* added a missing deprecation notice
|
94ca4e99 |
* fixed template paths when a template is stored in a PHAR file
|
9cb6860e |
* allowed filters/functions/tests implementation to use a different class than the extension they belong to
|
71f03df0 |
* deprecated Twig_ExtensionInterface::getName()
|
c9aac240 |
|
f16a634a |
* 1.25.0 (2016-09-21)
|
c418d07c |
|
b55d907c |
* changed the way we store template source in template classes
|
6f0e3edb |
* removed usage of realpath in cache keys
|
ecd020da |
* fixed Twig cache sharing when used with different versions of PHP
|
a0489854 |
* removed embed parent workaround for simple use cases
|
03f18b44 |
* deprecated the ability to store non Node instances in Node::$nodes
|
e548cbe3 |
* deprecated Twig_Environment::getLexer(), Twig_Environment::getParser(), Twig_Environment::getCompiler()
|
1f41e9f9 |
* deprecated Twig_Compiler::getFilename()
|
c418d07c |
|
33093f6e |
* 1.24.2 (2016-09-01)
|
a2400a8d |
|
dbe9171c |
* fixed static callables
|
a9082dd2 |
* fixed a potential PHP warning when loading the cache
|
dbe9171c |
* fixed a case where the autoescaping does not work as expected
|
a2400a8d |
|
3566d311 |
* 1.24.1 (2016-05-30)
|
317f2213 |
|
f3564693 |
* fixed reserved keywords (forbids true, false, null and none keywords for variables names)
* fixed support for PHP7 (Throwable support)
|
6f08f574 |
* marked the following methods as being internals on Twig_Environment:
|
212730aa |
getFunctions(), getFilters(), getTests(), getFunction(), getFilter(), getTest(),
getTokenParsers(), getTags(), getNodeVisitors(), getUnaryOperators(), getBinaryOperators(),
getFunctions(), getFilters(), getGlobals(), initGlobals(), initExtensions(), and initExtension()
|
317f2213 |
|
3e5aa30e |
* 1.24.0 (2016-01-25)
|
97d8fec1 |
|
cdd57f33 |
* adding support for the ?? operator
|
62e8ee31 |
* fixed the defined test when used on a constant, a map, or a sequence
|
eb6e05e7 |
* undeprecated _self (should only be used to get the template name, not the template instance)
|
57cc04b0 |
* fixed parsing on PHP7
|
97d8fec1 |
|
ae53fc2c |
* 1.23.3 (2016-01-11)
|
d9b3e14c |
|
ae53fc2c |
* fixed typo
|
d9b3e14c |
|
d07c53df |
* 1.23.2 (2015-01-11)
|
bf326dbb |
|
934f6f00 |
* added versions in deprecated messages
* made file cache tolerant for trailing (back)slashes on directory configuration
* deprecated unused Twig_Node_Expression_ExtensionReference class
|
bf326dbb |
* 1.23.1 (2015-11-05)
|
b9b6f367 |
|
e4bedf07 |
* fixed some exception messages which triggered PHP warnings
* fixed BC on Twig_Test_NodeTestCase
|
b9b6f367 |
|
5868cd82 |
* 1.23.0 (2015-10-29)
|
656ecc0a |
|
72485c2e |
* deprecated the possibility to override an extension by registering another one with the same name
|
e3a325f2 |
* deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC)
|
9774f4f1 |
* deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC)
|
d0a5ef8c |
* deprecated Twig_Environment::computeAlternatives()
|
656ecc0a |
|
ebfc36b7 |
* 1.22.3 (2015-10-13)
|
f0b5b8ce |
|
353e1a4e |
* fixed regression when using null as a cache strategy
|
7030fdd7 |
* improved performance when checking template freshness
|
73306c5b |
* fixed warnings when loaded templates do not exist
* fixed template class name generation to prevent possible collisions
* fixed logic for custom escapers to call them even on integers and null values
|
76ecd433 |
* changed template cache names to take into account the Twig C extension
|
f0b5b8ce |
|
79249fc8 |
* 1.22.2 (2015-09-22)
|
7ffa3a2a |
|
591a17fc |
* fixed a race condition in template loading
|
7ffa3a2a |
|
b7fc2469 |
* 1.22.1 (2015-09-15)
|
7c8ddbdd |
|
443d1dbd |
* fixed regression in template_from_string
|
7c8ddbdd |
|
204a6c94 |
* 1.22.0 (2015-09-13)
|
7d21eb99 |
|
f2c01786 |
* made Twig_Test_IntegrationTestCase more flexible
|
96a54b3f |
* added an option to force PHP bytecode invalidation when writing a compiled template into the cache
|
f1e963c2 |
* fixed the profiler duration for the root node
|
550a3844 |
* changed template cache names to take into account enabled extensions
|
83152dc2 |
* deprecated Twig_Environment::clearCacheFiles(), Twig_Environment::getCacheFilename(),
|
0157315e |
Twig_Environment::writeCacheFile(), and Twig_Environment::getTemplateClassPrefix()
|
cacfb069 |
* added a way to override the filesystem template cache system
|
8af7659e |
* added a way to get the original template source from Twig_Template
|
7d21eb99 |
|
ddce1136 |
* 1.21.2 (2015-09-09)
|
91c9f507 |
|
18854ff2 |
* fixed variable names for the deprecation triggering code
* fixed escaping strategy detection based on filename
|
825bdc1a |
* added Traversable support for replace, merge, and sort
* deprecated support for character by character replacement for the "replace" filter
|
91c9f507 |
|
ca8d3aa9 |
* 1.21.1 (2015-08-26)
|
71b4dc25 |
|
9561582e |
* fixed regression when using the deprecated Twig_Test_* classes
|
71b4dc25 |
|
913d282c |
* 1.21.0 (2015-08-24)
|
37553291 |
|
bd87ba8a |
* added deprecation notices for deprecated features
|
eebfdc75 |
* added a deprecation "framework" for filters/functions/tests and test fixtures
|
37553291 |
|
1ea4e5f8 |
* 1.20.0 (2015-08-12)
|
617eaa00 |
|
e5b7c035 |
* forbid access to the Twig environment from templates and internal parts of Twig_Template
* fixed limited RCEs when in sandbox mode
|
c9501b80 |
* deprecated Twig_Template::getEnvironment()
|
5514c8ee |
* deprecated the _self variable for usage outside of the from and import tags
|
6f08f574 |
* added Twig_BaseNodeVisitor to ease the compatibility of node visitors
|
881fb63b |
between 1.x and 2.x
|
617eaa00 |
|
edbeaf43 |
* 1.19.0 (2015-07-31)
|
e22fb872 |
|
b18bcfb3 |
* fixed wrong error message when including an undefined template in a child template
|
0828c034 |
* added support for variadic filters, functions, and tests
|
056bb5da |
* added support for extra positional arguments in macros
|
64109037 |
* added ignore_missing flag to the source function
|
793ea7e3 |
* fixed batch filter with zero items
|
61eb80b0 |
* deprecated Twig_Environment::clearTemplateCache()
|
af728947 |
* fixed sandbox disabling when using the include function
|
e22fb872 |
|
e8e6575a |
* 1.18.2 (2015-06-06)
|
7d5fe0fb |
|
3e3aa8e2 |
* fixed template/line guessing in exceptions for nested templates
|
f012ea29 |
* optimized the number of inodes and the size of realpath cache when using the cache
|
7d5fe0fb |
|
9f70492f |
* 1.18.1 (2015-04-19)
|
6b434f45 |
|
67920147 |
* fixed memory leaks in the C extension
|
3779435d |
* deprecated Twig_Loader_String
|
5e7bb285 |
* fixed the slice filter when used with a SimpleXMLElement object
|
fd6f28be |
* fixed filesystem loader when trying to load non-files (like directories)
|
6b434f45 |
* 1.18.0 (2015-01-25)
|
e9995320 |
|
89afc0de |
* fixed some error messages where the line was wrong (unknown variables or argument names)
|
57400e24 |
* added a new way to customize the main Module node (via empty nodes)
|
6ec928e2 |
* added Twig_Environment::createTemplate() to create a template from a string
|
4408caae |
* added a profiler
|
f86510b7 |
* fixed filesystem loader cache when different file paths are used for the same template
|
e9995320 |
|
2493970f |
* 1.17.0 (2015-01-14)
|
d375c805 |
|
4481bf5f |
* added a 'filename' autoescaping strategy, which dynamically chooses the
autoescaping strategy for a template based on template file extension.
|
d375c805 |
|
6dc11a1e |
* 1.16.3 (2014-12-25)
|
5e4abadb |
|
ac8412f5 |
* fixed regression for dynamic parent templates
|
06a147f8 |
* fixed cache management with statcache
|
78e59ef2 |
* fixed a regression in the slice filter
|
5e4abadb |
|
42f758d9 |
* 1.16.2 (2014-10-17)
|
84df881b |
|
13b782b4 |
* fixed timezone on dates as strings
|
0082e052 |
* fixed 2-words test names when a custom node class is not used
|
b5f07420 |
* fixed macros when using an argument named like a PHP super global (like GET or POST)
|
0de848bd |
* fixed date_modify when working with DateTimeImmutable
|
b7f60e4d |
* optimized for loops
|
b0b03345 |
* fixed multi-byte characters handling in the split filter
|
9c162c5c |
* fixed a regression in the in operator
|
fcbfac72 |
* fixed a regression in the slice filter
|
84df881b |
|
7c4c01dc |
* 1.16.1 (2014-10-10)
|
11ea5976 |
|
943c9cfb |
* improved error reporting in a sandboxed template
|
c2a973af |
* fixed missing error file/line information under certain circumstances
|
593c3684 |
* fixed wrong error line number in some error messages
|
9fb15e34 |
* fixed the in operator to use strict comparisons
|
0d0cdba3 |
* sped up the slice filter
|
da2d52b0 |
* fixed for mb function overload mb_substr acting different
|
c03a7a32 |
* fixed the attribute() function when passing a variable for the arguments
|
11ea5976 |
|
8ce37115 |
* 1.16.0 (2014-07-05)
|
b0ee99d6 |
|
1930600e |
* changed url_encode to always encode according to RFC 3986
|
4a7ef0ce |
* fixed inheritance in a 'use'-hierarchy
|
bee07e53 |
* removed the __toString policy check when the sandbox is disabled
|
dab8d907 |
* fixed recursively calling blocks in templates with inheritance
|
b0ee99d6 |
|
1b98da75 |
* 1.15.1 (2014-02-13)
|
7066ce68 |
|
9b955708 |
* fixed the conversion of the special '0000-00-00 00:00' date
|
a2c6db7e |
* added an error message when trying to import an undefined block from a trait
|
6e800d82 |
* fixed a C extension crash when accessing defined but uninitialized property.
|
7066ce68 |
|
85e4ff98 |
* 1.15.0 (2013-12-06)
|
8fcde6a0 |
|
9ab290bd |
* made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException
|
6aa06dea |
* added min and max functions
|
ff4a7d29 |
* added the round filter
|
39eb50c0 |
* fixed a bug that prevented the optimizers to be enabled/disabled selectively
|
0906728a |
* fixed first and last filters for UTF-8 strings
|
dff7d2c7 |
* added a source function to include the content of a template without rendering it
|
40bba0e4 |
* fixed the C extension sandbox behavior when get or set is prepend to method name
|
8fcde6a0 |
|
ca445842 |
* 1.14.2 (2013-10-30)
|
ba486a3b |
|
1cdc913f |
* fixed error filename/line when an error occurs in an included file
|
724dc61b |
* allowed operators that contain whitespaces to have more than one whitespace
|
52c952c1 |
* allowed tests to be made of 1 or 2 words (like "same as" or "divisible by")
|
ba486a3b |
|
8873d759 |
* 1.14.1 (2013-10-15)
|
d3b488a8 |
|
8d805aac |
* made it possible to use named operators as variables
|
61264575 |
* fixed the possibility to have a variable named 'matches'
|
f5700443 |
* added support for PHP 5.5 DateTimeInterface
|
d3b488a8 |
|
224fc556 |
* 1.14.0 (2013-10-03)
|
730aa25b |
|
f27d4a14 |
* fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy
|
b66181d1 |
* added new operators: ends with, starts with, and matches
|
0046715e |
* fixed some compatibility issues with HHVM
|
55f8b27e |
* added a way to add custom escaping strategies
|
4001f81a |
* fixed the C extension compilation on Windows
|
e0fbce2f |
* fixed the batch filter when using a fill argument with an exact match of elements to batch
|
3bcf3220 |
* fixed the filesystem loader cache when a template name exists in several namespaces
|
1b5bf910 |
* fixed template_from_string when the template includes or extends other ones
|
ce502dc7 |
* fixed a crash of the C extension on an edge case
|
730aa25b |
|
6d6a1009 |
* 1.13.2 (2013-08-03)
|
a14bcf6a |
|
aae4c29a |
* fixed the error line number for an error occurs in and embedded template
|
0e63ef04 |
* fixed crashes of the C extension on some edge cases
|
a14bcf6a |
|
c4da0813 |
* 1.13.1 (2013-06-06)
|
4a49a3ae |
|
11fdec56 |
* added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem
* fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface
* adjusted backtrace call to reduce memory usage when an error occurs
|
69395658 |
* added support for object instances as the second argument of the constant test
|
ba88c755 |
* fixed the include function when used in an assignment
|
4a49a3ae |
|
d9b7bbd2 |
* 1.13.0 (2013-05-10)
|
ceadaa68 |
|
4d90a500 |
* fixed getting a numeric-like item on a variable ('09' for instance)
* fixed getting a boolean or float key on an array, so it is consistent with PHP's array access:
`{{ array[false] }}` behaves the same as `echo $array[false];` (equals `$array[0]`)
|
8503ff81 |
* made the escape filter 20% faster for happy path (escaping string for html with UTF-8)
|
c8fe2538 |
* changed ☃ to § in tests
|
135b618f |
* enforced usage of named arguments after positional ones
|
ceadaa68 |
|
27f3428b |
* 1.12.3 (2013-04-08)
|
72c8bb73 |
|
0693062a |
* fixed a security issue in the filesystem loader where it was possible to include a template one
level above the configured path
|
39991691 |
* fixed fatal error that should be an exception when adding a filter/function/test too late
|
a50bc8c9 |
* added a batch filter
|
fcf9525d |
* added support for encoding an array as query string in the url_encode filter
|
72c8bb73 |
|
a56f7405 |
* 1.12.2 (2013-02-09)
|
2a7d317c |
|
01bf732b |
* fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00)
* fixed globals when getGlobals is called early on
|
f8d4db41 |
* added the first and last filter
|
2a7d317c |
|
7c124c94 |
* 1.12.1 (2013-01-15)
|
ad31e176 |
|
7c2479d4 |
* added support for object instances as the second argument of the constant function
|
5abad160 |
* relaxed globals management to avoid a BC break
|
d10ebfa3 |
* added support for {{ some_string[:2] }}
|
ad31e176 |
|
79c34d81 |
* 1.12.0 (2013-01-08)
|
25f7b0c7 |
|
9e9a6a09 |
* added verbatim as an alias for the raw tag to avoid confusion with the raw filter
|
e48b1f3b |
* fixed registration of tests and functions as anonymous functions
|
9e9a6a09 |
* fixed globals management
|
25f7b0c7 |
|
10cdd2f5 |
* 1.12.0-RC1 (2012-12-29)
|
b16765ce |
|
f4f88a51 |
* added an include function (does the same as the include tag but in a more flexible way)
|
1918edef |
* added the ability to use any PHP callable to define filters, functions, and tests
|
811dfad7 |
* added a syntax error when using a loop variable that is not defined
|
4647913e |
* added the ability to set default values for macro arguments
|
a59dcde3 |
* added support for named arguments for filters, tests, and functions
|
e1ad2bde |
* moved filters/functions/tests syntax errors to the parser
|
f85076b0 |
* added support for extended ternary operator syntaxes
|
b16765ce |
|
e81b9894 |
* 1.11.1 (2012-11-11)
|
c2488872 |
|
1a10ea2f |
* fixed debug info line numbering (was off by 2)
|
615804bf |
* fixed escaping when calling a macro inside another one (regression introduced in 1.9.1)
|
6ece65e3 |
* optimized variable access on PHP 5.4
* fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX)
|
c2488872 |
|
795f6d87 |
* 1.11.0 (2012-11-07)
|
af1bfe95 |
|
abec35b8 |
* fixed macro compilation when a variable name is a PHP reserved keyword
|
f99504ae |
* changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone
|
8c5853e3 |
* fixed bitwise operator precedences
|
45991882 |
* added the template_from_string function
|
e3830c70 |
* fixed default timezone usage for the date function
|
2506be17 |
* optimized the way Twig exceptions are managed (to make them faster)
|
09ba9091 |
* added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster)
|
af1bfe95 |
|
79671473 |
* 1.10.3 (2012-10-19)
|
4db861ae |
|
bc64a7f7 |
* fixed wrong template location in some error messages
* reverted a BC break introduced in 1.10.2
|
bac6bc78 |
* added a split filter
|
4db861ae |
|
5d1c9e13 |
* 1.10.2 (2012-10-15)
|
f48f23a3 |
|
be3a5a64 |
* fixed macro calls on PHP 5.4
|
f48f23a3 |
|
f88881ce |
* 1.10.1 (2012-10-15)
|
8d14fa82 |
|
a4e10c14 |
* made a speed optimization to macro calls when imported via the "import" tag
|
7dd2f176 |
* fixed C extension compilation on Windows
|
73ab8ff5 |
* fixed a segfault in the C extension when using DateTime objects
|
8d14fa82 |
|
60e91ba6 |
* 1.10.0 (2012-09-28)
|
32c4867f |
|
b4d1d62b |
* extracted functional tests framework to make it reusable for third-party extensions
|
0eb4d01d |
* added namespaced templates support in Twig_Loader_Filesystem
|
c24ea1bc |
* added Twig_Loader_Filesystem::prependPath()
|
721bebc3 |
* fixed an error when a token parser pass a closure as a test to the subparse() method
|
32c4867f |
|
f04ef7d6 |
* 1.9.2 (2012-08-25)
|
657de7bd |
|
ddc154fe |
* fixed the in operator for objects that contain circular references
|
c0dc55da |
* fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface
|
657de7bd |
|
9228acc8 |
* 1.9.1 (2012-07-22)
|
3f9f587b |
|
8832b660 |
* optimized macro calls when auto-escaping is on
|
7c3b9877 |
* fixed wrong parent class for Twig_Function_Node
|
fbd6f85b |
* made Twig_Loader_Chain more explicit about problems
|
3f9f587b |
|
31f05925 |
* 1.9.0 (2012-07-13)
|
4679ad51 |
|
611f4451 |
* made the parsing independent of the template loaders
|
7051d2e5 |
* fixed exception trace when an error occurs when rendering a child template
|
7657c01e |
* added escaping strategies for CSS, URL, and HTML attributes
|
b7ca23f8 |
* fixed nested embed tag calls
|
cd049dac |
* added the date_modify filter
|
4679ad51 |
|
147e5d6d |
* 1.8.3 (2012-06-17)
|
82e73f6b |
|
120c44d6 |
* fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash
|
0d5dbede |
* fixed escaping when a project defines a function named html or js
|
d4511d02 |
* fixed chmod mode to apply the umask correctly
|
82e73f6b |
|
2afc5136 |
* 1.8.2 (2012-05-30)
|
875fa010 |
|
78a935b6 |
* added the abs filter
|
573a3609 |
* fixed a regression when using a number in template attributes
|
0fa26d64 |
* fixed compiler when mbstring.func_overload is set to 2
|
c53a02de |
* fixed DateTimeZone support in date filter
|
875fa010 |
|
0bee0375 |
* 1.8.1 (2012-05-17)
|
92525482 |
|
8ec73cf4 |
* fixed a regression when dealing with SimpleXMLElement instances in templates
|
621c7b57 |
* fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini
|
4618d753 |
* switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ)
|
92525482 |
|
87766410 |
* 1.8.0 (2012-05-08)
|
40c96688 |
|
db32d5ef |
* enforced interface when adding tests, filters, functions, and node visitors from extensions
|
606d6dc1 |
* fixed a side-effect of the date filter where the timezone might be changed
|
75d97b4a |
* simplified usage of the autoescape tag; the only (optional) argument is now the escaping strategy or false (with a BC layer)
|
1f00c33a |
* added a way to dynamically change the auto-escaping strategy according to the template "filename"
|
109db731 |
* changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html)
|
fab21d8a |
* added an embed tag
|
40c96688 |
|
6ac8791d |
* 1.7.0 (2012-04-24)
|
50421c86 |
|
f3491b5c |
* fixed a PHP warning when using CIFS
|
e7313a78 |
* fixed template line number in some exceptions
|
48aae186 |
* added an iterable test
|
0add6e23 |
* added an error when defining two blocks with the same name in a template
|
944a0146 |
* added the preserves_safety option for filters
|
4e28408c |
* fixed a PHP notice when trying to access a key on a non-object/array variable
|
1b47b401 |
* enhanced error reporting when the template file is an instance of SplFileInfo
|
f2f1f32b |
* added Twig_Environment::mergeGlobals()
|
1f6e640d |
* added compilation checks to avoid misuses of the sandbox tag
|
999e54ef |
* fixed filesystem loader freshness logic for high traffic websites
|
06361ca3 |
* fixed random function when charset is null
|
50421c86 |
|
58fbe0da |
* 1.6.5 (2012-04-11)
* fixed a regression when a template only extends another one without defining any blocks
|
ff61094a |
* 1.6.4 (2012-04-02)
|
ab016bd6 |
|
aa4efe1c |
* fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3
|
27f55cc5 |
* fixed performance when compiling large files
|
1e9a1ae0 |
* optimized parent template creation when the template does not use dynamic inheritance
|
ab016bd6 |
|
c2a53a26 |
* 1.6.3 (2012-03-22)
|
2ecd314d |
|
4a0773a8 |
* fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension
|
90931b0a |
* fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot
|
49ee8d6e |
* made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate
|
2ecd314d |
|
f43cc520 |
* 1.6.2 (2012-03-18)
|
d942d11f |
|
50e73b20 |
* fixed sandbox mode when used with inheritance
|
c0a9c8bb |
* added preserveKeys support for the slice filter
|
a3310e75 |
* fixed the date filter when a DateTime instance is passed with a specific timezone
|
d942d11f |
* added a trim filter
|
30929fde |
* 1.6.1 (2012-02-29)
|
20394560 |
|
741b11c6 |
* fixed Twig C extension
|
07385f6a |
* removed the creation of Twig_Markup instances when not needed
|
4dee4e58 |
* added a way to set the default global timezone for dates
|
2bcd60c9 |
* fixed the slice filter on strings when the length is not specified
|
5b5de2c7 |
* fixed the creation of the cache directory in case of a race condition
|
20394560 |
|
9154d276 |
* 1.6.0 (2012-02-04)
|
e74205e2 |
|
310020ac |
* fixed raw blocks when used with the whitespace trim option
|
e81c932e |
* made a speed optimization to macro calls when imported via the "from" tag
|
58f7fa35 |
* fixed globals, parsers, visitors, filters, tests, and functions management in Twig_Environment when a new one or new extension is added
|
883a93bb |
* fixed the attribute function when passing arguments
|
d9dc813d |
* added slice notation support for the [] operator (syntactic sugar for the slice operator)
* added a slice filter
|
4578c176 |
* added string support for the reverse filter
|
68fa9c9b |
* fixed the empty test and the length filter for Twig_Markup instances
|
764829f5 |
* added a date function to ease date comparison
|
c07014a3 |
* fixed unary operators precedence
|
02557644 |
* added recursive parsing support in the parser
|
faa90c92 |
* added string and integer handling for the random function
|
e74205e2 |
|
5bba1497 |
* 1.5.1 (2012-01-05)
|
d76d670b |
|
5bba1497 |
* fixed a regression when parsing strings
|
d76d670b |
|
f6e49636 |
* 1.5.0 (2012-01-04)
|
19ba9c21 |
* added Traversable objects support for the join filter
|
956830c7 |
* 1.5.0-RC2 (2011-12-30)
|
88de4577 |
|
736dfa84 |
* added a way to set the default global date interval format
|
519b6805 |
* fixed the date filter for DateInterval instances (setTimezone() does not exist for them)
|
fc85a168 |
* refactored Twig_Template::display() to ease its extension
|
88de4577 |
* added a number_format filter
|
fb6d5660 |
* 1.5.0-RC1 (2011-12-26)
|
460ba4d6 |
|
f3de043d |
* removed the need to quote hash keys
|
591f982b |
* allowed hash keys to be any expression
|
4aba337c |
* added a do tag
|
26453bff |
* added a flush tag
|
4f19c7a0 |
* added support for dynamically named filters and functions
|
865a7039 |
* added a dump function to help debugging templates
|
932a4d8d |
* added a nl2br filter
|
89a1519e |
* added a random function
|
f8b7441e |
* added a way to change the default format for the date filter
|
ae250f6b |
* fixed the lexer when an operator ending with a letter ends a line
|
6e2d7ba1 |
* added string interpolation support
|
08bda723 |
* enhanced exceptions for unknown filters, functions, tests, and tags
|
460ba4d6 |
|
0b7d6dfa |
* 1.4.0 (2011-12-07)
|
c6917a28 |
|
a6f9f9b5 |
* fixed lexer when using big numbers (> PHP_INT_MAX)
|
6e3a1c40 |
* added missing preserveKeys argument to the reverse filter
|
c6917a28 |
* fixed macros containing filter tag calls
|
7d56687f |
* 1.4.0-RC2 (2011-11-27)
|
9d2272ef |
|
7bc07dc1 |
* removed usage of Reflection in Twig_Template::getAttribute()
|
fa71922a |
* added a C extension that can optionally replace Twig_Template::getAttribute()
|
9d2272ef |
* added negative timestamp support to the date filter
|
2e268ccd |
* 1.4.0-RC1 (2011-11-20)
|
4c2ecdb6 |
|
1b32617b |
* optimized variable access when using PHP 5.4
|
10c799fd |
* changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby
|
a3fcbd62 |
* added an Exception to Twig_Loader_Array::isFresh() method when the template does not exist to be consistent with other loaders
|
9117fc1c |
* added Twig_Function_Node to allow more complex functions to have their own Node class
|
3427adc7 |
* added Twig_Filter_Node to allow more complex filters to have their own Node class
|
b1d06ccb |
* added Twig_Test_Node to allow more complex tests to have their own Node class
|
083d8390 |
* added a better error message when a template is empty but contain a BOM
|
3427adc7 |
* fixed "in" operator for empty strings
|
29534aad |
* fixed the "defined" test and the "default" filter (now works with more than one call (foo.bar.foo) and for both values of the strict_variables option)
|
2c7b5651 |
* changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order)
|
d1096613 |
* added Twig_Environment::display()
|
344043e8 |
* made the escape filter smarter when the encoding is not supported by PHP
|
c015e818 |
* added a convert_encoding filter
|
24086287 |
* moved all node manipulations outside the compile() Node method
* made several speed optimizations
|
8dcc0b30 |
* 1.3.0 (2011-10-08)
no changes
|
5c1277eb |
* 1.3.0-RC1 (2011-10-04)
|
56f82db1 |
|
f96d8d82 |
* added an optimization for the parent() function
|
d472d215 |
* added cache reloading when auto_reload is true and an extension has been modified
|
46080c90 |
* added the possibility to force the escaping of a string already marked as safe (instance of Twig_Markup)
|
56f82db1 |
* allowed empty templates to be used as traits
|
d101a059 |
* added traits support for the "parent" function
|
56f82db1 |
|
4a505799 |
* 1.2.0 (2011-09-13)
no changes
* 1.2.0-RC1 (2011-09-10)
|
f918219c |
|
4ea393ad |
* enhanced the exception when a tag remains unclosed
|
e9b041f9 |
* added support for empty Countable objects for the "empty" test
|
f20450d1 |
* fixed algorithm that determines if a template using inheritance is valid (no output between block definitions)
|
453c3e8b |
* added better support for encoding problems when escaping a string (available as of PHP 5.4)
|
c56dd32f |
* added a way to ignore a missing template when using the "include" tag ({% include "foo" ignore missing %})
|
4402ee2c |
* added support for an array of templates to the "include" and "extends" tags ({% include ['foo', 'bar'] %})
|
acd36630 |
* added support for bitwise operators in expressions
|
c609060f |
* added the "attribute" function to allow getting dynamic attributes on variables
|
517c2336 |
* added Twig_Loader_Chain
|
d6ebae56 |
* added Twig_Loader_Array::setTemplate()
|
7b5e5969 |
* added an optimization for the set tag when used to capture a large chunk of static text
|
112a16bf |
* changed name regex to match PHP one "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" (works for blocks, tags, functions, filters, and macros)
|
801f3e63 |
* removed the possibility to use the "extends" tag from a block
|
46eccb9a |
* added "if" modifier support to "for" loops
|
f918219c |
|
396435ec |
* 1.1.2 (2011-07-30)
|
6783d581 |
|
c7be5242 |
* fixed json_encode filter on PHP 5.2
|
b4e9c0f6 |
* fixed regression introduced in 1.1.1 ({{ block(foo|lower) }})
|
d67832ea |
* fixed inheritance when using conditional parents
|
7f5390a6 |
* fixed compilation of templates when the body of a child template is not empty
|
ea839728 |
* fixed output when a macro throws an exception
|
6783d581 |
* fixed a parsing problem when a large chunk of text is enclosed in a comment tag
|
b42d8f3e |
* added PHPDoc for all Token parsers and Core extension functions
|
6783d581 |
|
94ac20f1 |
* 1.1.1 (2011-07-17)
|
2527c656 |
|
a27175b7 |
* added a performance optimization in the Optimizer (also helps to lower the number of nested level calls)
|
2527c656 |
* made some performance improvement for some edge cases
|
661e9c7a |
* 1.1.0 (2011-06-28)
* fixed json_encode filter
|
066d561e |
* 1.1.0-RC3 (2011-06-24)
|
04969569 |
|
83a0cbab |
* fixed method case-sensitivity when using the sandbox mode
|
04969569 |
* added timezone support for the date filter
* fixed possible security problems with NUL bytes
|
6c442bd9 |
* 1.1.0-RC2 (2011-06-16)
|
47818dd2 |
* added an exception when the template passed to "use" is not a string
|
4d043d47 |
* made 'a.b is defined' not throw an exception if a is not defined (in strict mode)
|
6c442bd9 |
* added {% line \d+ %} directive
|
38075481 |
* 1.1.0-RC1 (2011-05-28)
|
ad427be3 |
Flush your cache after upgrading.
|
2901acd5 |
* fixed date filter when using a timestamp
* fixed the defined test for some cases
* fixed a parsing problem when a large chunk of text is enclosed in a raw tag
|
d2afbc95 |
* added support for horizontal reuse of template blocks (see docs for more information)
|
f782f1ec |
* added whitespace control modifier to all tags (see docs for more information)
|
b340d98d |
* added null as an alias for none (the null test is also an alias for the none test now)
|
76205f1e |
* made TRUE, FALSE, NONE equivalent to their lowercase counterparts
|
cae8293c |
* wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line
|
ad427be3 |
* moved display() method to Twig_Template (generated templates should now use doDisplay() instead)
|
2f106a80 |
* 1.0.0 (2011-03-27)
|
e96ed3f6 |
|
8fb00522 |
* fixed output when using mbstring
* fixed duplicate call of methods when using the sandbox
* made the charset configurable for the escape filter
|
2f106a80 |
* 1.0.0-RC2 (2011-02-21)
|
1ac50758 |
* changed the way {% set %} works when capturing (the content is now marked as safe)
|
c0945a25 |
* added support for macro name in the endmacro tag
|
a1c33ec0 |
* make Twig_Error compatible with PHP 5.3.0 >
|
8fb00522 |
* fixed an infinite loop on some Windows configurations
|
5b6d255a |
* fixed the "length" filter for numbers
|
a1c33ec0 |
* fixed Template::getAttribute() as properties in PHP are case sensitive
|
64f63bef |
* removed coupling between Twig_Node and Twig_Template
|
ac9e4eec |
* fixed the ternary operator precedence rule
|
e96ed3f6 |
|
b5d97e2c |
* 1.0.0-RC1 (2011-01-09)
|
283fce6b |
|
14341443 |
Backward incompatibilities:
|
4c237b22 |
* the "items" filter, which has been deprecated for quite a long time now, has been removed
* the "range" filter has been converted to a function: 0|range(10) -> range(0, 10)
* the "constant" filter has been converted to a function: {{ some_date|date('DATE_W3C'|constant) }} -> {{ some_date|date(constant('DATE_W3C')) }}
* the "cycle" filter has been converted to a function: {{ ['odd', 'even']|cycle(i) }} -> {{ cycle(['odd', 'even'], i) }}
* the "for" tag does not support "joined by" anymore
* the "autoescape" first argument is now "true"/"false" (instead of "on"/"off")
* the "parent" tag has been replaced by a "parent" function ({{ parent() }} instead of {% parent %})
* the "display" tag has been replaced by a "block" function ({{ block('title') }} instead of {% display title %})
|
26633404 |
* removed the grammar and simple token parser (moved to the Twig Extensions repository)
|
14341443 |
Changes:
|
283fce6b |
|
957a30af |
* added "needs_context" option for filters and functions (the context is then passed as a first argument)
|
afa47bd9 |
* added global variables support
|
7fc59277 |
* made macros return their value instead of echoing directly (fixes calling a macro in sandbox mode)
|
9d77cf22 |
* added the "from" tag to import macros as functions
|
1621435b |
* added support for functions (a function is just syntactic sugar for a getAttribute() call)
|
c66cfa1d |
* made macros callable when sandbox mode is enabled
|
eedce661 |
* added an exception when a macro uses a reserved name
|
583718ee |
* the "default" filter now uses the "empty" test instead of just checking for null
|
0d424bff |
* added the "empty" test
|
6182ade6 |
* 0.9.10 (2010-12-16)
|
c54e0dad |
|
dc3e1cb6 |
Backward incompatibilities:
* The Escaper extension is enabled by default, which means that all displayed
variables are now automatically escaped. You can revert to the previous
|
16e4c078 |
behavior by removing the extension via $env->removeExtension('escaper')
or just set the 'autoescape' option to 'false'.
|
ac0b54c1 |
* removed the "without loop" attribute for the "for" tag (not needed anymore
as the Optimizer take care of that for most cases)
|
4505200d |
* arrays and hashes have now a different syntax
* arrays keep the same syntax with square brackets: [1, 2]
* hashes now use curly braces (["a": "b"] should now be written as {"a": "b"})
* support for "arrays with keys" and "hashes without keys" is not supported anymore ([1, "foo": "bar"] or {"foo": "bar", 1})
|
2e551414 |
* the i18n extension is now part of the Twig Extensions repository
|
dc3e1cb6 |
Changes:
|
b7923821 |
* added the merge filter
|
148f8211 |
* removed 'is_escaper' option for filters (a left over from the previous version) -- you must use 'is_safe' now instead
|
3c01290c |
* fixed usage of operators as method names (like is, in, and not)
|
2e08bd70 |
* changed the order of execution for node visitors
|
e0ea4a96 |
* fixed default() filter behavior when used with strict_variables set to on
|
48ac60e0 |
* fixed filesystem loader compatibility with PHAR files
|
c202b289 |
* enhanced error messages when an unexpected token is parsed in an expression
|
8f33ca71 |
* fixed filename not being added to syntax error messages
|
cda18ed9 |
* added the autoescape option to enable/disable autoescaping
|
49488b8f |
* removed the newline after a comment (mimics PHP behavior)
|
08bd27f7 |
* added a syntax error exception when parent block is used on a template that does not extend another one
|
18a31714 |
* made the Escaper extension enabled by default
|
c12fd846 |
* fixed sandbox extension when used with auto output escaping
* fixed escaper when wrapping a Twig_Node_Print (the original class must be preserved)
|
18a31714 |
* added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters)
|
5c5a9d45 |
* added priority to node visitors
|
399a8f5c |
* 0.9.9 (2010-11-28)
|
0f66b5a0 |
|
80af3153 |
Backward incompatibilities:
* the self special variable has been renamed to _self
|
5d6e7e2e |
* the odd and even filters are now tests:
|
7fc7180c |
{{ foo|odd }} must now be written {{ foo is odd }}
|
56caee09 |
* the "safe" filter has been renamed to "raw"
|
29b020eb |
* in Node classes,
sub-nodes are now accessed via getNode() (instead of property access)
attributes via getAttribute() (instead of array access)
|
12fd54f1 |
* the urlencode filter had been renamed to url_encode
|
10cab461 |
* the include tag now merges the passed variables with the current context by default
(the old behavior is still possible by adding the "only" keyword)
|
9d8583ef |
* moved Exceptions to Twig_Error_* (Twig_SyntaxError/Twig_RuntimeError are now Twig_Error_Syntax/Twig_Error_Runtime)
* removed support for {{ 1 < i < 3 }} (use {{ i > 1 and i < 3 }} instead)
|
3027568b |
* the "in" filter has been removed ({{ a|in(b) }} should now be written {{ a in b }})
|
80af3153 |
|
18aaf36c |
Changes:
|
6c74b606 |
* added file and line to Twig_Error_Runtime exceptions thrown from Twig_Template
|
bea562a2 |
* changed trans tag to accept any variable for the plural count
|
c9e5a63c |
* fixed sandbox mode (__toString() method check was not enforced if called implicitly from complex statements)
|
9d8583ef |
* added the ** (power) operator
* changed the algorithm used for parsing expressions
|
1d2afa09 |
* added the spaceless tag
|
38acf6f1 |
* removed trim_blocks option
|
001685ba |
* added support for is*() methods for attributes (foo.bar now looks for foo->getBar() or foo->isBar())
|
2a2d17b6 |
* changed all exceptions to extend Twig_Error
|
f34e374b |
* fixed unary expressions ({{ not(1 or 0) }})
|
05738069 |
* fixed child templates (with an extend tag) that uses one or more imports
|
011e727b |
* added support for {{ 1 not in [2, 3] }} (more readable than the current {{ not (1 in [2, 3]) }})
|
399a8f5c |
* escaping has been rewritten
|
15f32766 |
* the implementation of template inheritance has been rewritten
(blocks can now be called individually and still work with inheritance)
|
1230c210 |
* fixed error handling for if tag when a syntax error occurs within a subparse process
|
f7febc0c |
* added a way to implement custom logic for resolving token parsers given a tag name
|
4541e88e |
* fixed js escaper to be stricter (now uses a whilelist-based js escaper)
|
12fd54f1 |
* added the following filers: "constant", "trans", "replace", "json_encode"
|
1e9493df |
* added a "constant" test
|
2ff6cedb |
* fixed objects with __toString() not being autoescaped
|
839f1614 |
* fixed subscript expressions when calling __call() (methods now keep the case)
|
5d6e7e2e |
* added "test" feature (accessible via the "is" operator)
|
30de2dae |
* removed the debug tag (should be done in an extension)
|
2595e7b3 |
* fixed trans tag when no vars are used in plural form
* fixed race condition when writing template cache
|
47788228 |
* added the special _charset variable to reference the current charset
|
80af3153 |
* added the special _context variable to reference the current context
* renamed self to _self (to avoid conflict)
|
74dc1596 |
* fixed Twig_Template::getAttribute() for protected properties
|
6886b2ca |
* 0.9.8 (2010-06-28)
|
fc038760 |
|
2c1eb310 |
Backward incompatibilities:
* the trans tag plural count is now attached to the plural tag:
old: `{% trans count %}...{% plural %}...{% endtrans %}`
new: `{% trans %}...{% plural count %}...{% endtrans %}`
* added a way to translate strings coming from a variable ({% trans var %})
|
cccaf558 |
* fixed trans tag when used with the Escaper extension
|
e1791929 |
* fixed default cache umask
|
ad052d8e |
* removed Twig_Template instances from the debug tag output
|
1698c883 |
* fixed objects with __isset() defined
|
e596d213 |
* fixed set tag when used with a capture
|
7d641d61 |
* fixed type hinting for Twig_Environment::addFilter() method
|
fc038760 |
|
a7a5f1d9 |
* 0.9.7 (2010-06-12)
|
bfb861ba |
|
7603ef19 |
Backward incompatibilities:
|
8809a1ca |
* changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %})
|
56318ee4 |
* removed the sandboxed attribute of the include tag (use the new sandbox tag instead)
* refactored the Node system (if you have custom nodes, you will have to update them to use the new API)
|
7603ef19 |
|
a8031fc9 |
* added self as a special variable that refers to the current template (useful for importing macros from the current template)
|
7e926fc2 |
* added Twig_Template instance support to the include tag
|
0f51a54f |
* added support for dynamic and conditional inheritance ({% extends some_var %} and {% extends standalone ? "minimum" : "base" %})
|
0ca17abc |
* added a grammar sub-framework to ease the creation of custom tags
|
d47902c7 |
* fixed the for tag for large arrays (some loop variables are now only available for arrays and objects that implement the Countable interface)
|
56318ee4 |
* removed the Twig_Resource::resolveMissingFilter() method
* fixed the filter tag which did not apply filtering to included files
* added a bunch of unit tests
* added a bunch of phpdoc
* added a sandbox tag in the sandbox extension
|
1847634d |
* changed the date filter to support any date format supported by DateTime
|
2ce6b27f |
* added strict_variable setting to throw an exception when an invalid variable is used in a template (disabled by default)
|
c7fbd430 |
* added the lexer, parser, and compiler as arguments to the Twig_Environment constructor
|
dc80fe13 |
* changed the cache option to only accepts an explicit path to a cache directory or false
|
255f0fb8 |
* added a way to add token parsers, filters, and visitors without creating an extension
|
c4e80ee5 |
* added three interfaces: Twig_NodeInterface, Twig_TokenParserInterface, and Twig_FilterInterface
|
d4534e84 |
* changed the generated code to match the new coding standards
|
b63205a6 |
* fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }})
|
9c253d69 |
* added an exception when a child template has a non-empty body (as it is always ignored when rendering)
|
2ea01af0 |
* 0.9.6 (2010-05-12)
|
29d16d99 |
|
2e1b12bc |
* fixed variables defined outside a loop and for which the value changes in a for loop
|
276a3804 |
* fixed the test suite for PHP 5.2 and older versions of PHPUnit
|
79e50586 |
* added support for __call() in expression resolution
* fixed node visiting for macros (macros are now visited by visitors as any other node)
|
23a8d39d |
* fixed nested block definitions with a parent call (rarely useful but nonetheless supported now)
|
075f5415 |
* added the cycle filter
|
6b6d5150 |
* fixed the Lexer when mbstring.func_overload is used with an mbstring.internal_encoding different from ASCII
|
029bb5b5 |
* added a long-syntax for the set tag ({% set foo %}...{% endset %})
|
7e8cdd7b |
* unit tests are now powered by PHPUnit
|
4625d2f8 |
* added support for gettext via the `i18n` extension
|
94151eab |
* fixed twig_capitalize_string_filter() and fixed twig_length_filter() when used with UTF-8 values
* added a more useful exception if an if tag is not closed properly
|
6c7d5603 |
* added support for escaping strategy in the autoescape tag
|
11c00dcc |
* fixed lexer when a template has a big chunk of text between/in a block
|
29d16d99 |
|
83041be5 |
* 0.9.5 (2010-01-20)
|
ce4670da |
|
47d5f85c |
As for any new release, don't forget to remove all cached templates after
upgrading.
|
215ed486 |
If you have defined custom filters, you MUST upgrade them for this release. To
upgrade, replace "array" with "new Twig_Filter_Function", and replace the
environment constant by the "needs_environment" option:
// before
'even' => array('twig_is_even_filter', false),
'escape' => array('twig_escape_filter', true),
// after
'even' => new Twig_Filter_Function('twig_is_even_filter'),
'escape' => new Twig_Filter_Function('twig_escape_filter', array('needs_environment' => true)),
|
da590259 |
If you have created NodeTransformer classes, you will need to upgrade them to
the new interface (please note that the interface is not yet considered
stable).
|
92d96e2e |
|
84bf02bb |
* fixed list nodes that did not extend the Twig_NodeListInterface
|
83ea0a5e |
* added the "without loop" option to the for tag (it disables the generation of the loop variable)
|
92d96e2e |
* refactored node transformers to node visitors
* fixed automatic-escaping for blocks
|
e2c7b2fa |
* added a way to specify variables to pass to an included template
|
2f0d54d0 |
* changed the automatic-escaping rules to be more sensible and more configurable in custom filters (the documentation lists all the rules)
|
215ed486 |
* improved the filter system to allow object methods to be used as filters
|
be7245cb |
* changed the Array and String loaders to actually make use of the cache mechanism
|
1a033bab |
* included the default filter function definitions in the extension class files directly (Core, Escaper)
|
575ed89d |
* added the // operator (like the floor() PHP function)
|
2ab4dd5b |
* added the .. operator (as a syntactic sugar for the range filter when the step is 1)
|
95d5cefd |
* added the in operator (as a syntactic sugar for the in filter)
|
575ed89d |
* added the following filters in the Core extension: in, range
|
ee5c9d93 |
* added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes)
* enhanced some error messages to provide better feedback in case of parsing errors
|
ce4670da |
* 0.9.4 (2009-12-02)
|
822fb857 |
|
d3ee1165 |
If you have custom loaders, you MUST upgrade them for this release: The
Twig_Loader base class has been removed, and the Twig_LoaderInterface has also
been changed (see the source code for more information or the documentation).
|
07ca8a79 |
* added support for DateTime instances for the date filter
|
a59e183f |
* fixed loop.last when the array only has one item
|
2ffcea6c |
* made it possible to insert newlines in tag and variable blocks
|
cd9ca837 |
* fixed a bug when a literal '\n' were present in a template text
|
d47077ee |
* fixed bug when the filename of a template contains */
|
d3ee1165 |
* refactored loaders
|
9584f0b3 |
* 0.9.3 (2009-11-11)
This release is NOT backward compatible with the previous releases.
The loaders do not take the cache and autoReload arguments anymore. Instead,
the Twig_Environment class has two new options: cache and auto_reload.
Upgrading your code means changing this kind of code:
$loader = new Twig_Loader_Filesystem('/path/to/templates', '/path/to/compilation_cache', true);
$twig = new Twig_Environment($loader);
to something like this:
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
'cache' => '/path/to/compilation_cache',
'auto_reload' => true,
));
|
78ffe478 |
* deprecated the "items" filter as it is not needed anymore
|
9584f0b3 |
* made cache and auto_reload options of Twig_Environment instead of arguments of Twig_Loader
* optimized template loading speed
* removed output when an error occurs in a template and render() is used
|
5d28604a |
* made major speed improvements for loops (up to 300% on even the smallest loops)
* added properties as part of the sandbox mode
* added public properties support (obj.item can now be the item property on the obj object)
* extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} )
* fixed bug when \ was used in HTML
|
a9397b64 |
* 0.9.2 (2009-10-29)
|
84bfd2da |
|
a9397b64 |
* made some speed optimizations
* changed the cache extension to .php
* added a js escaping strategy
* added support for short block tag
* changed the filter tag to allow chained filters
* made lexer more flexible as you can now change the default delimiters
* added set tag
* changed default directory permission when cache dir does not exist (more secure)
|
abc9c5d5 |
* added macro support
* changed filters first optional argument to be a Twig_Environment instance instead of a Twig_Template instance
|
7ce2c3db |
* made Twig_Autoloader::autoload() a static method
|
6f535bc8 |
* avoid writing template file if an error occurs
|
d11a3307 |
* added $ escaping when outputting raw strings
|
f63d478b |
* enhanced some error messages to ease debugging
|
92b715f5 |
* fixed empty cache files when the template contains an error
|
84bfd2da |
* 0.9.1 (2009-10-14)
|
00df3486 |
* fixed a bug in PHP 5.2.6
* fixed numbers with one than one decimal
* added support for method calls with arguments ({{ foo.bar('a', 43) }})
* made small speed optimizations
* made minor tweaks to allow better extensibility and flexibility
* 0.9.0 (2009-10-12)
|
0c98ebcd |
* Initial release
|