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
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 %}``
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
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.
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.
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.