Revision 1851
Added by darkviper almost 12 years ago
branches/2.8.x/wb/include/Twig/DOCS/LICENSE | ||
---|---|---|
1 |
Copyright (c) 2009 by the Twig Team, see AUTHORS for more details. |
|
2 |
|
|
3 |
Some rights reserved. |
|
4 |
|
|
5 |
Redistribution and use in source and binary forms, with or without |
|
6 |
modification, are permitted provided that the following conditions are |
|
7 |
met: |
|
8 |
|
|
9 |
* Redistributions of source code must retain the above copyright |
|
10 |
notice, this list of conditions and the following disclaimer. |
|
11 |
|
|
12 |
* Redistributions in binary form must reproduce the above |
|
13 |
copyright notice, this list of conditions and the following |
|
14 |
disclaimer in the documentation and/or other materials provided |
|
15 |
with the distribution. |
|
16 |
|
|
17 |
* The names of the contributors may not be used to endorse or |
|
18 |
promote products derived from this software without specific |
|
19 |
prior written permission. |
|
20 |
|
|
21 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
22 |
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|
23 |
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|
24 |
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|
25 |
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|
26 |
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|
27 |
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|
28 |
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|
29 |
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
30 |
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
31 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
branches/2.8.x/wb/include/Twig/DOCS/CHANGELOG | ||
---|---|---|
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 |
branches/2.8.x/wb/include/Twig/DOCS/Twig.pdf | ||
---|---|---|
1 |
%PDF-1.4 |
|
2 |
%???? |
|
3 |
|
|
4 |
1 0 obj |
|
5 |
<</Type /Catalog |
|
6 |
/Pages 2 0 R |
|
7 |
/Outlines 148 0 R>> |
|
8 |
endobj |
|
9 |
|
|
10 |
220 0 obj |
|
11 |
<</Title () |
|
12 |
/Parent 149 0 R |
|
13 |
/Dest [3 0 R /XYZ 0 621 0]>> |
|
14 |
endobj |
|
15 |
|
|
16 |
149 0 obj |
|
17 |
<</Title (The Twig Book generated on August 31, 2012) |
|
18 |
/Parent 148 0 R |
|
19 |
/Dest [3 0 R /XYZ 0 661 0] |
|
20 |
/Next 150 0 R |
|
21 |
/First 220 0 R |
|
22 |
/Last 220 0 R |
|
23 |
/Count -1>> |
|
24 |
endobj |
|
25 |
|
|
26 |
150 0 obj |
|
27 |
<</Title (Contents at a Glance) |
|
28 |
/Parent 148 0 R |
|
29 |
/Dest [5 0 R /XYZ 0 771 0] |
|
30 |
/Prev 149 0 R |
|
31 |
/Next 151 0 R>> |
|
32 |
endobj |
|
33 |
|
|
34 |
221 0 obj |
|
35 |
<</Title (Prerequisites) |
|
36 |
/Parent 151 0 R |
|
37 |
/Dest [7 0 R /XYZ 0 324 0] |
|
38 |
/Next 222 0 R>> |
|
39 |
endobj |
|
40 |
|
|
41 |
224 0 obj |
|
42 |
<</Title (Installing from the tarball release) |
|
43 |
/Parent 222 0 R |
|
44 |
/Dest [7 0 R /XYZ 0 195 0] |
|
45 |
/Next 225 0 R>> |
|
46 |
endobj |
|
47 |
|
|
48 |
225 0 obj |
|
49 |
<</Title (Installing the development version) |
|
50 |
/Parent 222 0 R |
|
51 |
/Dest [8 0 R /XYZ 0 771 0] |
|
52 |
/Prev 224 0 R |
|
53 |
/Next 226 0 R>> |
|
54 |
endobj |
|
55 |
|
|
56 |
226 0 obj |
|
57 |
<</Title (Installing the PEAR package) |
|
58 |
/Parent 222 0 R |
|
59 |
/Dest [8 0 R /XYZ 0 693 0] |
|
60 |
/Prev 225 0 R |
|
61 |
/Next 227 0 R>> |
|
62 |
endobj |
|
63 |
|
|
64 |
227 0 obj |
|
65 |
<</Title (Installing via Composer) |
|
66 |
/Parent 222 0 R |
|
67 |
/Dest [8 0 R /XYZ 0 615 0] |
|
68 |
/Prev 226 0 R |
|
69 |
/Next 228 0 R>> |
|
70 |
endobj |
|
71 |
|
|
72 |
228 0 obj |
|
73 |
<</Title (Installing the C extension) |
|
74 |
/Parent 222 0 R |
|
75 |
/Dest [8 0 R /XYZ 0 248 0] |
|
76 |
/Prev 227 0 R>> |
|
77 |
endobj |
|
78 |
|
|
79 |
222 0 obj |
|
80 |
<</Title (Installation) |
|
81 |
/Parent 151 0 R |
|
82 |
/Dest [7 0 R /XYZ 0 257 0] |
|
83 |
/Prev 221 0 R |
|
84 |
/Next 223 0 R |
|
85 |
/First 224 0 R |
|
86 |
/Last 228 0 R |
|
87 |
/Count 5>> |
|
88 |
endobj |
|
89 |
|
|
90 |
223 0 obj |
|
91 |
<</Title (Basic API Usage) |
|
92 |
/Parent 151 0 R |
|
93 |
/Dest [9 0 R /XYZ 0 473 0] |
|
94 |
/Prev 222 0 R>> |
|
95 |
endobj |
|
96 |
|
|
97 |
151 0 obj |
|
98 |
<</Title (Introduction) |
|
99 |
/Parent 148 0 R |
|
100 |
/Dest [7 0 R /XYZ 0 771 0] |
|
101 |
/Prev 150 0 R |
|
102 |
/Next 152 0 R |
|
103 |
/First 221 0 R |
|
104 |
/Last 223 0 R |
|
105 |
/Count -3>> |
|
106 |
endobj |
|
107 |
|
|
108 |
229 0 obj |
|
109 |
<</Title (Synopsis) |
|
110 |
/Parent 152 0 R |
|
111 |
/Dest [11 0 R /XYZ 0 454 0] |
|
112 |
/Next 230 0 R>> |
|
113 |
endobj |
|
114 |
|
|
115 |
230 0 obj |
|
116 |
<</Title (IDEs Integration) |
|
117 |
/Parent 152 0 R |
|
118 |
/Dest [12 0 R /XYZ 0 771 0] |
|
119 |
/Prev 229 0 R |
|
120 |
/Next 231 0 R>> |
|
121 |
endobj |
|
122 |
|
|
123 |
244 0 obj |
|
124 |
<</Title (Global Variables) |
|
125 |
/Parent 231 0 R |
|
126 |
/Dest [13 0 R /XYZ 0 474 0] |
|
127 |
/Next 245 0 R>> |
|
128 |
endobj |
|
129 |
|
|
130 |
245 0 obj |
|
131 |
<</Title (Setting Variables) |
|
132 |
/Parent 231 0 R |
|
133 |
/Dest [13 0 R /XYZ 0 374 0] |
|
134 |
/Prev 244 0 R>> |
|
135 |
endobj |
|
136 |
|
|
137 |
231 0 obj |
|
138 |
<</Title (Variables) |
|
139 |
/Parent 152 0 R |
|
140 |
/Dest [12 0 R /XYZ 0 551 0] |
|
141 |
/Prev 230 0 R |
|
142 |
/Next 232 0 R |
|
143 |
/First 244 0 R |
|
144 |
/Last 245 0 R |
|
145 |
/Count 2>> |
|
146 |
endobj |
|
147 |
|
|
148 |
232 0 obj |
|
149 |
<</Title (Filters) |
|
150 |
/Parent 152 0 R |
|
151 |
/Dest [13 0 R /XYZ 0 241 0] |
|
152 |
/Prev 231 0 R |
|
153 |
/Next 233 0 R>> |
|
154 |
endobj |
|
155 |
|
|
156 |
233 0 obj |
|
157 |
<</Title (Functions) |
|
158 |
/Parent 152 0 R |
|
159 |
/Dest [14 0 R /XYZ 0 550 0] |
|
160 |
/Prev 232 0 R |
|
161 |
/Next 234 0 R>> |
|
162 |
endobj |
|
163 |
|
|
164 |
234 0 obj |
|
165 |
<</Title (Control Structure) |
|
166 |
/Parent 152 0 R |
|
167 |
/Dest [14 0 R /XYZ 0 355 0] |
|
168 |
/Prev 233 0 R |
|
169 |
/Next 235 0 R>> |
|
170 |
endobj |
|
171 |
|
|
172 |
235 0 obj |
|
173 |
<</Title (Comments) |
|
174 |
/Parent 152 0 R |
|
175 |
/Dest [15 0 R /XYZ 0 638 0] |
|
176 |
/Prev 234 0 R |
|
177 |
/Next 236 0 R>> |
|
178 |
endobj |
|
179 |
|
|
180 |
236 0 obj |
|
181 |
<</Title (Including other Templates) |
|
182 |
/Parent 152 0 R |
|
183 |
/Dest [15 0 R /XYZ 0 460 0] |
|
184 |
/Prev 235 0 R |
|
185 |
/Next 237 0 R>> |
|
186 |
endobj |
|
187 |
|
|
188 |
237 0 obj |
|
189 |
<</Title (Template Inheritance) |
|
190 |
/Parent 152 0 R |
|
191 |
/Dest [16 0 R /XYZ 0 771 0] |
|
192 |
/Prev 236 0 R |
|
193 |
/Next 238 0 R>> |
|
194 |
endobj |
|
195 |
|
|
196 |
246 0 obj |
|
197 |
<</Title (Working with Manual Escaping) |
|
198 |
/Parent 238 0 R |
|
199 |
/Dest [17 0 R /XYZ 0 328 0] |
|
200 |
/Next 247 0 R>> |
|
201 |
endobj |
|
202 |
|
|
203 |
247 0 obj |
|
204 |
<</Title (Working with Automatic Escaping) |
|
205 |
/Parent 238 0 R |
|
206 |
/Dest [17 0 R /XYZ 0 121 0] |
|
207 |
/Prev 246 0 R>> |
|
208 |
endobj |
|
209 |
|
|
210 |
238 0 obj |
|
211 |
<</Title (HTML Escaping) |
|
212 |
/Parent 152 0 R |
|
213 |
/Dest [17 0 R /XYZ 0 495 0] |
|
214 |
/Prev 237 0 R |
|
215 |
/Next 239 0 R |
|
216 |
/First 246 0 R |
|
217 |
/Last 247 0 R |
|
218 |
/Count 2>> |
|
219 |
endobj |
|
220 |
|
|
221 |
239 0 obj |
|
222 |
<</Title (Escaping) |
|
223 |
/Parent 152 0 R |
|
224 |
/Dest [18 0 R /XYZ 0 573 0] |
|
225 |
/Prev 238 0 R |
|
226 |
/Next 240 0 R>> |
|
227 |
endobj |
|
228 |
|
|
229 |
240 0 obj |
|
230 |
<</Title (Macros) |
|
231 |
/Parent 152 0 R |
|
232 |
/Dest [18 0 R /XYZ 0 388 0] |
|
233 |
/Prev 239 0 R |
|
234 |
/Next 241 0 R>> |
|
235 |
endobj |
|
236 |
|
|
237 |
248 0 obj |
|
238 |
<</Title (Literals) |
|
239 |
/Parent 241 0 R |
|
240 |
/Dest [19 0 R /XYZ 0 490 0] |
|
241 |
/Next 249 0 R>> |
|
242 |
endobj |
|
243 |
|
|
244 |
249 0 obj |
|
245 |
<</Title (Math) |
|
246 |
/Parent 241 0 R |
|
247 |
/Dest [20 0 R /XYZ 0 508 0] |
|
248 |
/Prev 248 0 R |
|
249 |
/Next 250 0 R>> |
|
250 |
endobj |
|
251 |
|
|
252 |
250 0 obj |
|
253 |
<</Title (Logic) |
|
254 |
/Parent 241 0 R |
|
255 |
/Dest [20 0 R /XYZ 0 332 0] |
|
256 |
/Prev 249 0 R |
|
257 |
/Next 251 0 R>> |
|
258 |
endobj |
|
259 |
|
|
260 |
251 0 obj |
|
261 |
<</Title (Comparisons) |
|
262 |
/Parent 241 0 R |
|
263 |
/Dest [20 0 R /XYZ 0 154 0] |
|
264 |
/Prev 250 0 R |
|
265 |
/Next 252 0 R>> |
|
266 |
endobj |
|
267 |
|
|
268 |
252 0 obj |
|
269 |
<</Title (Containment Operator) |
|
270 |
/Parent 241 0 R |
|
271 |
/Dest [21 0 R /XYZ 0 771 0] |
|
272 |
/Prev 251 0 R |
|
273 |
/Next 253 0 R>> |
|
274 |
endobj |
|
275 |
|
|
276 |
253 0 obj |
|
277 |
<</Title (Test Operator) |
|
278 |
/Parent 241 0 R |
|
279 |
/Dest [21 0 R /XYZ 0 431 0] |
|
280 |
/Prev 252 0 R |
|
281 |
/Next 254 0 R>> |
|
282 |
endobj |
|
283 |
|
|
284 |
254 0 obj |
|
285 |
<</Title (Other Operators) |
|
286 |
/Parent 241 0 R |
|
287 |
/Dest [22 0 R /XYZ 0 771 0] |
|
288 |
/Prev 253 0 R |
|
289 |
/Next 255 0 R>> |
|
290 |
endobj |
|
291 |
|
|
292 |
255 0 obj |
|
293 |
<</Title (String Interpolation) |
|
294 |
/Parent 241 0 R |
|
295 |
/Dest [22 0 R /XYZ 0 620 0] |
|
296 |
/Prev 254 0 R>> |
|
297 |
endobj |
|
298 |
|
|
299 |
241 0 obj |
|
300 |
<</Title (Expressions) |
|
301 |
/Parent 152 0 R |
|
302 |
/Dest [19 0 R /XYZ 0 627 0] |
|
303 |
/Prev 240 0 R |
|
304 |
/Next 242 0 R |
|
305 |
/First 248 0 R |
|
306 |
/Last 255 0 R |
|
307 |
/Count 8>> |
|
308 |
endobj |
|
309 |
|
|
310 |
242 0 obj |
|
311 |
<</Title (Whitespace Control) |
|
312 |
/Parent 152 0 R |
|
313 |
/Dest [22 0 R /XYZ 0 421 0] |
|
314 |
/Prev 241 0 R |
|
315 |
/Next 243 0 R>> |
|
316 |
endobj |
|
317 |
|
|
318 |
243 0 obj |
|
319 |
<</Title (Extensions) |
|
320 |
/Parent 152 0 R |
|
321 |
/Dest [23 0 R /XYZ 0 504 0] |
|
322 |
/Prev 242 0 R>> |
|
323 |
endobj |
|
324 |
|
|
325 |
152 0 obj |
|
326 |
<</Title (Twig for Template Designers) |
|
327 |
/Parent 148 0 R |
|
328 |
/Dest [11 0 R /XYZ 0 771 0] |
|
329 |
/Prev 151 0 R |
|
330 |
/Next 153 0 R |
|
331 |
/First 229 0 R |
|
332 |
/Last 243 0 R |
|
333 |
/Count -15>> |
|
334 |
endobj |
|
335 |
|
|
336 |
256 0 obj |
|
337 |
<</Title (Basics) |
|
338 |
/Parent 153 0 R |
|
339 |
/Dest [24 0 R /XYZ 0 442 0] |
|
340 |
/Next 257 0 R>> |
|
341 |
endobj |
|
342 |
|
|
343 |
257 0 obj |
|
344 |
<</Title (Environment Options) |
|
345 |
/Parent 153 0 R |
|
346 |
/Dest [25 0 R /XYZ 0 392 0] |
|
347 |
/Prev 256 0 R |
|
348 |
/Next 258 0 R>> |
|
349 |
endobj |
|
350 |
|
|
351 |
262 0 obj |
|
352 |
<</Title (Compilation Cache) |
|
353 |
/Parent 258 0 R |
|
354 |
/Dest [26 0 R /XYZ 0 598 0] |
|
355 |
/Next 263 0 R>> |
|
356 |
endobj |
|
357 |
|
|
358 |
265 0 obj |
|
359 |
<</Title (Twig_Loader_Filesystem) |
|
360 |
/Parent 263 0 R |
|
361 |
/Dest [26 0 R /XYZ 0 457 0] |
|
362 |
/Next 266 0 R>> |
|
363 |
endobj |
|
364 |
|
|
365 |
266 0 obj |
|
366 |
<</Title (Twig_Loader_String) |
|
367 |
/Parent 263 0 R |
|
368 |
/Dest [26 0 R /XYZ 0 233 0] |
|
369 |
/Prev 265 0 R |
|
370 |
/Next 267 0 R>> |
|
371 |
endobj |
|
372 |
|
|
373 |
267 0 obj |
|
374 |
<</Title (Twig_Loader_Array) |
|
375 |
/Parent 263 0 R |
|
376 |
/Dest [27 0 R /XYZ 0 731 0] |
|
377 |
/Prev 266 0 R>> |
|
378 |
endobj |
|
379 |
|
|
380 |
263 0 obj |
|
381 |
<</Title (Built-in Loaders) |
|
382 |
/Parent 258 0 R |
|
383 |
/Dest [26 0 R /XYZ 0 507 0] |
|
384 |
/Prev 262 0 R |
|
385 |
/Next 264 0 R |
|
386 |
/First 265 0 R |
|
387 |
/Last 267 0 R |
|
388 |
/Count 3>> |
|
389 |
endobj |
|
390 |
|
|
391 |
264 0 obj |
|
392 |
<</Title (Create your own Loader) |
|
393 |
/Parent 258 0 R |
|
394 |
/Dest [27 0 R /XYZ 0 445 0] |
|
395 |
/Prev 263 0 R>> |
|
396 |
endobj |
|
397 |
|
|
398 |
258 0 obj |
|
399 |
<</Title (Loaders) |
|
400 |
/Parent 153 0 R |
|
401 |
/Dest [26 0 R /XYZ 0 659 0] |
|
402 |
/Prev 257 0 R |
|
403 |
/Next 259 0 R |
|
404 |
/First 262 0 R |
|
405 |
/Last 264 0 R |
|
406 |
/Count 3>> |
|
407 |
endobj |
|
408 |
|
|
409 |
259 0 obj |
|
410 |
<</Title (Using Extensions) |
|
411 |
/Parent 153 0 R |
|
412 |
/Dest [28 0 R /XYZ 0 402 0] |
|
413 |
/Prev 258 0 R |
|
414 |
/Next 260 0 R>> |
|
415 |
endobj |
|
416 |
|
|
417 |
268 0 obj |
|
418 |
<</Title (Core Extension) |
|
419 |
/Parent 260 0 R |
|
420 |
/Dest [29 0 R /XYZ 0 646 0] |
|
421 |
/Next 269 0 R>> |
|
422 |
endobj |
|
423 |
|
|
424 |
269 0 obj |
|
425 |
<</Title (Escaper Extension) |
|
426 |
/Parent 260 0 R |
|
427 |
/Dest [30 0 R /XYZ 0 609 0] |
|
428 |
/Prev 268 0 R |
|
429 |
/Next 270 0 R>> |
|
430 |
endobj |
|
431 |
|
|
432 |
270 0 obj |
|
433 |
<</Title (Sandbox Extension) |
|
434 |
/Parent 260 0 R |
|
435 |
/Dest [31 0 R /XYZ 0 128 0] |
|
436 |
/Prev 269 0 R |
|
437 |
/Next 271 0 R>> |
|
438 |
endobj |
|
439 |
|
|
440 |
271 0 obj |
|
441 |
<</Title (Optimizer Extension) |
|
442 |
/Parent 260 0 R |
|
443 |
/Dest [32 0 R /XYZ 0 235 0] |
|
444 |
/Prev 270 0 R>> |
|
445 |
endobj |
|
446 |
|
|
447 |
260 0 obj |
|
448 |
<</Title (Built-in Extensions) |
|
449 |
/Parent 153 0 R |
|
450 |
/Dest [29 0 R /XYZ 0 771 0] |
|
451 |
/Prev 259 0 R |
|
452 |
/Next 261 0 R |
|
453 |
/First 268 0 R |
|
454 |
/Last 271 0 R |
|
455 |
/Count 4>> |
|
456 |
endobj |
|
457 |
|
|
458 |
261 0 obj |
|
459 |
<</Title (Exceptions) |
|
460 |
/Parent 153 0 R |
|
461 |
/Dest [33 0 R /XYZ 0 684 0] |
|
462 |
/Prev 260 0 R>> |
|
463 |
endobj |
|
464 |
|
|
465 |
153 0 obj |
|
466 |
<</Title (Twig for Developers) |
|
467 |
/Parent 148 0 R |
|
468 |
/Dest [24 0 R /XYZ 0 771 0] |
|
469 |
/Prev 152 0 R |
|
470 |
/Next 154 0 R |
|
471 |
/First 256 0 R |
|
472 |
/Last 261 0 R |
|
473 |
/Count -6>> |
|
474 |
endobj |
|
475 |
|
|
476 |
272 0 obj |
|
477 |
<</Title (Globals) |
|
478 |
/Parent 154 0 R |
|
479 |
/Dest [36 0 R /XYZ 0 771 0] |
|
480 |
/Next 273 0 R>> |
|
481 |
endobj |
|
482 |
|
|
483 |
277 0 obj |
|
484 |
<</Title (Environment aware Filters) |
|
485 |
/Parent 273 0 R |
|
486 |
/Dest [38 0 R /XYZ 0 771 0] |
|
487 |
/Next 278 0 R>> |
|
488 |
endobj |
|
489 |
|
|
490 |
278 0 obj |
|
491 |
<</Title (Automatic Escaping) |
|
492 |
/Parent 273 0 R |
|
493 |
/Dest [38 0 R /XYZ 0 510 0] |
|
494 |
/Prev 277 0 R |
|
495 |
/Next 279 0 R>> |
|
496 |
endobj |
|
497 |
|
|
498 |
279 0 obj |
|
499 |
<</Title (Dynamic Filters) |
|
500 |
/Parent 273 0 R |
|
501 |
/Dest [38 0 R /XYZ 0 268 0] |
|
502 |
/Prev 278 0 R>> |
|
503 |
endobj |
|
504 |
|
|
505 |
273 0 obj |
|
506 |
<</Title (Filters) |
|
507 |
/Parent 154 0 R |
|
508 |
/Dest [36 0 R /XYZ 0 565 0] |
|
509 |
/Prev 272 0 R |
|
510 |
/Next 274 0 R |
|
511 |
/First 277 0 R |
|
512 |
/Last 279 0 R |
|
513 |
/Count 3>> |
|
514 |
endobj |
|
515 |
|
|
516 |
280 0 obj |
|
517 |
<</Title (Dynamic Functions) |
|
518 |
/Parent 274 0 R |
|
519 |
/Dest [40 0 R /XYZ 0 742 0]>> |
|
520 |
endobj |
|
521 |
|
|
522 |
274 0 obj |
|
523 |
<</Title (Functions) |
|
524 |
/Parent 154 0 R |
|
525 |
/Dest [39 0 R /XYZ 0 472 0] |
|
526 |
/Prev 273 0 R |
|
527 |
/Next 275 0 R |
|
528 |
/First 280 0 R |
|
529 |
/Last 280 0 R |
|
530 |
/Count 1>> |
|
531 |
endobj |
|
532 |
|
|
533 |
281 0 obj |
|
534 |
<</Title (Registering a new tag) |
|
535 |
/Parent 275 0 R |
|
536 |
/Dest [41 0 R /XYZ 0 629 0] |
|
537 |
/Next 282 0 R>> |
|
538 |
endobj |
|
539 |
|
|
540 |
282 0 obj |
|
541 |
<</Title (Defining a Token Parser) |
|
542 |
/Parent 275 0 R |
|
543 |
/Dest [41 0 R /XYZ 0 513 0] |
|
544 |
/Prev 281 0 R |
|
545 |
/Next 283 0 R>> |
|
546 |
endobj |
|
547 |
|
|
548 |
283 0 obj |
|
549 |
<</Title (Defining a Node) |
|
550 |
/Parent 275 0 R |
|
551 |
/Dest [42 0 R /XYZ 0 618 0] |
|
552 |
/Prev 282 0 R>> |
|
553 |
endobj |
|
554 |
|
|
555 |
275 0 obj |
|
556 |
<</Title (Tags) |
|
557 |
/Parent 154 0 R |
|
558 |
/Dest [40 0 R /XYZ 0 286 0] |
|
559 |
/Prev 274 0 R |
|
560 |
/Next 276 0 R |
|
561 |
/First 281 0 R |
|
562 |
/Last 283 0 R |
|
563 |
/Count 3>> |
|
564 |
endobj |
|
565 |
|
|
566 |
284 0 obj |
|
567 |
<</Title (Globals) |
|
568 |
/Parent 276 0 R |
|
569 |
/Dest [45 0 R /XYZ 0 601 0] |
|
570 |
/Next 285 0 R>> |
|
571 |
endobj |
|
572 |
|
|
573 |
285 0 obj |
|
574 |
<</Title (Functions) |
|
575 |
/Parent 276 0 R |
|
576 |
/Dest [45 0 R /XYZ 0 383 0] |
|
577 |
/Prev 284 0 R |
|
578 |
/Next 286 0 R>> |
|
579 |
endobj |
|
580 |
|
|
581 |
290 0 obj |
|
582 |
<</Title (Overriding default Filters) |
|
583 |
/Parent 286 0 R |
|
584 |
/Dest [46 0 R /XYZ 0 160 0]>> |
|
585 |
endobj |
|
586 |
|
|
587 |
286 0 obj |
|
588 |
<</Title (Filters) |
|
589 |
/Parent 276 0 R |
|
590 |
/Dest [45 0 R /XYZ 0 165 0] |
|
591 |
/Prev 285 0 R |
|
592 |
/Next 287 0 R |
|
593 |
/First 290 0 R |
|
594 |
/Last 290 0 R |
|
595 |
/Count 1>> |
|
596 |
endobj |
|
597 |
|
|
598 |
287 0 obj |
|
599 |
<</Title (Tags) |
|
600 |
/Parent 276 0 R |
|
601 |
/Dest [47 0 R /XYZ 0 294 0] |
|
602 |
/Prev 286 0 R |
|
603 |
/Next 288 0 R>> |
|
604 |
endobj |
|
605 |
|
|
606 |
288 0 obj |
|
607 |
<</Title (Operators) |
|
608 |
/Parent 276 0 R |
|
609 |
/Dest [48 0 R /XYZ 0 729 0] |
|
610 |
/Prev 287 0 R |
|
611 |
/Next 289 0 R>> |
|
612 |
endobj |
|
613 |
|
|
614 |
289 0 obj |
|
615 |
<</Title (Tests) |
|
616 |
/Parent 276 0 R |
|
617 |
/Dest [48 0 R /XYZ 0 386 0] |
|
618 |
/Prev 288 0 R>> |
|
619 |
endobj |
|
620 |
|
|
621 |
276 0 obj |
|
622 |
<</Title (Creating an Extension) |
|
623 |
/Parent 154 0 R |
|
624 |
/Dest [42 0 R /XYZ 0 142 0] |
|
625 |
/Prev 275 0 R |
|
626 |
/First 284 0 R |
|
627 |
/Last 289 0 R |
|
628 |
/Count 6>> |
|
629 |
endobj |
|
630 |
|
|
631 |
154 0 obj |
|
632 |
<</Title (Extending Twig) |
|
633 |
/Parent 148 0 R |
|
634 |
/Dest [34 0 R /XYZ 0 771 0] |
|
635 |
/Prev 153 0 R |
|
636 |
/Next 155 0 R |
|
637 |
/First 272 0 R |
|
638 |
/Last 276 0 R |
|
639 |
/Count -5>> |
|
640 |
endobj |
|
641 |
|
|
642 |
291 0 obj |
|
643 |
<</Title (How Twig works?) |
|
644 |
/Parent 155 0 R |
|
645 |
/Dest [49 0 R /XYZ 0 442 0] |
|
646 |
/Next 292 0 R>> |
|
647 |
endobj |
|
648 |
|
|
649 |
292 0 obj |
|
650 |
<</Title (The Lexer) |
|
651 |
/Parent 155 0 R |
|
652 |
/Dest [49 0 R /XYZ 0 235 0] |
|
653 |
/Prev 291 0 R |
|
654 |
/Next 293 0 R>> |
|
655 |
endobj |
|
656 |
|
|
657 |
293 0 obj |
|
658 |
<</Title (The Parser) |
|
659 |
/Parent 155 0 R |
|
660 |
/Dest [50 0 R /XYZ 0 271 0] |
|
661 |
/Prev 292 0 R |
|
662 |
/Next 294 0 R>> |
|
663 |
endobj |
|
664 |
|
|
665 |
294 0 obj |
|
666 |
<</Title (The Compiler) |
|
667 |
/Parent 155 0 R |
|
668 |
/Dest [51 0 R /XYZ 0 469 0] |
|
669 |
/Prev 293 0 R>> |
|
670 |
endobj |
|
671 |
|
|
672 |
155 0 obj |
|
673 |
<</Title (Twig Internals) |
|
674 |
/Parent 148 0 R |
|
675 |
/Dest [49 0 R /XYZ 0 771 0] |
|
676 |
/Prev 154 0 R |
|
677 |
/Next 156 0 R |
|
678 |
/First 291 0 R |
|
679 |
/Last 294 0 R |
|
680 |
/Count -4>> |
|
681 |
endobj |
|
682 |
|
|
683 |
295 0 obj |
|
684 |
<</Title (Making a Layout conditional) |
|
685 |
/Parent 156 0 R |
|
686 |
/Dest [53 0 R /XYZ 0 484 0] |
|
687 |
/Next 296 0 R>> |
|
688 |
endobj |
|
689 |
|
|
690 |
296 0 obj |
|
691 |
<</Title (Making an Include dynamic) |
|
692 |
/Parent 156 0 R |
|
693 |
/Dest [53 0 R /XYZ 0 293 0] |
|
694 |
/Prev 295 0 R |
|
695 |
/Next 297 0 R>> |
|
696 |
endobj |
|
697 |
|
|
698 |
297 0 obj |
|
699 |
<</Title (Overriding a Template that also extends itself) |
|
700 |
/Parent 156 0 R |
|
701 |
/Dest [54 0 R /XYZ 0 771 0] |
|
702 |
/Prev 296 0 R |
|
703 |
/Next 298 0 R>> |
|
704 |
endobj |
|
705 |
|
|
706 |
298 0 obj |
|
707 |
<</Title (Customizing the Syntax) |
|
708 |
/Parent 156 0 R |
|
709 |
/Dest [54 0 R /XYZ 0 163 0] |
|
710 |
/Prev 297 0 R |
|
711 |
/Next 299 0 R>> |
|
712 |
endobj |
|
713 |
|
|
714 |
299 0 obj |
|
715 |
<</Title (Using dynamic Object Properties) |
|
716 |
/Parent 156 0 R |
|
717 |
/Dest [55 0 R /XYZ 0 314 0] |
|
718 |
/Prev 298 0 R |
|
719 |
/Next 300 0 R>> |
|
720 |
endobj |
|
721 |
|
|
722 |
300 0 obj |
|
723 |
<</Title (Accessing the parent Context in Nested Loops) |
|
724 |
/Parent 156 0 R |
|
725 |
/Dest [56 0 R /XYZ 0 582 0] |
|
726 |
/Prev 299 0 R |
|
727 |
/Next 301 0 R>> |
|
728 |
endobj |
|
729 |
|
|
730 |
301 0 obj |
|
731 |
<</Title (Defining undefined Functions and Filters on the Fly) |
|
732 |
/Parent 156 0 R |
|
733 |
/Dest [57 0 R /XYZ 0 771 0] |
|
734 |
/Prev 300 0 R |
|
735 |
/Next 302 0 R>> |
|
736 |
endobj |
|
737 |
|
|
738 |
302 0 obj |
|
739 |
<</Title (Validating the Template Syntax) |
|
740 |
/Parent 156 0 R |
|
741 |
/Dest [57 0 R /XYZ 0 413 0] |
|
742 |
/Prev 301 0 R |
|
743 |
/Next 303 0 R>> |
|
744 |
endobj |
|
745 |
|
|
746 |
303 0 obj |
|
747 |
<</Title (Refreshing modified Templates when APC is enabled and apc.stat = 0) |
|
748 |
/Parent 156 0 R |
|
749 |
/Dest [58 0 R /XYZ 0 595 0] |
|
750 |
/Prev 302 0 R |
|
751 |
/Next 304 0 R>> |
|
752 |
endobj |
|
753 |
|
|
754 |
304 0 obj |
|
755 |
<</Title (Reusing a stateful Node Visitor) |
|
756 |
/Parent 156 0 R |
|
757 |
/Dest [58 0 R /XYZ 0 347 0] |
|
758 |
/Prev 303 0 R |
|
759 |
/Next 305 0 R>> |
|
760 |
endobj |
|
761 |
|
|
762 |
305 0 obj |
|
763 |
<</Title (Using the Template name to set the default Escaping Strategy) |
|
764 |
/Parent 156 0 R |
|
765 |
/Dest [59 0 R /XYZ 0 771 0] |
|
766 |
/Prev 304 0 R>> |
|
767 |
endobj |
|
768 |
|
|
769 |
156 0 obj |
|
770 |
<</Title (Recipes) |
|
771 |
/Parent 148 0 R |
|
772 |
/Dest [53 0 R /XYZ 0 771 0] |
|
773 |
/Prev 155 0 R |
|
774 |
/Next 157 0 R |
|
775 |
/First 295 0 R |
|
776 |
/Last 305 0 R |
|
777 |
/Count -11>> |
|
778 |
endobj |
|
779 |
|
|
780 |
157 0 obj |
|
781 |
<</Title (Coding Standards) |
|
782 |
/Parent 148 0 R |
|
783 |
/Dest [60 0 R /XYZ 0 771 0] |
|
784 |
/Prev 156 0 R |
|
785 |
/Next 158 0 R>> |
|
786 |
endobj |
|
787 |
|
|
788 |
306 0 obj |
|
789 |
<</Title (The loop variable) |
|
790 |
/Parent 158 0 R |
|
791 |
/Dest [63 0 R /XYZ 0 661 0] |
|
792 |
/Next 307 0 R>> |
|
793 |
endobj |
|
794 |
|
|
795 |
307 0 obj |
|
796 |
<</Title (Adding a condition) |
|
797 |
/Parent 158 0 R |
|
798 |
/Dest [63 0 R /XYZ 0 200 0] |
|
799 |
/Prev 306 0 R |
|
800 |
/Next 308 0 R>> |
|
801 |
endobj |
|
802 |
|
|
803 |
308 0 obj |
|
804 |
<</Title (The else Clause) |
|
805 |
/Parent 158 0 R |
|
806 |
/Dest [64 0 R /XYZ 0 546 0] |
|
807 |
/Prev 307 0 R |
|
808 |
/Next 309 0 R>> |
|
809 |
endobj |
|
810 |
|
|
811 |
309 0 obj |
|
812 |
<</Title (Iterating over Keys) |
|
813 |
/Parent 158 0 R |
|
814 |
/Dest [64 0 R /XYZ 0 345 0] |
|
815 |
/Prev 308 0 R |
|
816 |
/Next 310 0 R>> |
|
817 |
endobj |
|
818 |
|
|
819 |
310 0 obj |
|
820 |
<</Title (Iterating over Keys and Values) |
|
821 |
/Parent 158 0 R |
|
822 |
/Dest [64 0 R /XYZ 0 169 0] |
|
823 |
/Prev 309 0 R>> |
|
824 |
endobj |
|
825 |
|
|
826 |
158 0 obj |
|
827 |
<</Title (for) |
|
828 |
/Parent 148 0 R |
|
829 |
/Dest [62 0 R /XYZ 0 771 0] |
|
830 |
/Prev 157 0 R |
|
831 |
/Next 159 0 R |
|
832 |
/First 306 0 R |
|
833 |
/Last 310 0 R |
|
834 |
/Count -5>> |
|
835 |
endobj |
|
836 |
|
|
837 |
159 0 obj |
|
838 |
<</Title (if) |
|
839 |
/Parent 148 0 R |
|
840 |
/Dest [66 0 R /XYZ 0 771 0] |
|
841 |
/Prev 158 0 R |
|
842 |
/Next 160 0 R>> |
|
843 |
endobj |
|
844 |
|
|
845 |
160 0 obj |
|
846 |
<</Title (macro) |
|
847 |
/Parent 148 0 R |
|
848 |
/Dest [68 0 R /XYZ 0 771 0] |
|
849 |
/Prev 159 0 R |
|
850 |
/Next 161 0 R>> |
|
851 |
endobj |
|
852 |
|
|
853 |
161 0 obj |
|
854 |
<</Title (filter) |
|
855 |
/Parent 148 0 R |
|
856 |
/Dest [70 0 R /XYZ 0 771 0] |
|
857 |
/Prev 160 0 R |
|
858 |
/Next 162 0 R>> |
|
859 |
endobj |
|
860 |
|
|
861 |
162 0 obj |
|
862 |
<</Title (set) |
|
863 |
/Parent 148 0 R |
|
864 |
/Dest [71 0 R /XYZ 0 771 0] |
|
865 |
/Prev 161 0 R |
|
866 |
/Next 163 0 R>> |
|
867 |
endobj |
|
868 |
|
|
869 |
311 0 obj |
|
870 |
<</Title (Child Template) |
|
871 |
/Parent 163 0 R |
|
872 |
/Dest [73 0 R /XYZ 0 771 0] |
|
873 |
/Next 312 0 R>> |
|
874 |
endobj |
|
875 |
|
|
876 |
312 0 obj |
|
877 |
<</Title (Parent Blocks) |
|
878 |
/Parent 163 0 R |
|
879 |
/Dest [73 0 R /XYZ 0 267 0] |
|
880 |
/Prev 311 0 R |
|
881 |
/Next 313 0 R>> |
|
882 |
endobj |
|
883 |
|
|
884 |
313 0 obj |
|
885 |
<</Title (Named Block End-Tags) |
|
886 |
/Parent 163 0 R |
|
887 |
/Dest [74 0 R /XYZ 0 771 0] |
|
888 |
/Prev 312 0 R |
|
889 |
/Next 314 0 R>> |
|
890 |
endobj |
|
891 |
|
|
892 |
314 0 obj |
|
893 |
<</Title (Block Nesting and Scope) |
|
894 |
/Parent 163 0 R |
|
895 |
/Dest [74 0 R /XYZ 0 583 0] |
|
896 |
/Prev 313 0 R |
|
897 |
/Next 315 0 R>> |
|
898 |
endobj |
|
899 |
|
|
900 |
315 0 obj |
|
901 |
<</Title (Block Shortcuts) |
|
902 |
/Parent 163 0 R |
|
903 |
/Dest [74 0 R /XYZ 0 428 0] |
|
904 |
/Prev 314 0 R |
|
905 |
/Next 316 0 R>> |
|
906 |
endobj |
|
907 |
|
|
908 |
316 0 obj |
|
909 |
<</Title (Dynamic Inheritance) |
|
910 |
/Parent 163 0 R |
|
911 |
/Dest [74 0 R /XYZ 0 234 0] |
|
912 |
/Prev 315 0 R |
|
913 |
/Next 317 0 R>> |
|
914 |
endobj |
|
915 |
|
|
916 |
317 0 obj |
Also available in: Unified diff
updated Twig template engine to stable version 1.11.1