From 776e32bc7a5f45ee3f4db69b88337de138178c83 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 24 Apr 2019 19:44:11 +0200 Subject: [PATCH] deprecated the filter tag --- CHANGELOG | 1 + doc/deprecated.rst | 5 ++++- src/TokenParser/FilterTokenParser.php | 4 ++++ test/Twig/Tests/Fixtures/macros/with_filters.test | 2 +- .../Tests/Fixtures/regression/block_names_unicity.test | 8 ++++---- .../tags/filter/{basic.test => basic.legacy.test} | 2 ++ .../filter/{json_encode.test => json_encode.legacy.test} | 2 ++ .../tags/filter/{multiple.test => multiple.legacy.test} | 2 ++ .../tags/filter/{nested.test => nested.legacy.test} | 3 +++ .../tags/filter/{scope.test => scope.legacy.test} | 2 ++ .../{with_for_tag.test => with_for_tag.legacy.test} | 2 ++ .../filter/{with_if_tag.test => with_if_tag.legacy.test} | 2 ++ 12 files changed, 29 insertions(+), 6 deletions(-) rename test/Twig/Tests/Fixtures/tags/filter/{basic.test => basic.legacy.test} (67%) rename test/Twig/Tests/Fixtures/tags/filter/{json_encode.test => json_encode.legacy.test} (62%) rename test/Twig/Tests/Fixtures/tags/filter/{multiple.test => multiple.legacy.test} (65%) rename test/Twig/Tests/Fixtures/tags/filter/{nested.test => nested.legacy.test} (59%) rename test/Twig/Tests/Fixtures/tags/filter/{scope.test => scope.legacy.test} (72%) rename test/Twig/Tests/Fixtures/tags/filter/{with_for_tag.test => with_for_tag.legacy.test} (69%) rename test/Twig/Tests/Fixtures/tags/filter/{with_if_tag.test => with_if_tag.legacy.test} (79%) diff --git a/CHANGELOG b/CHANGELOG index cba8ba32d..9dd92c78c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ * 2.9.0 (2019-XX-XX) + * deprecated the "filter" tag (use the "apply" tag instead) * added template line number to twig_get_attribute() * 2.8.1 (2019-04-16) diff --git a/doc/deprecated.rst b/doc/deprecated.rst index f21bdd1e7..4bb13398e 100644 --- a/doc/deprecated.rst +++ b/doc/deprecated.rst @@ -29,13 +29,16 @@ Tags ---- * The ``spaceless`` tag is deprecated in Twig 2.7. Use the ``spaceless`` filter - instead or ``{% filter spaceless %}`` (the ``Twig\Node\SpacelessNode`` and + instead or ``{% apply spaceless %}`` (the ``Twig\Node\SpacelessNode`` and ``Twig\TokenParser\SpacelessTokenParser`` classes are also deprecated). * Using the ``spaceless`` tag at the root level of a child template is deprecated in Twig 2.5.0. This does not work as one would expect it to work anyway. In Twig 3.0, it will throw a ``Twig\Error\SyntaxError`` exception. +* The ``filter`` tag is deprecated in Twig 2.9. Use the ``apply`` tag instead + (the ``Twig\TokenParser\FilterTokenParser`` classes is also deprecated). + Final Classes ------------- diff --git a/src/TokenParser/FilterTokenParser.php b/src/TokenParser/FilterTokenParser.php index fc15baa9e..ad2ac33f1 100644 --- a/src/TokenParser/FilterTokenParser.php +++ b/src/TokenParser/FilterTokenParser.php @@ -23,11 +23,15 @@ use Twig\Token; * {% filter upper %} * This text becomes uppercase * {% endfilter %} + * + * @deprecated since Twig 2.9, to be removed in 3.0 (use the "apply" tag instead) */ final class FilterTokenParser extends AbstractTokenParser { public function parse(Token $token) { + @trigger_error('The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead.', E_USER_DEPRECATED); + $name = $this->parser->getVarName(); $ref = new BlockReferenceExpression(new ConstantExpression($name, $token->getLine()), null, $token->getLine(), $this->getTag()); diff --git a/test/Twig/Tests/Fixtures/macros/with_filters.test b/test/Twig/Tests/Fixtures/macros/with_filters.test index 96064ba01..72a7a2f44 100644 --- a/test/Twig/Tests/Fixtures/macros/with_filters.test +++ b/test/Twig/Tests/Fixtures/macros/with_filters.test @@ -4,7 +4,7 @@ macro with a filter {% import _self as test %} {% macro test() %} - {% filter escape %}foo
{% endfilter %} + {% apply escape %}foo
{% endapply %} {% endmacro %} {{ test.test() }} diff --git a/test/Twig/Tests/Fixtures/regression/block_names_unicity.test b/test/Twig/Tests/Fixtures/regression/block_names_unicity.test index df0747072..194146768 100644 --- a/test/Twig/Tests/Fixtures/regression/block_names_unicity.test +++ b/test/Twig/Tests/Fixtures/regression/block_names_unicity.test @@ -3,14 +3,14 @@ Block names are unique per template --TEMPLATE-- {% extends 'layout' %} {% block content -%} - {% filter title -%} + {% apply title -%} second - {% endfilter %} + {% endapply %} {% endblock %} --TEMPLATE(layout)-- -{% filter title -%} +{% apply title -%} first -{% endfilter %} +{% endapply %} {% block content %}{% endblock %} --DATA-- return [] diff --git a/test/Twig/Tests/Fixtures/tags/filter/basic.test b/test/Twig/Tests/Fixtures/tags/filter/basic.legacy.test similarity index 67% rename from test/Twig/Tests/Fixtures/tags/filter/basic.test rename to test/Twig/Tests/Fixtures/tags/filter/basic.legacy.test index 866171ecc..1efedb94a 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/basic.test +++ b/test/Twig/Tests/Fixtures/tags/filter/basic.legacy.test @@ -1,5 +1,7 @@ --TEST-- "filter" tag applies a filter on its children +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter upper %} Some text with a {{ var }} diff --git a/test/Twig/Tests/Fixtures/tags/filter/json_encode.test b/test/Twig/Tests/Fixtures/tags/filter/json_encode.legacy.test similarity index 62% rename from test/Twig/Tests/Fixtures/tags/filter/json_encode.test rename to test/Twig/Tests/Fixtures/tags/filter/json_encode.legacy.test index a2562b995..7ec6be3bd 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/json_encode.test +++ b/test/Twig/Tests/Fixtures/tags/filter/json_encode.legacy.test @@ -1,5 +1,7 @@ --TEST-- "filter" tag applies a filter on its children +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter json_encode|raw %}test{% endfilter %} --DATA-- diff --git a/test/Twig/Tests/Fixtures/tags/filter/multiple.test b/test/Twig/Tests/Fixtures/tags/filter/multiple.legacy.test similarity index 65% rename from test/Twig/Tests/Fixtures/tags/filter/multiple.test rename to test/Twig/Tests/Fixtures/tags/filter/multiple.legacy.test index 8eb3cbdd7..0e8d251e1 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/multiple.test +++ b/test/Twig/Tests/Fixtures/tags/filter/multiple.legacy.test @@ -1,5 +1,7 @@ --TEST-- "filter" tags accept multiple chained filters +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter lower|title %} {{ var }} diff --git a/test/Twig/Tests/Fixtures/tags/filter/nested.test b/test/Twig/Tests/Fixtures/tags/filter/nested.legacy.test similarity index 59% rename from test/Twig/Tests/Fixtures/tags/filter/nested.test rename to test/Twig/Tests/Fixtures/tags/filter/nested.legacy.test index 6d18e1af0..1d894fea6 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/nested.test +++ b/test/Twig/Tests/Fixtures/tags/filter/nested.legacy.test @@ -1,5 +1,8 @@ --TEST-- "filter" tags can be nested at will +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter lower|title %} {{ var }} diff --git a/test/Twig/Tests/Fixtures/tags/filter/scope.test b/test/Twig/Tests/Fixtures/tags/filter/scope.legacy.test similarity index 72% rename from test/Twig/Tests/Fixtures/tags/filter/scope.test rename to test/Twig/Tests/Fixtures/tags/filter/scope.legacy.test index 889a46f6a..6a7720e84 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/scope.test +++ b/test/Twig/Tests/Fixtures/tags/filter/scope.legacy.test @@ -1,5 +1,7 @@ --TEST-- "scope" tag creates a new scope +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter spaceless %} {% set item = 'foo' %} diff --git a/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test b/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.legacy.test similarity index 69% rename from test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test rename to test/Twig/Tests/Fixtures/tags/filter/with_for_tag.legacy.test index d2d87cfda..76985646b 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test +++ b/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.legacy.test @@ -1,5 +1,7 @@ --TEST-- "filter" tag applies the filter on "for" tags +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter upper %} {% for item in items %} diff --git a/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test b/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.legacy.test similarity index 79% rename from test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test rename to test/Twig/Tests/Fixtures/tags/filter/with_if_tag.legacy.test index f2e804bfb..74a4bb577 100644 --- a/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test +++ b/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.legacy.test @@ -1,5 +1,7 @@ --TEST-- "filter" tag applies the filter on "if" tags +--DEPRECATION-- +The "filter" tag is deprecated since Twig 2.9, use the "apply" tag instead. --TEMPLATE-- {% filter upper %} {% if items %}