Commits
-------
be07174 Added @return doc on Twig_LoaderInterface->isFresh()
8315992 Added missing @throws in Twig_LoaderInterface
Discussion
----------
Added missing @throws in Twig_LoaderInterface
Based on Twig_Loader_Chain implementation, this seems to be the possible exception that can be thrown by loaders.
Commits
-------
71449e8 Remove optimization (covered by Optimization VAR_ACCESS anyway)
Discussion
----------
Remove optimization (covered by Optimization VAR_ACCESS anyway)
I have an own template class implementing getContext() and this one drove me completely mad after a twig upgrade.
After compilation the resulting templates have:
isset($context['bla'])
vs.
$this->getContext('bla')
Changing the Name Node however didn't have any effect and i saw that due to the optimizations by the SetTemp class twig doesn't even reach the Name Node. In fact SetTemp has the isset optimization hardcoded (which is ok).
I could simply fix my issue by setting optimizations to -9 (all optimizations except VAR_ACCESS). However the issue will reappear immediately when using PHP 5.4. Please remove the isset stuff from the non optimized node and let the optimization handler handle it (which i would disable in my case)
---------------------------------------------------------------------------
by m0ppers at 2012-01-24T17:42:07Z
some hackish script to test what i mean
<?php
require 'lib/Twig/Autoloader.php';
Twig_Autoloader::register();
abstract class Harxtemplate extends Twig_Template
{
public function getContext($context, $item, $ignoreStrictCheck = false)
{
if ($item == "hans") {
return "hund";
} else {
return parent::getContext($context, $item, $ignorStrictCheck);
}
}
}
$template = <<<EOT
Der {{ hans }} hat hund
{% if hans %}
hund
{% endif %}
EOT;
$loader = new Twig_Loader_String();
$options = array('base_template_class' => 'Harxtemplate',
// 'strict_variables' => true, // doesn't work
'debug' => true,
'optimizations' => -1, // 0 => works
);
$twig = new Twig_Environment($loader, $options);
echo $twig->render($template);
Commits
-------
95f8af7 cast $name to a string as $name can in fact be an object implementing __toString function as true in my case.
Discussion
----------
cast $name to a string ...
... because $name can be an object implementing __toString. I have Enum type implementation which implements __toString. Without the cast I'm getting the following exception:
"An exception has been thrown during the rendering of a template ("Warning: Illegal offset type in isset or empty in... "
---------------------------------------------------------------------------
by fabpot at 2012-01-18T08:43:23Z
From where do you call these methods? from your code? from a template?
---------------------------------------------------------------------------
by mvrhov at 2012-01-18T11:17:55Z
I put the enum object as variable into the template and then based on the enum value I display a block.
Commits
-------
e4590d0 Avoid creating unnecessary Twig_Markup instances, allows testing for falsiness of empty output
Discussion
----------
Avoid creating unnecessary Twig_Markup instances
This allows testing for falsiness of an empty output:
```jinja
{% set foo %}{% block lala %}{% endblock %}{% endset %}
{% if foo %}
some output with {{ foo }}
{% endif %}
```
Currently this requires `{% if foo|length %}` since the set tag will always return a Twig_Markup.
Commits
-------
5699753 added setTimezone to allow globally overriding the timezone when formating dates
Discussion
----------
Allow setting global timezone for date formatting
My API returns dates in a string format of 2012-02-14T00:35:37+00:00. When parsed by the DateTime constructor, the timezone for that new object is UTC. Without specifying every time I use the date filter there was no way to globally influence the timezone used.
I added setTimezone() to the core extension that functions similar to setDateFormat() except that there is no timezone set by default to allow for backwards compatibility.
Commits
-------
814cefd improve test coverage and support negative int for random function
Discussion
----------
improve test coverage and support negative int for random function