This PR was submitted for the master branch but it was merged into the 1.x branch instead (closes#2002).
Discussion
----------
Implement Twig_Extension_GlobalsInterface on getGlobals example
I'm not sure if more information is required on when and why getGlobals was deprecated from Twig_Extension.
Refs #2001
Commits
-------
b8a987e Implement Twig_Extension_GlobalsInterface on getGlobals example
This PR was squashed before being merged into the 1.x branch (closes#2005).
Discussion
----------
[Doc] Add a note about escaping backslashes inside strings
Backslashes inside strings caused some confusion for some users. See https://github.com/symfony/symfony/issues/18207
Commits
-------
463ea80 [Doc] Add a note about escaping backslashes inside strings
This PR was merged into the 1.x branch.
Discussion
----------
Promote the include() function instead of the "include" tag
The `{% include %}` tag is pseudo-officially deprecated in favor of the `include()` function. Let's update the documentation to promote the function instead of the tag.
Commits
-------
ea090df Promote the include() function instead of the "include" tag
This PR was merged into the 1.x branch.
Discussion
----------
Fixed minor syntax issues in templates.rst
Commits
-------
4788e53 Fixed minor syntax issues in templates.rst
This PR was merged into the 1.x branch.
Discussion
----------
Clarify exception message in Twig_Template::getAttribute
When a non existing property/method is called for an object, the exception message is:
> Method "property()" for object "[class]" does not exist in [template]"
But in fact the `Twig_Template::getAttribute()` method check for (at least) 3 more methods (`isProperty()`, `getProperty()` and `__call__()`).
It could be more adapted and easier to be debugged if the message would be:
> Neither the property "property" nor one of the methods "property]()", "getProperty()"/"isPropertyt()" or "__call()" exist and have public access in class "[class]" in [template]
This message is mostly inspired from the one used in the PropertyAccess component.
BTW I think that it would be great to replace all the checks listed above by a `PropertyAccessor::isReadable([property])`.
I can work on a PR if it's not overkill.
Commits
-------
d455b52 Clarify exception message in Twig_Template::getAttribute
Add missing parenthesis
Adapt twig.c extension
Update the C extension
Use php_ucfirst instead of ucfirst
Try to implement a TWIG_UCFIRST in C extension
Last try ucfirst
Rollback twig.c extension
Remove useless ucfirst + update twig.c extension
Fix mis-escaped char
Repeat argument item for sprintf (first try doesnt work)
Remove unexpected breakline in code
This PR was merged into the 1.x branch.
Discussion
----------
marked some Twig_Environment methods as being internal
This PR marks some `Twig_Environment` methods as being internals:
* `getFunctions()`, `getFilters()`, `getTests()`, `getFunction()`, `getFilter()`, `getTest()`, `getTokenParsers()`, `getTags()`, `getNodeVisitors()`, `getUnaryOperators()`, `getBinaryOperators()` because I don't see how they can be used in any useful way and anyway, `getFunctions()` and `getFilters()` do not return all possible functions or filters. Moreover, I think that all this logic could be refactored and moved into its own class for 2.0 (could be done by deprecating those existing methods in 1.x if we agree to merge this PR).
* `getGlobals()` because it should only be called in a runtime context, not in a compilation one (so limiting its usage to internal use only allows for better control of usage).
* `initGlobals()`, `initExtensions()`, `initExtension()` because they are private in Twig 2.0.
Commits
-------
212730a marked some Twig_Environment methods as being internal
This PR was merged into the 1.x branch.
Discussion
----------
fixed the defined test when used on a constant, a map, or a sequence
Commits
-------
62e8ee3 fixed the defined test when used on a constant, a map, or a sequence
This PR was merged into the 1.x branch.
Discussion
----------
Use strict comparison for charset
There is no reason not to use strict comparison here. Also some minor cs fixes.
Commits
-------
4f32737 compare charset strictly
This PR was merged into the 1.x branch.
Discussion
----------
undeprecated _self
Un-deprecated `_self`. As mentioned in #1932, `_self` is sometimes used to get the current template name, which is a legitimate usage and almost always the user intent. Moreover, when `_self` is used in a template, it is mostly passed to Twig functions that are able to deal with Twig templates or Twig template names indifferently.
fixes#1932
Commits
-------
b490e65 undeprecated _self
This PR was squashed before being merged into the 1.x branch (closes#1930).
Discussion
----------
Fix Parser context push on stack
Hello,
With php7RC8, in Twig_Parser, parse method starts by saving current context in
copying self properties on stack. It sounds like get_object_vars returns now
references instead of copies of properties (at least for arrays). Consequently,
when reinitializing Parser for subparse line 92 to 99, the preserved context on
stack was also erased.
As a result, when calling {{ parent() }} after a {%embed%}{%endembed%}, the restored blockStack being empty, Twig throws a Twig_Error_Syntax('Calling "parent" outside a block is forbidden.'), despite the fact it is really in a block that extends another.
When calling {{ parent() }} before the embed tag, all works properly. (It seems that the empty context, resulting of subparses, is not a problem as far as you don't need to access it)
Commits
-------
07ebdfe Fix Parser context push on stack
This PR was merged into the 1.x branch.
Discussion
----------
Improve deprecations message
This PR specifies the version in which some ``Twig_SimpleTest`` were deprecated to make it easier to upgrade a package.
Commits
-------
fdb1937 Improve deprecations message Add the version in the message
This PR was merged into the 1.x branch.
Discussion
----------
rtrim cache dir
@see #1951
Commits
-------
c3ec2fb Make file cache tolerant for trailing (back)slashes on directory configuration.
This PR was submitted for the master branch but it was merged into the 1.x branch instead (closes#1929).
Discussion
----------
[DOC] Fixed typos in advanced.rst
Hey,
there are two typos of `Interace`. Although it sounds cool, `Interface` works better for copy and paste.
Cheers
Matthais
Commits
-------
57cd302 [DOC] Fixed typos in advanced.rst
This PR was merged into the 1.x branch.
Discussion
----------
Removed usage of deprecated constant
Commits
-------
f19318d Removed usage of deprecated constant
This PR was squashed before being merged into the 1.x branch (closes#1945).
Discussion
----------
skip read-only dir tests on windows and cleanup tmp dirs correctly
- fix tests on windows (skipping them as read-only dirs are not possible on windows, only read-only files; read-only attribute on folders (`exec('attrib +R '`) does not prevent files to be created inside them)
- correctly cleanup tmp directories at the end of tests
Commits
-------
c6601a1 skip read-only dir tests on windows and cleanup tmp dirs correctly
This PR was merged into the 1.x branch.
Discussion
----------
Fixing a slight typo in interface
Just a typo in the ExtensionInterface
Commits
-------
de15975 Fixing a slight typo in interface