1414use Symfony \Component \VarDumper \Cloner \Data ;
1515use Symfony \Component \VarDumper \Dumper \HtmlDumper ;
1616use Twig \Environment ;
17+ use Twig \Extension \EscaperExtension ;
1718use Twig \Extension \ProfilerExtension ;
1819use Twig \Profiler \Profile ;
1920use Twig \TwigFunction ;
@@ -60,9 +61,6 @@ public function leave(Profile $profile): void
6061 }
6162 }
6263
63- /**
64- * {@inheritdoc}
65- */
6664 public function getFunctions (): array
6765 {
6866 return [
@@ -87,12 +85,12 @@ public function dumpData(Environment $env, Data $data, int $maxDepth = 0)
8785
8886 public function dumpLog (Environment $ env , string $ message , Data $ context = null )
8987 {
90- $ message = twig_escape_filter ($ env , $ message );
88+ $ message = self :: escape ($ env , $ message );
9189 $ message = preg_replace ('/"(.*?)"/ ' , '"<b>$1</b>" ' , $ message );
9290
9391 $ replacements = [];
9492 foreach ($ context ?? [] as $ k => $ v ) {
95- $ k = '{ ' .twig_escape_filter ($ env , $ k ).'} ' ;
93+ $ k = '{ ' .self :: escape ($ env , $ k ).'} ' ;
9694 if (str_contains ($ message , $ k )) {
9795 $ replacements [$ k ] = $ v ;
9896 }
@@ -109,11 +107,18 @@ public function dumpLog(Environment $env, string $message, Data $context = null)
109107 return '<span class="dump-inline"> ' .strtr ($ message , $ replacements ).'</span> ' ;
110108 }
111109
112- /**
113- * {@inheritdoc}
114- */
115110 public function getName ()
116111 {
117112 return 'profiler ' ;
118113 }
114+
115+ private static function escape (Environment $ env , string $ s ): string
116+ {
117+ if (method_exists (EscaperExtension::class, 'escape ' )) {
118+ return EscaperExtension::escape ($ env , $ s );
119+ }
120+
121+ // to be removed when support for Twig 3 is dropped
122+ return twig_escape_filter ($ env , $ s );
123+ }
119124}
0 commit comments