Fabien Potencier [Sat, 4 Feb 2012 08:38:23 +0000]
fixed the creation of the cache directory in case of a race condition (closes #620)
Fabien Potencier [Sat, 4 Feb 2012 07:38:18 +0000]
bumped version to 1.7.0-DEV
Fabien Potencier [Sat, 4 Feb 2012 07:34:52 +0000]
prepared the 1.6.0 release
Fabien Potencier [Tue, 31 Jan 2012 10:57:59 +0000]
added missing entry in the doc
Fabien Potencier [Sat, 28 Jan 2012 16:45:32 +0000]
fixed raw blocks when used with the whitespace trim option (closes #617)
Fabien Potencier [Sat, 28 Jan 2012 16:12:21 +0000]
added some unit tests for the reverse filter when charset is not UTF-8
Fabien Potencier [Sat, 28 Jan 2012 16:09:25 +0000]
added some unit tests for random() when charset is not UTF-8
Fabien Potencier [Sat, 28 Jan 2012 15:58:52 +0000]
fixed previous commit
Fabien Potencier [Fri, 27 Jan 2012 07:24:59 +0000]
fixed the random() function on strings when the charset is not UTF-8
(refs #614)
Fabien Potencier [Thu, 26 Jan 2012 14:06:15 +0000]
fixed CS
Fabien Potencier [Thu, 26 Jan 2012 14:06:02 +0000]
merged branch Tobion/test-coverage (PR #615)
Commits
-------
814cefd improve test coverage and support negative int for random function
Discussion
----------
improve test coverage and support negative int for random function
Tobias Schultze [Thu, 26 Jan 2012 13:52:41 +0000]
improve test coverage and support negative int for random function
Fabien Potencier [Thu, 26 Jan 2012 12:25:31 +0000]
tweaked doc
Fabien Potencier [Thu, 26 Jan 2012 12:24:26 +0000]
merged branch Tobion/patch-4 (PR #614)
Commits
-------
a15e8f7 typo again
2561aa2 typo
faa90c9 updated doc for random function
fe66358 added tests for random function
6f5ceee Made the random function more versatile
Discussion
----------
Made the random function more versatile
The point is to meet user expectations and to make it more versatile, so it works under more circumstances.
At the moment the random function does only return the supplied parameter when it's not an array. That is not very useful. With this PR it will behave like
random() => integer as with mt_rand()
random(5) => integer between 0 and 5 as with mt_rand(0, 5)
random('foobar') => random character from 'foobar'
random(array(...)) => random element
I will add tests and documentation if you accept this PR.
---------------------------------------------------------------------------
by fabpot at 2012-01-26T07:29:35Z
Looks good to me. Can you update the docs and add some unit tests?
---------------------------------------------------------------------------
by Tobion at 2012-01-26T11:50:17Z
ready
Tobias Schultze [Thu, 26 Jan 2012 11:48:56 +0000]
typo again
Tobias Schultze [Thu, 26 Jan 2012 11:48:04 +0000]
typo
Tobias Schultze [Thu, 26 Jan 2012 11:45:18 +0000]
updated doc for random function
Tobias Schultze [Thu, 26 Jan 2012 11:19:51 +0000]
added tests for random function
Tobias Schultze [Thu, 26 Jan 2012 01:32:02 +0000]
Made the random function more versatile
Fabien Potencier [Wed, 25 Jan 2012 15:02:48 +0000]
merged branch Tobion/patch-3 (PR #613)
Commits
-------
e81a9e2 Improved random function
Discussion
----------
Improved random function
- dealing with empty array (otherwise PHP warning is raised)
- using array_rand() and thus saving the $keys variable
---------------------------------------------------------------------------
by Tobion at 2012-01-25T12:41:32Z
How about allowing `mt_rand ( int $min , int $max )` with optional parameters to be used when the $values ist not an array?
This would solve use case #612
Tobias Schultze [Wed, 25 Jan 2012 12:34:39 +0000]
Improved random function
Fabien Potencier [Tue, 24 Jan 2012 18:12:39 +0000]
tweaked previous merge (no need to duplicate visitors, handlers and the expression parser when parsing a template inside another one)
Fabien Potencier [Tue, 24 Jan 2012 18:09:28 +0000]
add a unit test for previous merge
Fabien Potencier [Tue, 24 Jan 2012 18:09:17 +0000]
merged branch Seldaek/inception (PR #610)
Commits
-------
0d656f5 Add comments
0255764 Updated CHANGELOG
b327a48 Protect the Parser against recursive parsing issues
Discussion
----------
Make the parser Inception-Proof
Spent half a day debugging before I realized what happened, but I'll try to keep a long story short:
When the cache is empty, and the first template containing an assetic `{% javascripts %}` or similar tag is parsed, it will build up the assetic "assets" or recipes cache, this in turn will tokenize and parse all your templates to find assetic tags and cache that information.
At this point the parser is parsing something else in the middle of a parse() call, and since there is a single instance in the environment, it means all the instance vars are messed up and contain incorrect references to the latest TokenStream that was parsed by assetic, etc.
This had two effects on my application, both appearing seemingly randomly because it highly depends on the order of things, the state of your cache and probably other factors:
- The first thing that happened is that a template was compiled using the wrong template filename, which means I had a `__TwigTemplate_abcd` in the file named `dcba.php`, and it would never find the right class.
- The second issue (could not reproduce but I assume it was caused by this as well) is that the parse tree is completely broken and you end up with a parse error because it thinks it's at the end when it's not, or similar problem.
The proposed fix basically pushes/pops all the vars into a stack whenever the parser starts/stops, which worked very effectively here and does not introduce much breakage or complexity.
---------------------------------------------------------------------------
by stof at 2012-01-24T17:28:06Z
@Seldaek are you able to create a reproducible testcase for this (which should be failing before this fix) ? It would avoid further regressions
---------------------------------------------------------------------------
by Seldaek at 2012-01-24T17:45:37Z
I'll try to improve on this according to feedback tomorrow. I saw this enough for today :)
---------------------------------------------------------------------------
by fabpot at 2012-01-24T17:45:49Z
I'm writing some unit tests
---------------------------------------------------------------------------
by Seldaek at 2012-01-24T17:47:02Z
Ok then I'll add @dzuelke's comments real quick.
Jordi Boggiano [Tue, 24 Jan 2012 17:53:53 +0000]
Add comments
Fabien Potencier [Tue, 24 Jan 2012 16:59:21 +0000]
merged branch Seldaek/typo (PR #609)
Commits
-------
d8527fe Fix docblock
Discussion
----------
Fix docblock
Jordi Boggiano [Tue, 24 Jan 2012 16:41:37 +0000]
Updated CHANGELOG
Jordi Boggiano [Tue, 24 Jan 2012 16:39:13 +0000]
Protect the Parser against recursive parsing issues
Jordi Boggiano [Tue, 24 Jan 2012 16:38:16 +0000]
Fix docblock
Fabien Potencier [Tue, 24 Jan 2012 12:11:53 +0000]
removed duplicated tests
Fabien Potencier [Tue, 24 Jan 2012 12:03:09 +0000]
added the possibility to skip some tests depending on the PHP version
Fabien Potencier [Mon, 23 Jan 2012 09:19:16 +0000]
fixed typo
Fabien Potencier [Mon, 23 Jan 2012 08:22:43 +0000]
made a speed optimization to macro calls when imported via the from tag
Fabien Potencier [Mon, 23 Jan 2012 07:58:03 +0000]
updated CHANGELOG
Fabien Potencier [Mon, 23 Jan 2012 07:47:30 +0000]
fixed the attribute function when passing arguments (closes #608)
Fabien Potencier [Sat, 21 Jan 2012 20:40:17 +0000]
added some unit tests for macros
Fabien Potencier [Sat, 21 Jan 2012 20:26:04 +0000]
Revert "made a speed optimization to macro calls when imported via the from tag"
This reverts commit
3b87da344ade9a719d3e105eb7ca20864b725875.
Fabien Potencier [Sat, 21 Jan 2012 20:16:34 +0000]
made a speed optimization to macro calls when imported via the from tag
Fabien Potencier [Sat, 21 Jan 2012 06:18:00 +0000]
merged branch Tobion/patch-2 (PR #606)
Commits
-------
83a3073 typo
Discussion
----------
typo
Tobias Schultze [Thu, 19 Jan 2012 10:11:49 +0000]
typo
Fabien Potencier [Thu, 19 Jan 2012 09:31:26 +0000]
fixed typo in doc (closes #604)
Fabien Potencier [Tue, 17 Jan 2012 06:17:24 +0000]
merged branch Seldaek/globals_fix (PR #600)
Commits
-------
43ebae1 Reset parsers, visitors, filters, tests, functions when a new one or new extension is added
3db62da Reset globals when a new global is added
Discussion
----------
Reset globals when a new global is added
if getGlobals() is called before adding a new global, it is never taken into account
---------------------------------------------------------------------------
by fabpot at 2012-01-16T14:27:02Z
Is it related to #594?
---------------------------------------------------------------------------
by Seldaek at 2012-01-16T14:30:08Z
Seems like it yes. It means that reading globals + writing + reading again will call getGlobals on all extensions again though.
A slight improvement would be to cache the extension globals in another var that can be re-applied at once over the staged globals.
The fastest would be to just set directly in ->globals if it's already initalized, but that means addGlobal can override extension globals. Not sure if that is a problem, but it creates a somewhat non-deterministic factor.
I can adjust as required.
---------------------------------------------------------------------------
by stof at 2012-01-16T14:45:49Z
@Seldaek shouldn't the same be done for other methods (filters, functions, tags, tests and operators) ?
---------------------------------------------------------------------------
by Seldaek at 2012-01-16T14:53:28Z
Indeed, I was just focused on my crazy issue here :) Once @fabpot decides which way he prefers I can apply it to everything.
---------------------------------------------------------------------------
by fabpot at 2012-01-16T21:05:19Z
+1 for the the approach in this PR. @Seldaek: Can you apply it to everything else as well? Thanks.
---------------------------------------------------------------------------
by Seldaek at 2012-01-17T00:54:08Z
Done, also did it for adding and removing extensions since they potentially override stuff.
Jordi Boggiano [Tue, 17 Jan 2012 00:53:13 +0000]
Reset parsers, visitors, filters, tests, functions when a new one or new extension is added
Jordi Boggiano [Mon, 16 Jan 2012 14:22:29 +0000]
Reset globals when a new global is added
Fabien Potencier [Sun, 15 Jan 2012 07:30:41 +0000]
merged branch Partugal/twig-ext (PR #598)
Commits
-------
75bfb4e Syncing Twig extension with latest changes in Twig master
Discussion
----------
Syncing Twig extension with latest changes in Twig master
Sergey Linnik [Sat, 14 Jan 2012 21:01:34 +0000]
Syncing Twig extension with latest changes in Twig master
Fabien Potencier [Sat, 14 Jan 2012 16:17:37 +0000]
made a cosmetic change
Fabien Potencier [Sat, 14 Jan 2012 16:17:22 +0000]
merged branch lyrixx/patch-4 (PR #596)
Commits
-------
fa2501f Added a link to the documentation site
Discussion
----------
Added a link to the documentation site
Now, on the github project page, there is a link to http://twig.sensiolabs.org/documentation. (like silex)
Fabien Potencier [Sat, 14 Jan 2012 16:17:02 +0000]
merged branch aerialls/patch-2 (PR #597)
Commits
-------
924c8b3 fixed CS
Discussion
----------
fixed CS
Julien Brochet [Sat, 14 Jan 2012 14:56:01 +0000]
fixed CS
Grégoire Pineau [Sat, 14 Jan 2012 14:12:39 +0000]
Added a link to the documentation site
Fabien Potencier [Sat, 14 Jan 2012 08:27:35 +0000]
added support for optional length in the slice [] notation
Fabien Potencier [Sat, 14 Jan 2012 07:48:59 +0000]
added a slice filter
Fabien Potencier [Sat, 14 Jan 2012 07:25:47 +0000]
fixed core filters phpdoc
Fabien Potencier [Sat, 14 Jan 2012 07:24:24 +0000]
added string support for the reverse filter
Fabien Potencier [Fri, 13 Jan 2012 12:14:08 +0000]
tweaked doc for the merge filter
Fabien Potencier [Fri, 13 Jan 2012 09:18:17 +0000]
tweaked documentation
Fabien Potencier [Wed, 11 Jan 2012 12:27:00 +0000]
fixed some phpdoc
Fabien Potencier [Mon, 9 Jan 2012 19:48:27 +0000]
fixed charset for previous commit
Fabien Potencier [Mon, 9 Jan 2012 19:32:34 +0000]
fixed the empty test and the length filter for Twig_Markup instances (closes #589)
Fabien Potencier [Mon, 9 Jan 2012 07:04:17 +0000]
added one more rule in the coding standards (closes #587)
Fabien Potencier [Sun, 8 Jan 2012 20:24:46 +0000]
added one more rule to the coding standards
Fabien Potencier [Sun, 8 Jan 2012 19:40:34 +0000]
re-added the version in composer.json (if not, the version on packagist is master-dev instead of the more desirable 1.6-dev)
Fabien Potencier [Sun, 8 Jan 2012 19:38:51 +0000]
merged branch aerialls/patch-1 (PR #585)
Commits
-------
3c934f4 Update doc/coding_standards.rst
Discussion
----------
Update doc/coding_standards.rst
Julien Brochet [Sun, 8 Jan 2012 19:37:45 +0000]
Update doc/coding_standards.rst
Fabien Potencier [Sun, 8 Jan 2012 19:24:02 +0000]
fixed markup in doc
Fabien Potencier [Sun, 8 Jan 2012 19:19:11 +0000]
added coding standards in the docs
Fabien Potencier [Sun, 8 Jan 2012 16:57:34 +0000]
merged branch lyrixx/patch-dead-code (PR #584)
Commits
-------
6ca2ca6 [Tests] Removed dead code in core test
Discussion
----------
[Tests] Removed dead code in core test
$core is never used. Test keeps passing.
Grégoire Pineau [Sun, 8 Jan 2012 16:27:45 +0000]
[Tests] Removed dead code in core test
Fabien Potencier [Sat, 7 Jan 2012 08:53:33 +0000]
added a recipe for stateful node visitors
Fabien Potencier [Fri, 6 Jan 2012 19:35:29 +0000]
added missing phpdoc
Fabien Potencier [Fri, 6 Jan 2012 19:31:06 +0000]
added a date function to ease date comparison (closes #571)
Fabien Potencier [Fri, 6 Jan 2012 18:48:27 +0000]
updated CHANGELOG
Fabien Potencier [Fri, 6 Jan 2012 18:47:50 +0000]
fixed unary operators precedence (closes #583)
Fabien Potencier [Fri, 6 Jan 2012 11:47:43 +0000]
merged branch vicb/doc/use (PR #581)
Commits
-------
28b9b7b [Twig] Add a note about multiple inheritance (use tag)
Discussion
----------
[Twig] Add a note about multiple inheritance (use tag)
To add some visibility to this feature
Victor Berchet [Fri, 6 Jan 2012 08:18:08 +0000]
[Twig] Add a note about multiple inheritance (use tag)
Fabien Potencier [Thu, 5 Jan 2012 14:35:20 +0000]
bumped version to 1.6.0-DEV
Fabien Potencier [Thu, 5 Jan 2012 14:34:14 +0000]
prepared the 1.5.1 release
Fabien Potencier [Thu, 5 Jan 2012 14:18:26 +0000]
fixed regression in string parsing (closes #580)
Fabien Potencier [Wed, 4 Jan 2012 14:40:11 +0000]
merged branch lenar/patch-1 (PR #578)
Commits
-------
5214794 compiles -> compile
Discussion
----------
compiles -> compile
Lenar Lõhmus [Wed, 4 Jan 2012 14:26:15 +0000]
compiles -> compile
Fabien Potencier [Wed, 4 Jan 2012 14:15:01 +0000]
added a note about the Twig extension DLL for Windows
Fabien Potencier [Wed, 4 Jan 2012 13:31:46 +0000]
bumped version to 1.6.0-DEV
Fabien Potencier [Wed, 4 Jan 2012 13:20:58 +0000]
prepared the 1.5.0 release
Fabien Potencier [Tue, 3 Jan 2012 20:52:22 +0000]
fixed doc (closes #577)
Fabien Potencier [Tue, 3 Jan 2012 20:50:50 +0000]
merged branch lyrixx/patch-1 (PR #576)
Commits
-------
7e8df56 Fixed CS
Discussion
----------
Fixed CS
I just fixed the CS in the doc
Grégoire Pineau [Tue, 3 Jan 2012 17:31:08 +0000]
Fixed CS
Fabien Potencier [Mon, 2 Jan 2012 14:10:19 +0000]
fixed the join filter when several items have the same key
Fabien Potencier [Mon, 2 Jan 2012 13:20:16 +0000]
simplified code
Fabien Potencier [Mon, 2 Jan 2012 12:14:06 +0000]
added a unit test
Fabien Potencier [Mon, 2 Jan 2012 12:10:08 +0000]
added Traversable objects support for the join filter
Fabien Potencier [Fri, 30 Dec 2011 15:23:51 +0000]
prepared the 1.5.0-RC2 release
Fabien Potencier [Fri, 30 Dec 2011 08:21:01 +0000]
updated doc for the date filter
Fabien Potencier [Fri, 30 Dec 2011 08:15:53 +0000]
added a way to set the default global date interval format
Fabien Potencier [Fri, 30 Dec 2011 07:58:12 +0000]
refactored date filter code
Fabien Potencier [Fri, 30 Dec 2011 07:50:36 +0000]
merged branch alefranz/patch-2 (PR #575)
Commits
-------
b295274 fix Date Format filter: DateInterval does not provide setTimezone()
Discussion
----------
fix Date Format filter: DateInterval does not provide setTimezone()
alefranz [Thu, 29 Dec 2011 18:46:53 +0000]
fix Date Format filter: DateInterval does not provide setTimezone()
Fabien Potencier [Wed, 28 Dec 2011 22:05:59 +0000]
refactored Twig_Template::display() to ease its extension
Fabien Potencier [Wed, 28 Dec 2011 19:34:32 +0000]
tweaked previous merge
Fabien Potencier [Wed, 28 Dec 2011 19:32:43 +0000]
merged branch markstory/number-format (PR #573)
Commits
-------
e3b81ad Add documentation page for number_format.
0edcfdd Add number_format filter.
Discussion
----------
Implement number_format filter
Implement a `number_format` filter that wraps the native PHP `number_format`.
Fixes #417