Fabien Potencier [Thu, 1 Sep 2011 08:50:13 +0000]
added more unit tests
Fabien Potencier [Thu, 1 Sep 2011 08:40:40 +0000]
removed some loop variable when using an if statement in a for loop
Fabien Potencier [Thu, 1 Sep 2011 07:16:08 +0000]
made a markup refactoring
Fabien Potencier [Thu, 1 Sep 2011 06:08:16 +0000]
fixed algorithm that determines if a template using inheritance is valid (no output between block definitions)
Fabien Potencier [Thu, 1 Sep 2011 06:06:05 +0000]
tweaked an error message
Fabien Potencier [Wed, 31 Aug 2011 09:10:12 +0000]
renamed a class in unit test to avoid confusion with PHPStorm
Fabien Potencier [Tue, 30 Aug 2011 20:58:17 +0000]
fixed resolveTemplate() method (we only catch loader exceptions)
Fabien Potencier [Tue, 30 Aug 2011 05:35:55 +0000]
added better support for encoding problems when escaping a string (available as of PHP 5.4)
From the PHP CHANGELOG:
The flag ENT_SUBSTITUTE makes invalid multibyte sequences be replaced by
U+FFFD (UTF-8) or &#FFFD; by htmlspecialchars and htmlentities. It is an
alternative to the default behavior, which just returns an empty string and to
ENT_IGNORE, which is a security risk. The behavior follows the recommendations
of Unicode Technical Report #36.
Fabien Potencier [Mon, 29 Aug 2011 16:47:24 +0000]
simplified previous merge
Fabien Potencier [Mon, 29 Aug 2011 16:26:53 +0000]
fixed CS
Fabien Potencier [Mon, 29 Aug 2011 16:26:20 +0000]
merged branch Brouznouf/patch-1 (PR #425)
Commits
-------
4dc490f Removing array_shift for optimisation.
Discussion
----------
Removing array_shift for optimisation.
For example we check if a template and use exception to redirect to a default template
Before : We checked ~1000 times => 100sec due to array_shift
After : ~1sec
Joel Wurtz [Tue, 30 Aug 2011 03:02:31 +0000]
Removing array_shift for optimisation.
For example we check if a template and use exception to redirect to a default template
Before : We checked ~1000 times => 100sec due to array_shift
After : ~1sec
Fabien Potencier [Sun, 28 Aug 2011 07:12:46 +0000]
fixed markup in the doc
Fabien Potencier [Sat, 27 Aug 2011 12:33:01 +0000]
added support for an array of templates to the "extends" tag
Fabien Potencier [Sat, 27 Aug 2011 11:54:33 +0000]
added a way to ignore a missing template when using the "include" tag
Fabien Potencier [Sat, 27 Aug 2011 11:37:56 +0000]
added support for an array of templates to the include tag
Fabien Potencier [Sat, 27 Aug 2011 09:11:38 +0000]
updated CHANGELOG
Fabien Potencier [Sat, 27 Aug 2011 09:10:29 +0000]
merged branch jturmel/master (PR #403)
Commits
-------
c2c01de Add bitwise operators to core
Discussion
----------
Added bitwise operators (and, xor, or) to core
* Added bitwise operators (and, xor, or) to core
---------------------------------------------------------------------------
by nikic at 2011/08/02 21:02:14 -0700
I'm not sure bitwise ops really belong into a templateing language...
---------------------------------------------------------------------------
by jturmel at 2011/08/02 21:06:02 -0700
That's a general statement to make without knowing why it was implemented at all... no one is forced to use them, however when you do need them, them not being available makes you have relegate something that should be in the view in the particular case I needed them, to be done in a controller instead, which would be quite a bit nastier in my case.
---------------------------------------------------------------------------
by nikic at 2011/08/02 23:23:30 -0700
@jturmel: I do not doubt that there are some cases where bitwise operations are useful. I can't think of one of the top of my head, though I imagine that it could be useful when using bitwise right management or something like that. What I was trying to say is, that I don't really believe that there are enough significant use cases for bitwise ops to justify adding them to the core (I know, "You Don't Have To Use It!", but it isn't good to clutter the core with features nearly no one uses). Maybe you could give an example of what you needed them for?
---------------------------------------------------------------------------
by jturmel at 2011/08/02 23:41:36 -0700
It would be one thing if I was implementing some operator that didn't normally exist in PHP itself, but it seems a bit odd to even say that it's cluttering it up, it's 3 lines of code that add 3 missing standard operators from PHP.
Simply put, I have an object that gets passed to the template that has many properties, these properties are bit values, I need to do checks on them to select/deselect various checkboxes in a grid... this is the cleanest way to do it without mudding up controller code with view logic.
---------------------------------------------------------------------------
by jalliot at 2011/08/03 01:42:56 -0700
Why not adding ``<<`` and ``>>`` then @jturmel?
I don't have a particular use case but I think that if Twig includes those 3 operators, it should also support these 2 to be "complete". What do you think?
---------------------------------------------------------------------------
by jturmel at 2011/08/03 06:07:46 -0700
Of course, if you guys think we need the shifting operators as well, we can... but modifying data in the view seems much less practical than the one's I added, although I did miss NOT.
---------------------------------------------------------------------------
by jalliot at 2011/08/03 06:16:38 -0700
I forgot about ``~`` but sure it should be included as well.
As for ``<<`` and ``>>``, they could also be used for verifying grant access for example in some implementations.
``{% if some_var << some_other_var & 1 %}``
Fabien Potencier [Sat, 27 Aug 2011 07:56:45 +0000]
replace file_exists() by is_file() as this is semantically more correct (we don't want dirs to match)
Fabien Potencier [Sat, 27 Aug 2011 07:38:43 +0000]
replaced usage of array_replace by array_merge (for 5.2 compatibility)
Fabien Potencier [Sat, 27 Aug 2011 07:26:51 +0000]
added the "attribute" function to allow getting dynamic attributes on variables
Fabien Potencier [Wed, 24 Aug 2011 10:56:57 +0000]
added Twig_Loader_Chain
Fabien Potencier [Wed, 24 Aug 2011 10:54:04 +0000]
renamed a test file
Fabien Potencier [Wed, 24 Aug 2011 10:16:12 +0000]
added Twig_LoaderArray::setTemplate()
Fabien Potencier [Wed, 24 Aug 2011 10:15:02 +0000]
switcher PHPUnit colors to true
Fabien Potencier [Thu, 18 Aug 2011 17:16:29 +0000]
merged branch videlalvaro/patch-1 (PR #419)
Commits
-------
0ef1cb0 Edited doc/templates.rst via GitHub
Discussion
----------
Edited doc/templates.rst via GitHub
I fixed a typo: Variables can by for Variables can be
Alvaro Videla [Tue, 16 Aug 2011 13:27:40 +0000]
Edited doc/templates.rst via GitHub
Fabien Potencier [Mon, 8 Aug 2011 21:00:24 +0000]
changed unit tests so that they work for PHP 5.2
Fabien Potencier [Sun, 7 Aug 2011 19:32:22 +0000]
moved some logic to the constructor (that's allows visitors to have the real node that will be compiled)
Fabien Potencier [Tue, 26 Jul 2011 21:22:49 +0000]
added an optimization for the set tag when used to capture a large chunk of static text
Fabien Potencier [Sun, 7 Aug 2011 15:26:48 +0000]
removed unneeded implementation of Template::getTemplateName()
Fabien Potencier [Sun, 7 Aug 2011 08:07:35 +0000]
changed name regex to allow more characters (the same as PHP - works for blocks, tags, functions, filters, and macros - closes #376)
Fabien Potencier [Sun, 7 Aug 2011 07:37:28 +0000]
merged branch nikic/doNotUseNameNodeForFuncNames (PR #410)
Commits
-------
da4d964 Do not use Node_Expression_Name for function names, just use strings for those
Discussion
----------
Do not use Node_Expression_Name for function names
This patch remove the use of Node_Expression_Name for function names and instead uses normal strings for those. This is mainly to prevent problems with static analysis (e.g. using a loop() function would have triggered with_loop), but it also slightly reduces complexity.
nikic [Sun, 3 Jul 2011 10:26:50 +0000]
Do not use Node_Expression_Name for function names, just use strings for those
Fabien Potencier [Sat, 6 Aug 2011 08:56:03 +0000]
removed obsolete code
Fabien Potencier [Sat, 6 Aug 2011 08:44:55 +0000]
refactored code
Fabien Potencier [Sat, 6 Aug 2011 07:48:38 +0000]
added the possibility to test for exceptions in integration tests
Fabien Potencier [Sat, 6 Aug 2011 07:16:03 +0000]
removed the possibility to use the extends tag from a block (as it is semantically incorrect and it probably does not work as you expect it to in this case)
Fabien Potencier [Sat, 6 Aug 2011 07:09:18 +0000]
moved Template::getParent() logic to the base class
Fabien Potencier [Sat, 6 Aug 2011 06:40:52 +0000]
added documentation for previous merge
Fabien Potencier [Sat, 6 Aug 2011 06:35:41 +0000]
fixed unit tests for previous merge
Fabien Potencier [Sat, 6 Aug 2011 06:34:15 +0000]
merged branch kotas/master (PR #362)
Commits
-------
f5b9df9 added `if` modifier support to for loop like {% for k in v if k is odd %}
Discussion
----------
[1.2] added `if` modifier support to for loop
Hi.
I'm one of Twig users who love it so much. :)
I've made a patch for adding `if` modifier support to `for` loop in Twig.
Example:
<pre>
{% for n in range(0, 5) if n is odd %}
{{ n }}
{% endfor %}
</pre>
Output:
<pre>
1
3
5
</pre>
This idea comes from Python's list comprehensions. (like `[n for n in range(0,6) if n % 2 == 1]`)
Here is another example.
Before:
<pre>
{% set no_items = true %}
{% for item in items %}
{% if item.available %}
{% set no_items = false %}
{{ item.name }}
{% endif %}
{% endfor %}
{% if no_items %}
No items available.
{% endif %}
</pre>
After:
<pre>
{% for item in items if item.available %}
{{ item.name }}
{% else %}
No items available.
{% endfor %}
</pre>
I hope you like it. But If not, just ignore this request. :)
Thanks.
---------------------------------------------------------------------------
by fabpot at 2011/06/24 01:33:33 -0700
I like it! I will schedule it for inclusion in Twig 1.2. Thanks.
---------------------------------------------------------------------------
by hhamon at 2011/06/26 16:43:26 -0700
+1
---------------------------------------------------------------------------
by nikic at 2011/06/27 00:42:14 -0700
I think the idea per se is interesting. But I just checked all Twig templates in my whole codebase and couldn't find any use for it. What was your practical use for this feature @kotas?
---------------------------------------------------------------------------
by kotas at 2011/06/27 01:52:48 -0700
@nikic My practical use is shown as the second example in the body of this pull request.
Sometimes you need to "filter" an array by seeing its element's property like "item.available" or by some condition like "item.price >= 500".
To do this, in the current version of Twig, you have to write "for" and "if" as nested scopes. And if you want to write {% else %} of the "for" loop, you have to make a temporary variable to see if all elements are skipped.
I think this feature is not essential, but makes templates clean.
---------------------------------------------------------------------------
by nikic at 2011/06/27 06:23:24 -0700
The thing about `else` seems plausible. +1
---------------------------------------------------------------------------
by chucktrukk at 2011/08/02 17:39:16 -0700
Also +1. that makes some very clean template code.
Fabien Potencier [Sat, 6 Aug 2011 06:16:57 +0000]
added GtkSourceView support in doc
Fabien Potencier [Thu, 4 Aug 2011 08:29:19 +0000]
merged branch igorw/recipes-highlight (PR #405)
Commits
-------
0580f19 fix highlighting of snippet in recipes doc
Discussion
----------
fix highlighting of snippet in recipes doc
Igor Wiedler [Sun, 31 Jul 2011 00:25:43 +0000]
fix highlighting of snippet in recipes doc
Fabien Potencier [Sat, 30 Jul 2011 08:10:16 +0000]
bumped version to 1.2.0-DEV
Fabien Potencier [Sat, 30 Jul 2011 07:52:15 +0000]
prepared 1.1.2 released
Fabien Potencier [Thu, 28 Jul 2011 12:32:45 +0000]
fixed Parser bug when a child node is null
Fabien Potencier [Thu, 28 Jul 2011 12:32:07 +0000]
fixed Parser bug
Josh Turmel [Wed, 27 Jul 2011 07:10:01 +0000]
Add bitwise operators to core
* Added bitwise operators (and, xor, or) to core
Fabien Potencier [Wed, 27 Jul 2011 12:25:09 +0000]
fixed unit test, updated CHANGELOG
Fabien Potencier [Wed, 27 Jul 2011 12:23:49 +0000]
merged branch JEDIBC/master (PR #401)
Commits
-------
755ea99 Correction of a BC break with json_encode and PHP 5.2.x
Discussion
----------
BC break with json_encode and php 5.2.x
Hi,
json_encode on php 5.2.x doesn't take the $options parameter wich result in a warning and the function return nothing.
Cheers.
JEDIBC [Wed, 27 Jul 2011 10:24:34 +0000]
Correction of a BC break with json_encode and PHP 5.2.x
Fabien Potencier [Wed, 27 Jul 2011 09:23:08 +0000]
simplified code for previous merge/commits
Fabien Potencier [Wed, 27 Jul 2011 08:12:28 +0000]
changed previous commit to preserve better BC
Fabien Potencier [Wed, 27 Jul 2011 07:44:25 +0000]
fixed CS on template output
Fabien Potencier [Wed, 27 Jul 2011 07:36:26 +0000]
updated CHANGELOG
Fabien Potencier [Wed, 27 Jul 2011 07:34:28 +0000]
fixed previous merge
Fabien Potencier [Wed, 27 Jul 2011 07:33:41 +0000]
merged branch hason/optimizer (PR #399)
Commits
-------
3c5c512 fixed optimization for rendering blocks with variable name
Discussion
----------
Fixed bug in optimization
Martin Hason [Wed, 27 Jul 2011 06:19:59 +0000]
fixed optimization for rendering blocks with variable name
Fabien Potencier [Tue, 26 Jul 2011 15:36:37 +0000]
updated CHANGELOG
Fabien Potencier [Tue, 26 Jul 2011 15:32:54 +0000]
fixed inherited templates when an empty body
Fabien Potencier [Tue, 26 Jul 2011 15:30:32 +0000]
merged branch netzhuffle/master (PR #396)
Commits
-------
7b154d6 Switched a tab to four spaces
29d3cb2 Added testcase for #395
4fc7a8d Merge remote-tracking branch 'upstream/master'
c890cf2 Fixed existing tests
9822ac4 Changed Module.php to pass existing tests
fab8c72 fixed issue #395
Discussion
----------
Fix for issue #395
Fix for #395
I hope you can use it.
---------------------------------------------------------------------------
by fabpot at 2011/07/25 00:07:50 -0700
Can you add some unit tests?
---------------------------------------------------------------------------
by netzhuffle at 2011/07/25 13:57:55 -0700
Here you are.
Fabien Potencier [Tue, 26 Jul 2011 06:07:02 +0000]
removed comment
Fabien Potencier [Tue, 26 Jul 2011 06:02:51 +0000]
fixed compilation of templates when the body of a child template is not empty
Jannis Grimm [Mon, 25 Jul 2011 21:10:29 +0000]
Switched a tab to four spaces
Jannis Grimm [Mon, 25 Jul 2011 20:55:53 +0000]
Added testcase for #395
Jannis Grimm [Mon, 25 Jul 2011 20:32:17 +0000]
Merge remote-tracking branch 'upstream/master'
Jannis Grimm [Mon, 25 Jul 2011 20:29:47 +0000]
Fixed existing tests
Jannis Grimm [Mon, 25 Jul 2011 20:12:48 +0000]
Changed Module.php to pass existing tests
Fabien Potencier [Mon, 25 Jul 2011 16:46:01 +0000]
simplified CHANGELOG
Fabien Potencier [Mon, 25 Jul 2011 16:14:12 +0000]
updated CHANGELOG
Fabien Potencier [Mon, 25 Jul 2011 16:12:16 +0000]
fixed output when a macro throws an exception
Fabien Potencier [Mon, 25 Jul 2011 16:05:31 +0000]
fixed PHPDocs for the Token parsers
Fabien Potencier [Mon, 25 Jul 2011 15:56:29 +0000]
fixed PHPDocs for the Core extension
Fabien Potencier [Mon, 25 Jul 2011 13:52:46 +0000]
merged branch pulse00/master (PR #389)
Commits
-------
351910b added twig comments
2b7e8d9 added phpDocs for TokenParsers, filters and tests
Discussion
----------
PHPDocs updated
fixed copy/paste errors and added docs to Sandbox and Use tags
Fabien Potencier [Mon, 25 Jul 2011 13:51:24 +0000]
fixed a parsing problem when a large chunk of text is enclosed in a comment tag
Jannis Grimm [Sun, 24 Jul 2011 20:55:34 +0000]
fixed issue #395
Fabien Potencier [Tue, 19 Jul 2011 13:27:34 +0000]
added filename when throwing an exception when we know it
Robert Gruendler [Mon, 18 Jul 2011 12:35:57 +0000]
added twig comments
Robert Gruendler [Mon, 18 Jul 2011 11:32:46 +0000]
added phpDocs for TokenParsers, filters and tests
Fabien Potencier [Sun, 17 Jul 2011 13:53:10 +0000]
prepared 1.1.1 release
Fabien Potencier [Sat, 16 Jul 2011 19:08:20 +0000]
made a small optimization on Core functions
Fabien Potencier [Sat, 16 Jul 2011 18:37:44 +0000]
added an optimization to the Optimizer
Fabien Potencier [Tue, 12 Jul 2011 08:04:49 +0000]
updated CHANGELOG
Fabien Potencier [Tue, 12 Jul 2011 07:50:37 +0000]
fixed CS
Fabien Potencier [Tue, 12 Jul 2011 07:49:44 +0000]
merged branch nikic/improveIsDefinedPerformanceInNonStrictMode (PR #381)
Commits
-------
e4b8371 Improve performance of is defined in non strict mode
Discussion
----------
Improve performance of is defined in non strict mode
Addresses issue #380: This gives a good performance improvement on defined tests in non-strict code. About 2x.
Reasoning: It doesn't make sense to propagate the `is_defined_test` flag into deeper levels in non-strict mode, because all getAttr functions and name accesses will just return `null` if it doesn't exist and `null` is just as good as `false`.
---------------------------------------------------------------------------
by nikic at 2011/07/02 03:22:53 -0700
Though, do not merge yet please. Changes behavior concerning methods.
---------------------------------------------------------------------------
by nikic at 2011/07/02 13:34:32 -0700
Hm, I really don't know what I was thinking when I wrote my last comment. There shouldn't be any behavior changes introduced by that change (and tests pass).
Fabien Potencier [Tue, 12 Jul 2011 07:49:06 +0000]
merged branch nikic/optimizeVariableAccess2 (PR #382)
Commits
-------
5b91f12 Update tests
a5ef326 Use Template->getContext in non-strict mode too
Discussion
----------
Use Template->getContext() when in non-strict mode, too
As described in #380 using the current `isset($context['test']) ? $context['test'] : null` approach can cause problems in some cases: The ternary operator always returns by value and thus PHP's copy-on-write concept does not apply. So `$context['test']` needs to be copied in any case, even though a write never happens to it. Basically Twig is copying the values of all variables ever used inside Twig if it operates in non-strict mode. This is problematic when `$context['test']` contains big arrays as the whole array is copied.
In this patch I change Twig to use `Template->getContext` when in non-strict mode too and add an `isStrictVariables` check in there.
Fabien Potencier [Mon, 11 Jul 2011 16:54:11 +0000]
merged branch real-chocopanda/ob_fix (PR #379)
Commits
-------
75748a5 revert accidental mode change
681d2b8 fix nested buffers issue #374
Discussion
----------
fix nested buffers issue #374
see #374 for details
---------------------------------------------------------------------------
by fabpot at 2011/07/09 01:02:50 -0700
You have inadvertently changed the mode to 0755. Should stay at 0644.
---------------------------------------------------------------------------
by macolu at 2011/07/09 03:07:42 -0700
Mode change reverted.
About this Windows bug... Are you talking about the zlib issue? When zlib compression is activated, it adds a buffer level that ob_end_clean() can't close. So ob_get_level() never go below 1.
http://cksource.com/forums/viewtopic.php?t=21653
http://www.php.net/manual/fr/function.ob-get-level.php#52945
In that case, the first ob_get_level() call will always return something greater than 0. So $level var will be > 0. This should avoid infinite loops.
Fabien Potencier [Mon, 11 Jul 2011 16:53:57 +0000]
updated VERSION
Matthieu Robin [Sat, 9 Jul 2011 09:34:52 +0000]
revert accidental mode change
nikic [Sat, 2 Jul 2011 21:53:43 +0000]
Update tests
nikic [Sat, 2 Jul 2011 21:43:11 +0000]
Use Template->getContext in non-strict mode too
nikic [Sat, 2 Jul 2011 09:20:54 +0000]
Improve performance of is defined in non strict mode
Matthieu Robin [Fri, 1 Jul 2011 08:35:24 +0000]
fix nested buffers issue #374
Fabien Potencier [Tue, 28 Jun 2011 06:09:35 +0000]
updated CHANGELOG
Fabien Potencier [Tue, 28 Jun 2011 06:06:52 +0000]
merged branch markstory/fix-308 (PR #373)
Commits
-------
eaa8995 Grammatical fix.
Discussion
----------
Grammatical fix.
A small grammatical fix for #308 + PR #372
Mark Story [Mon, 27 Jun 2011 11:28:17 +0000]
Grammatical fix.
Fabien Potencier [Mon, 27 Jun 2011 07:29:21 +0000]
merged branch markstory/fix-308 (PR #372)
Commits
-------
c178c28 Making docs more explict as to what kind of object can be used with Twig_Function_Method. Fixes #308
Discussion
----------
Fix for #308
Making docs more explict as to what kind of object can be used with Twig_Function_Method.
Fixes #308
Mark Story [Sun, 26 Jun 2011 21:31:56 +0000]
Making docs more explict as to what kind of object can be
used with Twig_Function_Method.
Fixes #308