Commit Graph

7254 Commits

Author SHA1 Message Date
Gregor Harlan 45cd6ffe80 CoreExtension::getAttribute: small improvement regarding getter/isser/hasser 2025-07-29 10:12:10 +02:00
Nicolas Grekas b1d2a9c20f minor #4671 Enable Fabbot as a GHA (nicolas-grekas)
This PR was merged into the 3.x branch.

Discussion
----------

Enable Fabbot as a GHA

Follows https://github.com/symfony/symfony/pull/61256

Commits
-------

a1ea8edc94 Enable Fabbot as a GHA
2025-07-29 10:10:59 +02:00
Nicolas Grekas fec73458dc minor #4664 CS fixes (nicolas-grekas)
This PR was merged into the 3.x branch.

Discussion
----------

CS fixes

Commits
-------

85a4817128 CS fixes
2025-07-29 10:10:06 +02:00
Nicolas Grekas 85a4817128 CS fixes 2025-07-29 10:07:07 +02:00
Nicolas Grekas a1ea8edc94 Enable Fabbot as a GHA 2025-07-29 09:57:34 +02:00
Fabien Potencier 1680bba422 minor #4663 Escaper performance: avoid static variables (gharlan)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Escaper performance: avoid static variables

Replace two static variables with `match` expressions.
And bypass a third static variable for the common charset `UTF-8`.

Commits
-------

823f50297b Escaper performance: avoid static variables
2025-07-12 15:47:13 +02:00
Gregor Harlan 823f50297b Escaper performance: avoid static variables 2025-07-12 15:47:09 +02:00
Fabien Potencier 115114b415 bug #4665 Fix compatibility with Symfony 8 (nicolas-grekas)
This PR was merged into the 3.x branch.

Discussion
----------

Fix compatibility with Symfony 8

Commits
-------

b6a105c952 Fix compatibility with Symfony 8
2025-07-11 15:49:59 +02:00
Nicolas Grekas b6a105c952 Fix compatibility with Symfony 8 2025-07-10 12:07:05 +02:00
Fabien Potencier 7f908ba1f4 minor #4660 Add documentation for use_yield option (hschletz)
This PR was merged into the 3.x branch.

Discussion
----------

Add documentation for use_yield option

Documentation was present in the source code, but missing in the docs.

Commits
-------

b8827b412d Add documentation for use_yield option
2025-07-06 10:42:55 +02:00
hschletz b8827b412d Add documentation for use_yield option
Documentation was present in the source code, but missing in the docs.
2025-07-02 12:45:53 +02:00
Fabien Potencier 403bd9d73c minor #4649 Coding standard suggestion about empty content (VincentLanglet)
This PR was merged into the 3.x branch.

Discussion
----------

Coding standard suggestion about empty content

Hi `@fabpot`

As suggested by `@stof` https://github.com/symfony/symfony/pull/60761#discussion_r2140647490

This would allow writing `{#--#}` rather than `{#- -#}` when following the twig coding standard.

Commits
-------

0b93a1fa5a Stof suggestion about empty content
2025-06-15 16:42:08 +02:00
Vincent Langlet 0b93a1fa5a Stof suggestion about empty content 2025-06-12 08:47:12 +02:00
Fabien Potencier 7dca48a57c minor #4645 Update templates.rst: Removing duplication (ThomasLandauer)
This PR was merged into the 3.x branch.

Discussion
----------

Update templates.rst: Removing duplication

Page: https://twig.symfony.com/doc/3.x/templates.html#dot_operator

Reason: This is repeated a few lines further down.

Commits
-------

a26f43a6a6 Update templates.rst: Removing duplication
2025-06-06 08:01:35 +02:00
Thomas Landauer a26f43a6a6 Update templates.rst: Removing duplication
Page: https://twig.symfony.com/doc/3.x/templates.html#dot_operator

Reason: This is repeated a few lines further down.
2025-06-05 23:22:30 +02:00
Fabien Potencier 5f2b1ee6de feature #4642 [CommonMark] Update configuration keys + allow extra keys for extensions (doekenorg)
This PR was merged into the 3.x branch.

Discussion
----------

[CommonMark] Update configuration keys + allow extra keys for extensions

This PR adds missing keys from the current version of CommonMark (2.7).

It also fixes a bug where extra keys are removed. The original intent was to keep the extra keys, so extensions could be configured as well. Currently, these keys are removed, meaning extensions can not be configured.

Original PR #3737.

Commits
-------

a8aadc3e99 Update configuration keys + allow extra keys for extensions
2025-05-23 04:16:20 -07:00
Doeke Norg a8aadc3e99 Update configuration keys + allow extra keys for extensions 2025-05-23 09:29:36 +02:00
Fabien Potencier 9ff927ae5d minor #4638 Update reduce.rst (AndCycle)
This PR was merged into the 3.x branch.

Discussion
----------

Update reduce.rst

remove note, better argument for example
reduce doesn't use `array_reduce` internally

https://github.com/twigphp/Twig/issues/3802
https://github.com/twigphp/Twig/commit/609794c37668989b670d79e97baf8d5ce05e0a97

Commits
-------

bb6382c1bb Update reduce.rst
2025-05-18 10:07:38 +02:00
Fabien Potencier 993fb097e7 minor #4640 replace typographic quote with straigt single quote (xabbuh)
This PR was merged into the 3.x branch.

Discussion
----------

replace typographic quote with straigt single quote

make DOCtor-RST 1.68 happy and account for OskarStark/doctor-rst#2011

Commits
-------

057ea92274 replace typographic quote with straigt single quote
2025-05-18 10:06:06 +02:00
Christian Flothmann 057ea92274 replace typographic quote with straigt single quote
make DOCtor-RST 1.68 happy and account for OskarStark/doctor-rst#2011
2025-05-17 21:08:00 +02:00
Fabien Potencier b49e1cd401 minor #4639 [Docs] Add TwigCsFixer in tools list (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

[Docs] Add TwigCsFixer in tools list

Twig CS Fixer is already present in the code style / conventions page, but it feels to me very logical we see it on the "integration / tools" page.

Commits
-------

2184db3b9b Add TwigCsFixer in tools list
2025-05-16 12:29:43 +02:00
Simon André 2184db3b9b Add TwigCsFixer in tools list
Twig CS Fixer is already present in the code style / conventions page, but it feels to me very logical we see it on the "integration / tools" page.
2025-05-16 00:37:43 +02:00
AndCycle bb6382c1bb Update reduce.rst
remove note, better argument for example
reduce doesn't use array_reduce anymore
https://github.com/twigphp/Twig/issues/3802
2025-05-12 16:54:49 +08:00
Fabien Potencier 12a40e714c Bump version 2025-05-03 09:23:07 +02:00
Fabien Potencier 285123877d Prepare the 3.21.1 release v3.21.1 2025-05-03 09:21:55 +02:00
Fabien Potencier a4293d7d29 Update CHANGELOG 2025-05-03 09:21:26 +02:00
Fabien Potencier 4535f1282d bug #4633 Fix ExtensionSet usage of BinaryOperatorExpressionParser (VincentLanglet)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Fix ExtensionSet usage of BinaryOperatorExpressionParser

This fix both issue of https://github.com/twigphp/Twig/issues/4632

Commits
-------

e14a2474fb Fix warning
00d29e6657 Fix instantiation
2025-05-02 17:47:10 +02:00
Vincent Langlet e14a2474fb Fix warning 2025-05-02 17:41:32 +02:00
Vincent Langlet 00d29e6657 Fix instantiation 2025-05-02 17:39:47 +02:00
Fabien Potencier 06eb9eafe2 Bump version 2025-05-02 15:19:55 +02:00
Fabien Potencier b54a265712 Prepare the 3.21.0 release v3.21.0 2025-05-02 15:18:20 +02:00
Fabien Potencier fde4de9fd9 minor #4626 Tweaks html_cva docs (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Tweaks html_cva docs

Commits
-------

f14f2208f9 Tweaks html_cva docs
2025-03-30 09:52:47 +02:00
Fabien Potencier f14f2208f9 Tweaks html_cva docs 2025-03-30 09:51:16 +02:00
Fabien Potencier 7b2fe7cf14 minor #4613 Update html_cva.rst (seb-jean)
This PR was merged into the 3.x branch.

Discussion
----------

Update html_cva.rst

Commits
-------

1a46d12033 Update html_cva.rst
2025-03-30 09:50:03 +02:00
Fabien Potencier 999092d9c4 minor #4621 Update CHANGELOG (andreybolonin)
This PR was merged into the 3.x branch.

Discussion
----------

Update CHANGELOG

Commits
-------

92f7a5e924 Update CHANGELOG
2025-03-26 07:31:45 +01:00
Andrey Bolonin 92f7a5e924 Update CHANGELOG 2025-03-26 07:31:36 +01:00
Fabien Potencier 8a7d912deb feature #3916 Create attributes AsTwigFilter, AsTwigFunction and AsTwigTest to ease extension development (GromNaN)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Create attributes `AsTwigFilter`, `AsTwigFunction` and `AsTwigTest` to ease extension development

One drawback to writing extensions at present is that the declaration of functions/filters/tests is not directly adjacent to the methods. It's worse for runtime extensions because they need to be in 2 different classes. See [`SerializerExtension`](https://github.com/symfony/symfony/blob/7.0/src/Symfony/Bridge/Twig/Extension/SerializerExtension.php) and [`SerializerRuntime`](https://github.com/symfony/symfony/blob/7.0/src/Symfony/Bridge/Twig/Extension/SerializerRuntime.php) as an example.

By using attributes for filters, functions and tests definition, we can make writing extensions more expressive, and use reflection to detect particular options (`needs_environment`, `needs_context`, `is_variadic`).

Example if we implemented the `formatDate` filter: https://github.com/twigphp/Twig/blob/aeeec9a5e907a79e50a6bb78979154599401726e/extra/intl-extra/IntlExtension.php#L392-L395

By using the `AsTwigFilter` attribute, it is not necessary to create the `getFilters()` method. The `needs_environment` option is detected from method signature. The name is still required as the method naming convention (camelCase) doesn't match with Twig naming convention (snake_case).

```php
use Twig\Extension\Attribute\AsTwigFilter;

class IntlExtension
{
    #[AsTwigFilter(name: 'format_date')]
    public function formatDate(Environment $env, $date, ?string $dateFormat = 'medium', string $pattern = '', $timezone = null, string $calendar = 'gregorian', string $locale = null): string
    {
        return $this->formatDateTime($env, $date, $dateFormat, 'none', $pattern, $timezone, $calendar, $locale);
    }
}
```

This approach does not totally replace the current definition of extensions, which is still necessary for advanced needs. It does, however, make for more pleasant reading and writing.

This makes writing lazy-loaded runtime extension the easiest way to create Twig extension in Symfony: https://github.com/symfony/symfony/pull/52748

Related to https://github.com/symfony/symfony/issues/50016

Is there any need to cache the parsing of method attributes? They are only read at compile time, but that can have a performance impact during development or when using dynamic templates.

Commits
-------

5886907b28 Create attributes `AsTwigFilter`, `AsTwigFunction` and `AsTwigTest` to ease extension development
2025-03-24 22:34:23 +01:00
Jérôme Tamarelle 5886907b28 Create attributes AsTwigFilter, AsTwigFunction and AsTwigTest to ease extension development 2025-03-24 22:34:21 +01:00
Fabien Potencier 3c7c97e669 bug #4619 Fix wrong array index (again) (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix wrong array index (again)

Commits
-------

09f9a22310 Fix wrong array index (again)
2025-03-21 10:06:23 +01:00
Fabien Potencier 09f9a22310 Fix wrong array index (again) 2025-03-21 09:42:17 +01:00
Fabien Potencier 77a6da9cc7 minor #4616 [Docs] Replace = by : in code examples (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

[Docs] Replace `=` by `:` in code examples

Replace `=` by `:` in code examples
* function/include
* filters/format_number

Commits
-------

84b0499dbd [Docs] Replace `=` by `:` in code examples
2025-03-20 22:33:01 +01:00
Fabien Potencier 2a17b4f495 minor #4617 [Doc] Fix code-block in html_cva (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

[Doc] Fix `code-block` in html_cva

There is no `terminal` code-block in the current Twig documentation.

Using `bash` here instead is more in line with the other pages.

(...and will allow to simplify CSS needed for code blocks)

Commits
-------

a7c0482dc9 [Doc] Fix `code-block` in html_cva
2025-03-20 22:32:34 +01:00
Fabien Potencier 7b9aee98e1 minor #4618 fix: update extension references in docs to use backticks (smnandre)
This PR was merged into the 3.x branch.

Discussion
----------

fix: update extension references in docs to use backticks

Commits
-------

239a060d59 fix: update extension references in docs to use backticks
2025-03-20 22:32:08 +01:00
Simon André 239a060d59 fix: update extension references in docs to use backticks 2025-03-20 08:35:48 +01:00
Simon André a7c0482dc9 [Doc] Fix code-block in html_cva
There is no `terminal` code-block in the current Twig documentation.

Using `bash` here instead is more in line with the other pages.

(...and will allow to simplify CSS needed for code blocks)
2025-03-20 07:30:17 +01:00
Simon André 84b0499dbd [Docs] Replace = by : in code examples
* function/include
* filters/format_number
2025-03-20 07:23:44 +01:00
Fabien Potencier 95596ce95a minor #4615 fix: deprecated documentation (Garfield-fr)
This PR was merged into the 3.x branch.

Discussion
----------

fix: deprecated documentation

Commits
-------

c325912724 fix: deprecated documentation
2025-03-14 13:18:50 -07:00
Bertrand Zuchuat c325912724 fix: deprecated documentation
Co-authored-by: Bertrand Zuchuat <bertrand.zuchuat@gmail.com>
2025-03-14 21:10:34 +01:00
seb-jean 1a46d12033 Update html_cva.rst 2025-03-12 18:12:07 +01:00
Fabien Potencier 8440cf4ac2 minor #4610 Use : instead of = for named argument in the docs (jdreesen)
This PR was merged into the 3.x branch.

Discussion
----------

Use `:` instead of `=` for named argument in the docs

Commits
-------

ccec90c85c Use `:` instead of `=` for named argument in the docs
2025-03-06 18:33:52 +01:00