1
|
* 1.9.2 (2012-08-25)
|
2
|
|
3
|
* fixed the in operator for objects that contain circular references
|
4
|
* fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface
|
5
|
|
6
|
* 1.9.1 (2012-07-22)
|
7
|
|
8
|
* optimized macro calls when auto-escaping is on
|
9
|
* fixed wrong parent class for Twig_Function_Node
|
10
|
* made Twig_Loader_Chain more explicit about problems
|
11
|
|
12
|
* 1.9.0 (2012-07-13)
|
13
|
|
14
|
* made the parsing independent of the template loaders
|
15
|
* fixed exception trace when an error occurs when rendering a child template
|
16
|
* added escaping strategies for CSS, URL, and HTML attributes
|
17
|
* fixed nested embed tag calls
|
18
|
* added the date_modify filter
|
19
|
|
20
|
* 1.8.3 (2012-06-17)
|
21
|
|
22
|
* fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash
|
23
|
* fixed escaping when a project defines a function named html or js
|
24
|
* fixed chmod mode to apply the umask correctly
|
25
|
|
26
|
* 1.8.2 (2012-05-30)
|
27
|
|
28
|
* added the abs filter
|
29
|
* fixed a regression when using a number in template attributes
|
30
|
* fixed compiler when mbstring.func_overload is set to 2
|
31
|
* fixed DateTimeZone support in date filter
|
32
|
|
33
|
* 1.8.1 (2012-05-17)
|
34
|
|
35
|
* fixed a regression when dealing with SimpleXMLElement instances in templates
|
36
|
* fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini
|
37
|
* switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ)
|
38
|
|
39
|
* 1.8.0 (2012-05-08)
|
40
|
|
41
|
* enforced interface when adding tests, filters, functions, and node visitors from extensions
|
42
|
* fixed a side-effect of the date filter where the timezone might be changed
|
43
|
* simplified usage of the autoescape tag; the only (optional) argument is now the escaping strategy or false (with a BC layer)
|
44
|
* added a way to dynamically change the auto-escaping strategy according to the template "filename"
|
45
|
* changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html)
|
46
|
* added an embed tag
|
47
|
|
48
|
* 1.7.0 (2012-04-24)
|
49
|
|
50
|
* fixed a PHP warning when using CIFS
|
51
|
* fixed template line number in some exceptions
|
52
|
* added an iterable test
|
53
|
* added an error when defining two blocks with the same name in a template
|
54
|
* added the preserves_safety option for filters
|
55
|
* fixed a PHP notice when trying to access a key on a non-object/array variable
|
56
|
* enhanced error reporting when the template file is an instance of SplFileInfo
|
57
|
* added Twig_Environment::mergeGlobals()
|
58
|
* added compilation checks to avoid misuses of the sandbox tag
|
59
|
* fixed filesystem loader freshness logic for high traffic websites
|
60
|
* fixed random function when charset is null
|
61
|
|
62
|
* 1.6.5 (2012-04-11)
|
63
|
|
64
|
* fixed a regression when a template only extends another one without defining any blocks
|
65
|
|
66
|
* 1.6.4 (2012-04-02)
|
67
|
|
68
|
* fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3
|
69
|
* fixed performance when compiling large files
|
70
|
* optimized parent template creation when the template does not use dynamic inheritance
|
71
|
|
72
|
* 1.6.3 (2012-03-22)
|
73
|
|
74
|
* fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension
|
75
|
* fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot
|
76
|
* made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate
|
77
|
|
78
|
* 1.6.2 (2012-03-18)
|
79
|
|
80
|
* fixed sandbox mode when used with inheritance
|
81
|
* added preserveKeys support for the slice filter
|
82
|
* fixed the date filter when a DateTime instance is passed with a specific timezone
|
83
|
* added a trim filter
|
84
|
|
85
|
* 1.6.1 (2012-02-29)
|
86
|
|
87
|
* fixed Twig C extension
|
88
|
* removed the creation of Twig_Markup instances when not needed
|
89
|
* added a way to set the default global timezone for dates
|
90
|
* fixed the slice filter on strings when the length is not specified
|
91
|
* fixed the creation of the cache directory in case of a race condition
|
92
|
|
93
|
* 1.6.0 (2012-02-04)
|
94
|
|
95
|
* fixed raw blocks when used with the whitespace trim option
|
96
|
* made a speed optimization to macro calls when imported via the "from" tag
|
97
|
* fixed globals, parsers, visitors, filters, tests, and functions management in Twig_Environment when a new one or new extension is added
|
98
|
* fixed the attribute function when passing arguments
|
99
|
* added slice notation support for the [] operator (syntactic sugar for the slice operator)
|
100
|
* added a slice filter
|
101
|
* added string support for the reverse filter
|
102
|
* fixed the empty test and the length filter for Twig_Markup instances
|
103
|
* added a date function to ease date comparison
|
104
|
* fixed unary operators precedence
|
105
|
* added recursive parsing support in the parser
|
106
|
* added string and integer handling for the random function
|
107
|
|
108
|
* 1.5.1 (2012-01-05)
|
109
|
|
110
|
* fixed a regression when parsing strings
|
111
|
|
112
|
* 1.5.0 (2012-01-04)
|
113
|
|
114
|
* added Traversable objects support for the join filter
|
115
|
|
116
|
* 1.5.0-RC2 (2011-12-30)
|
117
|
|
118
|
* added a way to set the default global date interval format
|
119
|
* fixed the date filter for DateInterval instances (setTimezone() does not exist for them)
|
120
|
* refactored Twig_Template::display() to ease its extension
|
121
|
* added a number_format filter
|
122
|
|
123
|
* 1.5.0-RC1 (2011-12-26)
|
124
|
|
125
|
* removed the need to quote hash keys
|
126
|
* allowed hash keys to be any expression
|
127
|
* added a do tag
|
128
|
* added a flush tag
|
129
|
* added support for dynamically named filters and functions
|
130
|
* added a dump function to help debugging templates
|
131
|
* added a nl2br filter
|
132
|
* added a random function
|
133
|
* added a way to change the default format for the date filter
|
134
|
* fixed the lexer when an operator ending with a letter ends a line
|
135
|
* added string interpolation support
|
136
|
* enhanced exceptions for unknown filters, functions, tests, and tags
|
137
|
|
138
|
* 1.4.0 (2011-12-07)
|
139
|
|
140
|
* fixed lexer when using big numbers (> PHP_INT_MAX)
|
141
|
* added missing preserveKeys argument to the reverse filter
|
142
|
* fixed macros containing filter tag calls
|
143
|
|
144
|
* 1.4.0-RC2 (2011-11-27)
|
145
|
|
146
|
* removed usage of Reflection in Twig_Template::getAttribute()
|
147
|
* added a C extension that can optionally replace Twig_Template::getAttribute()
|
148
|
* added negative timestamp support to the date filter
|
149
|
|
150
|
* 1.4.0-RC1 (2011-11-20)
|
151
|
|
152
|
* optimized variable access when using PHP 5.4
|
153
|
* changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby
|
154
|
* added an Exception to Twig_Loader_Array::isFresh() method when the template does not exist to be consistent with other loaders
|
155
|
* added Twig_Function_Node to allow more complex functions to have their own Node class
|
156
|
* added Twig_Filter_Node to allow more complex filters to have their own Node class
|
157
|
* added Twig_Test_Node to allow more complex tests to have their own Node class
|
158
|
* added a better error message when a template is empty but contain a BOM
|
159
|
* fixed "in" operator for empty strings
|
160
|
* 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)
|
161
|
* changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order)
|
162
|
* added Twig_Environment::display()
|
163
|
* made the escape filter smarter when the encoding is not supported by PHP
|
164
|
* added a convert_encoding filter
|
165
|
* moved all node manipulations outside the compile() Node method
|
166
|
* made several speed optimizations
|
167
|
|
168
|
* 1.3.0 (2011-10-08)
|
169
|
|
170
|
no changes
|
171
|
|
172
|
* 1.3.0-RC1 (2011-10-04)
|
173
|
|
174
|
* added an optimization for the parent() function
|
175
|
* added cache reloading when auto_reload is true and an extension has been modified
|
176
|
* added the possibility to force the escaping of a string already marked as safe (instance of Twig_Markup)
|
177
|
* allowed empty templates to be used as traits
|
178
|
* added traits support for the "parent" function
|
179
|
|
180
|
* 1.2.0 (2011-09-13)
|
181
|
|
182
|
no changes
|
183
|
|
184
|
* 1.2.0-RC1 (2011-09-10)
|
185
|
|
186
|
* enhanced the exception when a tag remains unclosed
|
187
|
* added support for empty Countable objects for the "empty" test
|
188
|
* fixed algorithm that determines if a template using inheritance is valid (no output between block definitions)
|
189
|
* added better support for encoding problems when escaping a string (available as of PHP 5.4)
|
190
|
* added a way to ignore a missing template when using the "include" tag ({% include "foo" ignore missing %})
|
191
|
* added support for an array of templates to the "include" and "extends" tags ({% include ['foo', 'bar'] %})
|
192
|
* added support for bitwise operators in expressions
|
193
|
* added the "attribute" function to allow getting dynamic attributes on variables
|
194
|
* added Twig_Loader_Chain
|
195
|
* added Twig_Loader_Array::setTemplate()
|
196
|
* added an optimization for the set tag when used to capture a large chunk of static text
|
197
|
* 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)
|
198
|
* removed the possibility to use the "extends" tag from a block
|
199
|
* added "if" modifier support to "for" loops
|
200
|
|
201
|
* 1.1.2 (2011-07-30)
|
202
|
|
203
|
* fixed json_encode filter on PHP 5.2
|
204
|
* fixed regression introduced in 1.1.1 ({{ block(foo|lower) }})
|
205
|
* fixed inheritance when using conditional parents
|
206
|
* fixed compilation of templates when the body of a child template is not empty
|
207
|
* fixed output when a macro throws an exception
|
208
|
* fixed a parsing problem when a large chunk of text is enclosed in a comment tag
|
209
|
* added PHPDoc for all Token parsers and Core extension functions
|
210
|
|
211
|
* 1.1.1 (2011-07-17)
|
212
|
|
213
|
* added a performance optimization in the Optimizer (also helps to lower the number of nested level calls)
|
214
|
* made some performance improvement for some edge cases
|
215
|
|
216
|
* 1.1.0 (2011-06-28)
|
217
|
|
218
|
* fixed json_encode filter
|
219
|
|
220
|
* 1.1.0-RC3 (2011-06-24)
|
221
|
|
222
|
* fixed method case-sensitivity when using the sandbox mode
|
223
|
* added timezone support for the date filter
|
224
|
* fixed possible security problems with NUL bytes
|
225
|
|
226
|
* 1.1.0-RC2 (2011-06-16)
|
227
|
|
228
|
* added an exception when the template passed to "use" is not a string
|
229
|
* made 'a.b is defined' not throw an exception if a is not defined (in strict mode)
|
230
|
* added {% line \d+ %} directive
|
231
|
|
232
|
* 1.1.0-RC1 (2011-05-28)
|
233
|
|
234
|
Flush your cache after upgrading.
|
235
|
|
236
|
* fixed date filter when using a timestamp
|
237
|
* fixed the defined test for some cases
|
238
|
* fixed a parsing problem when a large chunk of text is enclosed in a raw tag
|
239
|
* added support for horizontal reuse of template blocks (see docs for more information)
|
240
|
* added whitespace control modifier to all tags (see docs for more information)
|
241
|
* added null as an alias for none (the null test is also an alias for the none test now)
|
242
|
* made TRUE, FALSE, NONE equivalent to their lowercase counterparts
|
243
|
* wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line
|
244
|
* moved display() method to Twig_Template (generated templates should now use doDisplay() instead)
|
245
|
|
246
|
* 1.0.0 (2011-03-27)
|
247
|
|
248
|
* fixed output when using mbstring
|
249
|
* fixed duplicate call of methods when using the sandbox
|
250
|
* made the charset configurable for the escape filter
|
251
|
|
252
|
* 1.0.0-RC2 (2011-02-21)
|
253
|
|
254
|
* changed the way {% set %} works when capturing (the content is now marked as safe)
|
255
|
* added support for macro name in the endmacro tag
|
256
|
* make Twig_Error compatible with PHP 5.3.0 >
|
257
|
* fixed an infinite loop on some Windows configurations
|
258
|
* fixed the "length" filter for numbers
|
259
|
* fixed Template::getAttribute() as properties in PHP are case sensitive
|
260
|
* removed coupling between Twig_Node and Twig_Template
|
261
|
* fixed the ternary operator precedence rule
|
262
|
|
263
|
* 1.0.0-RC1 (2011-01-09)
|
264
|
|
265
|
Backward incompatibilities:
|
266
|
|
267
|
* the "items" filter, which has been deprecated for quite a long time now, has been removed
|
268
|
* the "range" filter has been converted to a function: 0|range(10) -> range(0, 10)
|
269
|
* the "constant" filter has been converted to a function: {{ some_date|date('DATE_W3C'|constant) }} -> {{ some_date|date(constant('DATE_W3C')) }}
|
270
|
* the "cycle" filter has been converted to a function: {{ ['odd', 'even']|cycle(i) }} -> {{ cycle(['odd', 'even'], i) }}
|
271
|
* the "for" tag does not support "joined by" anymore
|
272
|
* the "autoescape" first argument is now "true"/"false" (instead of "on"/"off")
|
273
|
* the "parent" tag has been replaced by a "parent" function ({{ parent() }} instead of {% parent %})
|
274
|
* the "display" tag has been replaced by a "block" function ({{ block('title') }} instead of {% display title %})
|
275
|
* removed the grammar and simple token parser (moved to the Twig Extensions repository)
|
276
|
|
277
|
Changes:
|
278
|
|
279
|
* added "needs_context" option for filters and functions (the context is then passed as a first argument)
|
280
|
* added global variables support
|
281
|
* made macros return their value instead of echoing directly (fixes calling a macro in sandbox mode)
|
282
|
* added the "from" tag to import macros as functions
|
283
|
* added support for functions (a function is just syntactic sugar for a getAttribute() call)
|
284
|
* made macros callable when sandbox mode is enabled
|
285
|
* added an exception when a macro uses a reserved name
|
286
|
* the "default" filter now uses the "empty" test instead of just checking for null
|
287
|
* added the "empty" test
|
288
|
|
289
|
* 0.9.10 (2010-12-16)
|
290
|
|
291
|
Backward incompatibilities:
|
292
|
|
293
|
* The Escaper extension is enabled by default, which means that all displayed
|
294
|
variables are now automatically escaped. You can revert to the previous
|
295
|
behavior by removing the extension via $env->removeExtension('escaper')
|
296
|
or just set the 'autoescape' option to 'false'.
|
297
|
* removed the "without loop" attribute for the "for" tag (not needed anymore
|
298
|
as the Optimizer take care of that for most cases)
|
299
|
* arrays and hashes have now a different syntax
|
300
|
* arrays keep the same syntax with square brackets: [1, 2]
|
301
|
* hashes now use curly braces (["a": "b"] should now be written as {"a": "b"})
|
302
|
* support for "arrays with keys" and "hashes without keys" is not supported anymore ([1, "foo": "bar"] or {"foo": "bar", 1})
|
303
|
* the i18n extension is now part of the Twig Extensions repository
|
304
|
|
305
|
Changes:
|
306
|
|
307
|
* added the merge filter
|
308
|
* removed 'is_escaper' option for filters (a left over from the previous version) -- you must use 'is_safe' now instead
|
309
|
* fixed usage of operators as method names (like is, in, and not)
|
310
|
* changed the order of execution for node visitors
|
311
|
* fixed default() filter behavior when used with strict_variables set to on
|
312
|
* fixed filesystem loader compatibility with PHAR files
|
313
|
* enhanced error messages when an unexpected token is parsed in an expression
|
314
|
* fixed filename not being added to syntax error messages
|
315
|
* added the autoescape option to enable/disable autoescaping
|
316
|
* removed the newline after a comment (mimicks PHP behavior)
|
317
|
* added a syntax error exception when parent block is used on a template that does not extend another one
|
318
|
* made the Escaper extension enabled by default
|
319
|
* fixed sandbox extension when used with auto output escaping
|
320
|
* fixed escaper when wrapping a Twig_Node_Print (the original class must be preserved)
|
321
|
* added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters)
|
322
|
* added priority to node visitors
|
323
|
|
324
|
* 0.9.9 (2010-11-28)
|
325
|
|
326
|
Backward incompatibilities:
|
327
|
* the self special variable has been renamed to _self
|
328
|
* the odd and even filters are now tests:
|
329
|
{{ foo|odd }} must now be written {{ foo is odd }}
|
330
|
* the "safe" filter has been renamed to "raw"
|
331
|
* in Node classes,
|
332
|
sub-nodes are now accessed via getNode() (instead of property access)
|
333
|
attributes via getAttribute() (instead of array access)
|
334
|
* the urlencode filter had been renamed to url_encode
|
335
|
* the include tag now merges the passed variables with the current context by default
|
336
|
(the old behavior is still possible by adding the "only" keyword)
|
337
|
* moved Exceptions to Twig_Error_* (Twig_SyntaxError/Twig_RuntimeError are now Twig_Error_Syntax/Twig_Error_Runtime)
|
338
|
* removed support for {{ 1 < i < 3 }} (use {{ i > 1 and i < 3 }} instead)
|
339
|
* the "in" filter has been removed ({{ a|in(b) }} should now be written {{ a in b }})
|
340
|
|
341
|
Changes:
|
342
|
* added file and line to Twig_Error_Runtime exceptions thrown from Twig_Template
|
343
|
* changed trans tag to accept any variable for the plural count
|
344
|
* fixed sandbox mode (__toString() method check was not enforced if called implicitly from complex statements)
|
345
|
* added the ** (power) operator
|
346
|
* changed the algorithm used for parsing expressions
|
347
|
* added the spaceless tag
|
348
|
* removed trim_blocks option
|
349
|
* added support for is*() methods for attributes (foo.bar now looks for foo->getBar() or foo->isBar())
|
350
|
* changed all exceptions to extend Twig_Error
|
351
|
* fixed unary expressions ({{ not(1 or 0) }})
|
352
|
* fixed child templates (with an extend tag) that uses one or more imports
|
353
|
* added support for {{ 1 not in [2, 3] }} (more readable than the current {{ not (1 in [2, 3]) }})
|
354
|
* escaping has been rewritten
|
355
|
* the implementation of template inheritance has been rewritten
|
356
|
(blocks can now be called individually and still work with inheritance)
|
357
|
* fixed error handling for if tag when a syntax error occurs within a subparse process
|
358
|
* added a way to implement custom logic for resolving token parsers given a tag name
|
359
|
* fixed js escaper to be stricter (now uses a whilelist-based js escaper)
|
360
|
* added the following filers: "constant", "trans", "replace", "json_encode"
|
361
|
* added a "constant" test
|
362
|
* fixed objects with __toString() not being autoescaped
|
363
|
* fixed subscript expressions when calling __call() (methods now keep the case)
|
364
|
* added "test" feature (accessible via the "is" operator)
|
365
|
* removed the debug tag (should be done in an extension)
|
366
|
* fixed trans tag when no vars are used in plural form
|
367
|
* fixed race condition when writing template cache
|
368
|
* added the special _charset variable to reference the current charset
|
369
|
* added the special _context variable to reference the current context
|
370
|
* renamed self to _self (to avoid conflict)
|
371
|
* fixed Twig_Template::getAttribute() for protected properties
|
372
|
|
373
|
* 0.9.8 (2010-06-28)
|
374
|
|
375
|
Backward incompatibilities:
|
376
|
* the trans tag plural count is now attached to the plural tag:
|
377
|
old: `{% trans count %}...{% plural %}...{% endtrans %}`
|
378
|
new: `{% trans %}...{% plural count %}...{% endtrans %}`
|
379
|
|
380
|
* added a way to translate strings coming from a variable ({% trans var %})
|
381
|
* fixed trans tag when used with the Escaper extension
|
382
|
* fixed default cache umask
|
383
|
* removed Twig_Template instances from the debug tag output
|
384
|
* fixed objects with __isset() defined
|
385
|
* fixed set tag when used with a capture
|
386
|
* fixed type hinting for Twig_Environment::addFilter() method
|
387
|
|
388
|
* 0.9.7 (2010-06-12)
|
389
|
|
390
|
Backward incompatibilities:
|
391
|
* changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %})
|
392
|
* removed the sandboxed attribute of the include tag (use the new sandbox tag instead)
|
393
|
* refactored the Node system (if you have custom nodes, you will have to update them to use the new API)
|
394
|
|
395
|
* added self as a special variable that refers to the current template (useful for importing macros from the current template)
|
396
|
* added Twig_Template instance support to the include tag
|
397
|
* added support for dynamic and conditional inheritance ({% extends some_var %} and {% extends standalone ? "minimum" : "base" %})
|
398
|
* added a grammar sub-framework to ease the creation of custom tags
|
399
|
* fixed the for tag for large arrays (some loop variables are now only available for arrays and objects that implement the Countable interface)
|
400
|
* removed the Twig_Resource::resolveMissingFilter() method
|
401
|
* fixed the filter tag which did not apply filtering to included files
|
402
|
* added a bunch of unit tests
|
403
|
* added a bunch of phpdoc
|
404
|
* added a sandbox tag in the sandbox extension
|
405
|
* changed the date filter to support any date format supported by DateTime
|
406
|
* added strict_variable setting to throw an exception when an invalid variable is used in a template (disabled by default)
|
407
|
* added the lexer, parser, and compiler as arguments to the Twig_Environment constructor
|
408
|
* changed the cache option to only accepts an explicit path to a cache directory or false
|
409
|
* added a way to add token parsers, filters, and visitors without creating an extension
|
410
|
* added three interfaces: Twig_NodeInterface, Twig_TokenParserInterface, and Twig_FilterInterface
|
411
|
* changed the generated code to match the new coding standards
|
412
|
* fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }})
|
413
|
* added an exception when a child template has a non-empty body (as it is always ignored when rendering)
|
414
|
|
415
|
* 0.9.6 (2010-05-12)
|
416
|
|
417
|
* fixed variables defined outside a loop and for which the value changes in a for loop
|
418
|
* fixed the test suite for PHP 5.2 and older versions of PHPUnit
|
419
|
* added support for __call() in expression resolution
|
420
|
* fixed node visiting for macros (macros are now visited by visitors as any other node)
|
421
|
* fixed nested block definitions with a parent call (rarely useful but nonetheless supported now)
|
422
|
* added the cycle filter
|
423
|
* fixed the Lexer when mbstring.func_overload is used with an mbstring.internal_encoding different from ASCII
|
424
|
* added a long-syntax for the set tag ({% set foo %}...{% endset %})
|
425
|
* unit tests are now powered by PHPUnit
|
426
|
* added support for gettext via the `i18n` extension
|
427
|
* fixed twig_capitalize_string_filter() and fixed twig_length_filter() when used with UTF-8 values
|
428
|
* added a more useful exception if an if tag is not closed properly
|
429
|
* added support for escaping strategy in the autoescape tag
|
430
|
* fixed lexer when a template has a big chunk of text between/in a block
|
431
|
|
432
|
* 0.9.5 (2010-01-20)
|
433
|
|
434
|
As for any new release, don't forget to remove all cached templates after
|
435
|
upgrading.
|
436
|
|
437
|
If you have defined custom filters, you MUST upgrade them for this release. To
|
438
|
upgrade, replace "array" with "new Twig_Filter_Function", and replace the
|
439
|
environment constant by the "needs_environment" option:
|
440
|
|
441
|
// before
|
442
|
'even' => array('twig_is_even_filter', false),
|
443
|
'escape' => array('twig_escape_filter', true),
|
444
|
|
445
|
// after
|
446
|
'even' => new Twig_Filter_Function('twig_is_even_filter'),
|
447
|
'escape' => new Twig_Filter_Function('twig_escape_filter', array('needs_environment' => true)),
|
448
|
|
449
|
If you have created NodeTransformer classes, you will need to upgrade them to
|
450
|
the new interface (please note that the interface is not yet considered
|
451
|
stable).
|
452
|
|
453
|
* fixed list nodes that did not extend the Twig_NodeListInterface
|
454
|
* added the "without loop" option to the for tag (it disables the generation of the loop variable)
|
455
|
* refactored node transformers to node visitors
|
456
|
* fixed automatic-escaping for blocks
|
457
|
* added a way to specify variables to pass to an included template
|
458
|
* changed the automatic-escaping rules to be more sensible and more configurable in custom filters (the documentation lists all the rules)
|
459
|
* improved the filter system to allow object methods to be used as filters
|
460
|
* changed the Array and String loaders to actually make use of the cache mechanism
|
461
|
* included the default filter function definitions in the extension class files directly (Core, Escaper)
|
462
|
* added the // operator (like the floor() PHP function)
|
463
|
* added the .. operator (as a syntactic sugar for the range filter when the step is 1)
|
464
|
* added the in operator (as a syntactic sugar for the in filter)
|
465
|
* added the following filters in the Core extension: in, range
|
466
|
* added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes)
|
467
|
* enhanced some error messages to provide better feedback in case of parsing errors
|
468
|
|
469
|
* 0.9.4 (2009-12-02)
|
470
|
|
471
|
If you have custom loaders, you MUST upgrade them for this release: The
|
472
|
Twig_Loader base class has been removed, and the Twig_LoaderInterface has also
|
473
|
been changed (see the source code for more information or the documentation).
|
474
|
|
475
|
* added support for DateTime instances for the date filter
|
476
|
* fixed loop.last when the array only has one item
|
477
|
* made it possible to insert newlines in tag and variable blocks
|
478
|
* fixed a bug when a literal '\n' were present in a template text
|
479
|
* fixed bug when the filename of a template contains */
|
480
|
* refactored loaders
|
481
|
|
482
|
* 0.9.3 (2009-11-11)
|
483
|
|
484
|
This release is NOT backward compatible with the previous releases.
|
485
|
|
486
|
The loaders do not take the cache and autoReload arguments anymore. Instead,
|
487
|
the Twig_Environment class has two new options: cache and auto_reload.
|
488
|
Upgrading your code means changing this kind of code:
|
489
|
|
490
|
$loader = new Twig_Loader_Filesystem('/path/to/templates', '/path/to/compilation_cache', true);
|
491
|
$twig = new Twig_Environment($loader);
|
492
|
|
493
|
to something like this:
|
494
|
|
495
|
$loader = new Twig_Loader_Filesystem('/path/to/templates');
|
496
|
$twig = new Twig_Environment($loader, array(
|
497
|
'cache' => '/path/to/compilation_cache',
|
498
|
'auto_reload' => true,
|
499
|
));
|
500
|
|
501
|
* deprecated the "items" filter as it is not needed anymore
|
502
|
* made cache and auto_reload options of Twig_Environment instead of arguments of Twig_Loader
|
503
|
* optimized template loading speed
|
504
|
* removed output when an error occurs in a template and render() is used
|
505
|
* made major speed improvements for loops (up to 300% on even the smallest loops)
|
506
|
* added properties as part of the sandbox mode
|
507
|
* added public properties support (obj.item can now be the item property on the obj object)
|
508
|
* extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} )
|
509
|
* fixed bug when \ was used in HTML
|
510
|
|
511
|
* 0.9.2 (2009-10-29)
|
512
|
|
513
|
* made some speed optimizations
|
514
|
* changed the cache extension to .php
|
515
|
* added a js escaping strategy
|
516
|
* added support for short block tag
|
517
|
* changed the filter tag to allow chained filters
|
518
|
* made lexer more flexible as you can now change the default delimiters
|
519
|
* added set tag
|
520
|
* changed default directory permission when cache dir does not exist (more secure)
|
521
|
* added macro support
|
522
|
* changed filters first optional argument to be a Twig_Environment instance instead of a Twig_Template instance
|
523
|
* made Twig_Autoloader::autoload() a static method
|
524
|
* avoid writing template file if an error occurs
|
525
|
* added $ escaping when outputting raw strings
|
526
|
* enhanced some error messages to ease debugging
|
527
|
* fixed empty cache files when the template contains an error
|
528
|
|
529
|
* 0.9.1 (2009-10-14)
|
530
|
|
531
|
* fixed a bug in PHP 5.2.6
|
532
|
* fixed numbers with one than one decimal
|
533
|
* added support for method calls with arguments ({{ foo.bar('a', 43) }})
|
534
|
* made small speed optimizations
|
535
|
* made minor tweaks to allow better extensibility and flexibility
|
536
|
|
537
|
* 0.9.0 (2009-10-12)
|
538
|
|
539
|
* Initial release
|