This commit is contained in:
Fabien Potencier
2023-12-10 20:24:52 +01:00
parent 54d34b969b
commit aa7c454e2d
13 changed files with 30 additions and 24 deletions
@@ -33,7 +33,7 @@ class CssInlinerExtension extends AbstractExtension
if (null === $inliner) { if (null === $inliner) {
$inliner = new CssToInlineStyles(); $inliner = new CssToInlineStyles();
} }
return $inliner->convert($body, implode("\n", $css)); return $inliner->convert($body, implode("\n", $css));
} }
} }
@@ -13,6 +13,7 @@ namespace Twig\Extra\CssInliner;
/** /**
* @internal * @internal
*
* @deprecated since Twig 3.9.0 * @deprecated since Twig 3.9.0
*/ */
function twig_inline_css(string $body, string ...$css): string function twig_inline_css(string $body, string ...$css): string
@@ -13,6 +13,7 @@ namespace Twig\Extra\CssInliner\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Twig\Extra\CssInliner\CssInlinerExtension; use Twig\Extra\CssInliner\CssInlinerExtension;
use function Twig\Extra\CssInliner\twig_inline_css; use function Twig\Extra\CssInliner\twig_inline_css;
/** /**
+1
View File
@@ -13,6 +13,7 @@ use Twig\Extra\Html\HtmlExtension;
/** /**
* @internal * @internal
*
* @deprecated since Twig 3.9.0 * @deprecated since Twig 3.9.0
*/ */
function twig_html_classes(...$args): string function twig_html_classes(...$args): string
+1
View File
@@ -13,6 +13,7 @@ namespace Twig\Extra\Inky;
/** /**
* @internal * @internal
*
* @deprecated since Twig 3.9.0 * @deprecated since Twig 3.9.0
*/ */
function twig_inky(string $body): string function twig_inky(string $body): string
@@ -13,6 +13,7 @@ namespace Twig\Extra\Inky\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Twig\Extra\Inky\InkyExtension; use Twig\Extra\Inky\InkyExtension;
use function Twig\Extra\Inky\twig_inky; use function Twig\Extra\Inky\twig_inky;
/** /**
+4 -4
View File
@@ -31,21 +31,21 @@ final class MarkdownExtension extends AbstractExtension
public static function htmlToMarkdown(string $body, array $options = []): string public static function htmlToMarkdown(string $body, array $options = []): string
{ {
static $converters; static $converters;
if (!class_exists(HtmlConverter::class)) { if (!class_exists(HtmlConverter::class)) {
throw new \LogicException('You cannot use the "html_to_markdown" filter as league/html-to-markdown is not installed; try running "composer require league/html-to-markdown".'); throw new \LogicException('You cannot use the "html_to_markdown" filter as league/html-to-markdown is not installed; try running "composer require league/html-to-markdown".');
} }
$options += [ $options += [
'hard_break' => true, 'hard_break' => true,
'strip_tags' => true, 'strip_tags' => true,
'remove_nodes' => 'head style', 'remove_nodes' => 'head style',
]; ];
if (!isset($converters[$key = serialize($options)])) { if (!isset($converters[$key = serialize($options)])) {
$converters[$key] = new HtmlConverter($options); $converters[$key] = new HtmlConverter($options);
} }
return $converters[$key]->convert($body); return $converters[$key]->convert($body);
} }
} }
@@ -13,6 +13,7 @@ namespace Twig\Extra\Markdown;
/** /**
* @internal * @internal
*
* @deprecated since Twig 3.9.0 * @deprecated since Twig 3.9.0
*/ */
function html_to_markdown(string $body, array $options = []): string function html_to_markdown(string $body, array $options = []): string
@@ -12,9 +12,11 @@
namespace Twig\Extra\Markdown\Tests; namespace Twig\Extra\Markdown\Tests;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Twig\Extra\Markdown\MarkdownExtension;
use function Twig\Extra\Markdown\html_to_markdown; use function Twig\Extra\Markdown\html_to_markdown;
use Twig\Extra\Markdown\MarkdownExtension;
/** /**
* @group legacy * @group legacy
*/ */
+1 -2
View File
@@ -653,7 +653,6 @@ final class CoreExtension extends AbstractExtension
return $result; return $result;
} }
/** /**
* Slices a variable. * Slices a variable.
* *
@@ -1215,7 +1214,7 @@ final class CoreExtension extends AbstractExtension
/** /**
* Strips HTML and PHP tags from a string. * Strips HTML and PHP tags from a string.
* *
* @param string|null $string * @param string|null $string
* @param string[]|string|null $string * @param string[]|string|null $string
* *
* @return string * @return string
+5 -5
View File
@@ -12,9 +12,9 @@
namespace Twig\Extension; namespace Twig\Extension;
use Twig\Environment; use Twig\Environment;
use Twig\TwigFunction;
use Twig\Template; use Twig\Template;
use Twig\TemplateWrapper; use Twig\TemplateWrapper;
use Twig\TwigFunction;
final class DebugExtension extends AbstractExtension final class DebugExtension extends AbstractExtension
{ {
@@ -43,9 +43,9 @@ final class DebugExtension extends AbstractExtension
if (!$env->isDebug()) { if (!$env->isDebug()) {
return; return;
} }
ob_start(); ob_start();
if (!$vars) { if (!$vars) {
$vars = []; $vars = [];
foreach ($context as $key => $value) { foreach ($context as $key => $value) {
@@ -53,12 +53,12 @@ final class DebugExtension extends AbstractExtension
$vars[$key] = $value; $vars[$key] = $value;
} }
} }
var_dump($vars); var_dump($vars);
} else { } else {
var_dump(...$vars); var_dump(...$vars);
} }
return ob_get_clean(); return ob_get_clean();
} }
} }
+9 -10
View File
@@ -21,7 +21,6 @@ use Twig\NodeVisitor\EscaperNodeVisitor;
use Twig\TokenParser\AutoEscapeTokenParser; use Twig\TokenParser\AutoEscapeTokenParser;
use Twig\TwigFilter; use Twig\TwigFilter;
final class EscaperExtension extends AbstractExtension final class EscaperExtension extends AbstractExtension
{ {
private $defaultStrategy; private $defaultStrategy;
@@ -177,7 +176,7 @@ final class EscaperExtension extends AbstractExtension
* @param bool $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false) * @param bool $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false)
* *
* @return string * @return string
* *
* @internal * @internal
*/ */
public static function escape(Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) public static function escape(Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false)
@@ -190,7 +189,7 @@ final class EscaperExtension extends AbstractExtension
if (\is_object($string) && method_exists($string, '__toString')) { if (\is_object($string) && method_exists($string, '__toString')) {
if ($autoescape) { if ($autoescape) {
$c = \get_class($string); $c = \get_class($string);
$ext = $env->getExtension(EscaperExtension::class); $ext = $env->getExtension(self::class);
if (!isset($ext->safeClasses[$c])) { if (!isset($ext->safeClasses[$c])) {
$ext->safeClasses[$c] = []; $ext->safeClasses[$c] = [];
foreach (class_parents($string) + class_implements($string) as $class) { foreach (class_parents($string) + class_implements($string) as $class) {
@@ -256,7 +255,7 @@ final class EscaperExtension extends AbstractExtension
return htmlspecialchars($string, \ENT_QUOTES | \ENT_SUBSTITUTE, $charset); return htmlspecialchars($string, \ENT_QUOTES | \ENT_SUBSTITUTE, $charset);
} }
$string = twig_convert_encoding($string, 'UTF-8', $charset); $string = CoreExtension::convertEncoding($string, 'UTF-8', $charset);
$string = htmlspecialchars($string, \ENT_QUOTES | \ENT_SUBSTITUTE, 'UTF-8'); $string = htmlspecialchars($string, \ENT_QUOTES | \ENT_SUBSTITUTE, 'UTF-8');
return iconv('UTF-8', $charset, $string); return iconv('UTF-8', $charset, $string);
@@ -265,7 +264,7 @@ final class EscaperExtension extends AbstractExtension
// escape all non-alphanumeric characters // escape all non-alphanumeric characters
// into their \x or \uHHHH representations // into their \x or \uHHHH representations
if ('UTF-8' !== $charset) { if ('UTF-8' !== $charset) {
$string = twig_convert_encoding($string, 'UTF-8', $charset); $string = CoreExtension::convertEncoding($string, 'UTF-8', $charset);
} }
if (!preg_match('//u', $string)) { if (!preg_match('//u', $string)) {
@@ -316,7 +315,7 @@ final class EscaperExtension extends AbstractExtension
case 'css': case 'css':
if ('UTF-8' !== $charset) { if ('UTF-8' !== $charset) {
$string = twig_convert_encoding($string, 'UTF-8', $charset); $string = CoreExtension::convertEncoding($string, 'UTF-8', $charset);
} }
if (!preg_match('//u', $string)) { if (!preg_match('//u', $string)) {
@@ -337,7 +336,7 @@ final class EscaperExtension extends AbstractExtension
case 'html_attr': case 'html_attr':
if ('UTF-8' !== $charset) { if ('UTF-8' !== $charset) {
$string = twig_convert_encoding($string, 'UTF-8', $charset); $string = CoreExtension::convertEncoding($string, 'UTF-8', $charset);
} }
if (!preg_match('//u', $string)) { if (!preg_match('//u', $string)) {
@@ -404,14 +403,14 @@ final class EscaperExtension extends AbstractExtension
return rawurlencode($string); return rawurlencode($string);
default: default:
$escapers = $env->getExtension(EscaperExtension::class)->getEscapers(); $escapers = $env->getExtension(self::class)->getEscapers();
if (\array_key_exists($strategy, $escapers)) { if (\array_key_exists($strategy, $escapers)) {
return $escapers[$strategy]($env, $string, $charset); return $escapers[$strategy]($env, $string, $charset);
} }
$validStrategies = implode(', ', array_merge(['html', 'js', 'url', 'css', 'html_attr'], array_keys($escapers))); $validStrategies = implode('", "', array_merge(['html', 'js', 'url', 'css', 'html_attr'], array_keys($escapers)));
throw new RuntimeError(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); throw new RuntimeError(sprintf('Invalid escaping strategy "%s" (valid ones: "%s").', $strategy, $validStrategies));
} }
} }
} }
+1 -1
View File
@@ -31,7 +31,7 @@ final class StringLoaderExtension extends AbstractExtension
* *
* @param string $template A template as a string or object implementing __toString() * @param string $template A template as a string or object implementing __toString()
* @param string $name An optional name of the template to be used in error messages * @param string $name An optional name of the template to be used in error messages
* *
* @internal * @internal
*/ */
public static function templateFromString(Environment $env, $template, string $name = null): TemplateWrapper public static function templateFromString(Environment $env, $template, string $name = null): TemplateWrapper