Revision 1851
Added by darkviper almost 13 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