Skip to content

Commit 59d0af8

Browse files
committed
[VarDumper] Fix blank strings display
1 parent 02cafa9 commit 59d0af8

File tree

5 files changed

+64
-59
lines changed

5 files changed

+64
-59
lines changed

src/Symfony/Bridge/Twig/Tests/Extension/DumpExtensionTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ public static function getDumpArgs()
9696
[
9797
[],
9898
[123, 456],
99-
"<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=sf-dump-num>123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n"
100-
."<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=sf-dump-num>456</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
99+
"<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=\"sf-dump-num\">123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n"
100+
."<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=\"sf-dump-num\">456</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
101101
],
102102
[
103103
['foo' => 'bar'],
104104
[],
105-
"<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=sf-dump-note>array:1</span> [<samp>\n"
106-
." \"<span class=sf-dump-key>foo</span>\" => \"<span class=sf-dump-str title=\"3 characters\">bar</span>\"\n"
105+
"<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=\"sf-dump-note\">array:1</span> [<samp>\n"
106+
." \"<span class=\"sf-dump-key\">foo</span>\" => \"<span class=\"sf-dump-str\" title=\"3 characters\">bar</span>\"\n"
107107
."</samp>]\n"
108108
."</pre><script>Sfdump(\"sf-dump\")</script>\n",
109109
],
@@ -136,7 +136,7 @@ public function testCustomDumper()
136136

137137
$this->assertEquals(
138138
'<pre class=sf-dump-test id=sf-dump data-indent-pad=" ">"'.
139-
"<span class=sf-dump-str title=\"3 characters\">foo</span>\"\n".
139+
"<span class=\"sf-dump-str\" title=\"3 characters\">foo</span>\"\n".
140140
"</pre><script>Sfdump(\"sf-dump\")</script>\n",
141141
$dump,
142142
'Custom dumper should be used to dump data.'

src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ function showCurrent(state)
663663
height: 0;
664664
clear: both;
665665
}
666-
pre.sf-dump span {
666+
pre.sf-dump .sf-dump-ellipsization {
667667
display: inline-flex;
668668
}
669669
pre.sf-dump a {
@@ -681,16 +681,12 @@ function showCurrent(state)
681681
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAHUlEQVQY02O8zAABilCaiQEN0EeA8QuUcX9g3QEAAjcC5piyhyEAAAAASUVORK5CYII=) #D3D3D3;
682682
}
683683
pre.sf-dump .sf-dump-ellipsis {
684-
display: inline-block;
685-
overflow: visible;
686684
text-overflow: ellipsis;
687-
max-width: 5em;
688685
white-space: nowrap;
689686
overflow: hidden;
690-
vertical-align: top;
691687
}
692-
pre.sf-dump .sf-dump-ellipsis+.sf-dump-ellipsis {
693-
max-width: none;
688+
pre.sf-dump .sf-dump-ellipsis-tail {
689+
flex-shrink: 0;
694690
}
695691
pre.sf-dump code {
696692
display:inline;
@@ -863,66 +859,75 @@ protected function style(string $style, string $value, array $attr = []): string
863859
return sprintf('<a class=sf-dump-ref href=#%s-ref%s title="%d occurrences">%s</a>', $this->dumpId, $r, 1 + $attr['count'], $v);
864860
}
865861

862+
$dumpClasses = ['sf-dump-'.$style];
863+
$dumpTitle = '';
864+
866865
if ('const' === $style && isset($attr['value'])) {
867-
$style .= sprintf(' title="%s"', esc(\is_scalar($attr['value']) ? $attr['value'] : json_encode($attr['value'])));
866+
$dumpTitle = esc(\is_scalar($attr['value']) ? $attr['value'] : json_encode($attr['value']));
868867
} elseif ('public' === $style) {
869-
$style .= sprintf(' title="%s"', empty($attr['dynamic']) ? 'Public property' : 'Runtime added dynamic property');
868+
$dumpTitle = empty($attr['dynamic']) ? 'Public property' : 'Runtime added dynamic property';
870869
} elseif ('str' === $style && 1 < $attr['length']) {
871-
$style .= sprintf(' title="%d%s characters"', $attr['length'], $attr['binary'] ? ' binary or non-UTF-8' : '');
870+
$dumpTitle = sprintf('%d%s characters', $attr['length'], $attr['binary'] ? ' binary or non-UTF-8' : '');
872871
} elseif ('note' === $style && 0 < ($attr['depth'] ?? 0) && false !== $c = strrpos($value, '\\')) {
873-
$style .= ' title=""';
874872
$attr += [
875873
'ellipsis' => \strlen($value) - $c,
876874
'ellipsis-type' => 'note',
877875
'ellipsis-tail' => 1,
878876
];
879877
} elseif ('protected' === $style) {
880-
$style .= ' title="Protected property"';
878+
$dumpTitle = 'Protected property';
881879
} elseif ('meta' === $style && isset($attr['title'])) {
882-
$style .= sprintf(' title="%s"', esc($this->utf8Encode($attr['title'])));
880+
$dumpTitle = esc($this->utf8Encode($attr['title']));
883881
} elseif ('private' === $style) {
884-
$style .= sprintf(' title="Private property defined in class:&#10;`%s`"', esc($this->utf8Encode($attr['class'])));
882+
$dumpTitle = sprintf('Private property defined in class:&#10;`%s`"', esc($this->utf8Encode($attr['class'])));
885883
}
886884

887885
if (isset($attr['ellipsis'])) {
888-
$class = 'sf-dump-ellipsis';
886+
$dumpClasses[] = 'sf-dump-ellipsization';
887+
$ellipsisClass = 'sf-dump-ellipsis';
889888
if (isset($attr['ellipsis-type'])) {
890-
$class = sprintf('"%s sf-dump-ellipsis-%s"', $class, $attr['ellipsis-type']);
889+
$ellipsisClass .= ' sf-dump-ellipsis-'.$attr['ellipsis-type'];
891890
}
892891
$label = esc(substr($value, -$attr['ellipsis']));
893-
$style = str_replace(' title="', " title=\"$v\n", $style);
894-
$v = sprintf('<span class=%s>%s</span>', $class, substr($v, 0, -\strlen($label)));
892+
$dumpTitle = $v."\n".$dumpTitle;
893+
$v = sprintf('<span class="%s">%s</span>', $ellipsisClass, substr($v, 0, -\strlen($label)));
895894

896895
if (!empty($attr['ellipsis-tail'])) {
897896
$tail = \strlen(esc(substr($value, -$attr['ellipsis'], $attr['ellipsis-tail'])));
898-
$v .= sprintf('<span class=%s>%s</span>%s', $class, substr($label, 0, $tail), substr($label, $tail));
897+
$v .= sprintf('<span class="%s">%s</span><span class="sf-dump-ellipsis-tail">%s</span>', $ellipsisClass, substr($label, 0, $tail), substr($label, $tail));
899898
} else {
900-
$v .= $label;
899+
$v .= sprintf('<span class="sf-dump-ellipsis-tail">%s</span>', $label);
901900
}
902901
}
903902

904903
$map = static::$controlCharsMap;
905-
$v = "<span class=sf-dump-{$style}>".preg_replace_callback(static::$controlCharsRx, function ($c) use ($map) {
906-
$s = $b = '<span class="sf-dump-default';
907-
$c = $c[$i = 0];
908-
if ($ns = "\r" === $c[$i] || "\n" === $c[$i]) {
909-
$s .= ' sf-dump-ns';
910-
}
911-
$s .= '">';
912-
do {
913-
if (("\r" === $c[$i] || "\n" === $c[$i]) !== $ns) {
914-
$s .= '</span>'.$b;
915-
if ($ns = !$ns) {
916-
$s .= ' sf-dump-ns';
917-
}
918-
$s .= '">';
904+
$v = sprintf(
905+
'<span class=%s%s%1$s%s>%s</span>',
906+
1 === count($dumpClasses) ? '' : '"',
907+
implode(' ', $dumpClasses),
908+
$dumpTitle ? ' title="'.$dumpTitle.'"' : '',
909+
preg_replace_callback(static::$controlCharsRx, function ($c) use ($map) {
910+
$s = $b = '<span class="sf-dump-default';
911+
$c = $c[$i = 0];
912+
if ($ns = "\r" === $c[$i] || "\n" === $c[$i]) {
913+
$s .= ' sf-dump-ns';
919914
}
915+
$s .= '">';
916+
do {
917+
if (("\r" === $c[$i] || "\n" === $c[$i]) !== $ns) {
918+
$s .= '</span>'.$b;
919+
if ($ns = !$ns) {
920+
$s .= ' sf-dump-ns';
921+
}
922+
$s .= '">';
923+
}
920924

921-
$s .= $map[$c[$i]] ?? sprintf('\x%02X', \ord($c[$i]));
922-
} while (isset($c[++$i]));
925+
$s .= $map[$c[$i]] ?? sprintf('\x%02X', \ord($c[$i]));
926+
} while (isset($c[++$i]));
923927

924-
return $s.'</span>';
925-
}, $v).'</span>';
928+
return $s.'</span>';
929+
}, $v)
930+
);
926931

927932
if (!($attr['binary'] ?? false)) {
928933
$v = preg_replace_callback(static::$unicodeCharsRx, function ($c) {

src/Symfony/Component/VarDumper/Tests/Caster/ExceptionCasterTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,12 +259,12 @@ public function testHtmlDump()
259259
<foo></foo><bar><span class=sf-dump-note>Exception</span> {<samp data-depth=1 class=sf-dump-expanded>
260260
#<span class=sf-dump-protected title="Protected property">message</span>: "<span class=sf-dump-str>1</span>"
261261
#<span class=sf-dump-protected title="Protected property">code</span>: <span class=sf-dump-num>0</span>
262-
#<span class=sf-dump-protected title="Protected property">file</span>: "<span class=sf-dump-str title="%sExceptionCasterTest.php
263-
%d characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%e</span>Tests%eCaster%eExceptionCasterTest.php</span>"
262+
#<span class=sf-dump-protected title="Protected property">file</span>: "<span class="sf-dump-str sf-dump-ellipsization" title="%sExceptionCasterTest.php
263+
%d characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%e</span><span class="sf-dump-ellipsis-tail">Tests%eCaster%eExceptionCasterTest.php</span></span>"
264264
#<span class=sf-dump-protected title="Protected property">line</span>: <span class=sf-dump-num>%d</span>
265265
<span class=sf-dump-meta>trace</span>: {<samp data-depth=2 class=sf-dump-compact>
266-
<span class=sf-dump-meta title="%sExceptionCasterTest.php
267-
Stack level %d."><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%e</span>Tests%eCaster%eExceptionCasterTest.php</span>:<span class=sf-dump-num>%d</span>
266+
<span class="sf-dump-meta sf-dump-ellipsization" title="%sExceptionCasterTest.php
267+
Stack level %d."><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%e</span><span class="sf-dump-ellipsis-tail">Tests%eCaster%eExceptionCasterTest.php</span></span>:<span class=sf-dump-num>%d</span>
268268
&#8230;%d
269269
</samp>}
270270
</samp>}

src/Symfony/Component/VarDumper/Tests/Caster/StubCasterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ public function testClassStubWithNotExistingClass()
175175

176176
$expectedDump = <<<'EODUMP'
177177
<foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp data-depth=1 class=sf-dump-expanded>
178-
<span class=sf-dump-index>0</span> => "<span class=sf-dump-str title="Symfony\Component\VarDumper\Tests\Caster\NotExisting
179-
52 characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-class">Symfony\Component\VarDumper\Tests\Caster</span><span class="sf-dump-ellipsis sf-dump-ellipsis-class">\</span>NotExisting</span>"
178+
<span class=sf-dump-index>0</span> => "<span class="sf-dump-str sf-dump-ellipsization" title="Symfony\Component\VarDumper\Tests\Caster\NotExisting
179+
52 characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-class">Symfony\Component\VarDumper\Tests\Caster</span><span class="sf-dump-ellipsis sf-dump-ellipsis-class">\</span><span class="sf-dump-ellipsis-tail">NotExisting</span></span>"
180180
</samp>]
181181
</bar>
182182
EODUMP;

src/Symfony/Component/VarDumper/Tests/Dumper/HtmlDumperTest.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,18 @@ public function testGet()
7979
<span class=sf-dump-meta>seekable</span>: <span class=sf-dump-const>true</span>
8080
%A <span class=sf-dump-meta>options</span>: []
8181
</samp>}
82-
"<span class=sf-dump-key>obj</span>" => <span class=sf-dump-note title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo
83-
"><span class="sf-dump-ellipsis sf-dump-ellipsis-note">Symfony\Component\VarDumper\Tests\Fixture</span><span class="sf-dump-ellipsis sf-dump-ellipsis-note">\</span>DumbFoo</span> {<a class=sf-dump-ref href=#{$dumpId}-ref2%d title="2 occurrences">#%d</a><samp data-depth=2 id={$dumpId}-ref2%d class=sf-dump-compact>
82+
"<span class=sf-dump-key>obj</span>" => <span class="sf-dump-note sf-dump-ellipsization" title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo
83+
"><span class="sf-dump-ellipsis sf-dump-ellipsis-note">Symfony\Component\VarDumper\Tests\Fixture</span><span class="sf-dump-ellipsis sf-dump-ellipsis-note">\</span><span class="sf-dump-ellipsis-tail">DumbFoo</span></span> {<a class=sf-dump-ref href=#{$dumpId}-ref2%d title="2 occurrences">#%d</a><samp data-depth=2 id={$dumpId}-ref2%d class=sf-dump-compact>
8484
+<span class=sf-dump-public title="Public property">foo</span>: "<span class=sf-dump-str title="3 characters">foo</span>"
8585
+"<span class=sf-dump-public title="Runtime added dynamic property">bar</span>": "<span class=sf-dump-str title="3 characters">bar</span>"
8686
</samp>}
8787
"<span class=sf-dump-key>closure</span>" => <span class=sf-dump-note>Closure(\$a, ?PDO &amp;\$b = null)</span> {<a class=sf-dump-ref>#%d</a><samp data-depth=2 class=sf-dump-compact>
88-
<span class=sf-dump-meta>class</span>: "<span class=sf-dump-str title="Symfony\Component\VarDumper\Tests\Dumper\HtmlDumperTest
89-
55 characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-class">Symfony\Component\VarDumper\Tests\Dumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-class">\</span>HtmlDumperTest</span>"
90-
<span class=sf-dump-meta>this</span>: <span class=sf-dump-note title="Symfony\Component\VarDumper\Tests\Dumper\HtmlDumperTest
91-
"><span class="sf-dump-ellipsis sf-dump-ellipsis-note">Symfony\Component\VarDumper\Tests\Dumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-note">\</span>HtmlDumperTest</span> {<a class=sf-dump-ref>#%d</a> &%s;}
92-
<span class=sf-dump-meta>file</span>: "<span class=sf-dump-str title="{$var['file']}
93-
%d characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%e</span>Tests%eFixtures%edumb-var.php</span>"
88+
<span class=sf-dump-meta>class</span>: "<span class="sf-dump-str sf-dump-ellipsization" title="Symfony\Component\VarDumper\Tests\Dumper\HtmlDumperTest
89+
55 characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-class">Symfony\Component\VarDumper\Tests\Dumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-class">\</span><span class="sf-dump-ellipsis-tail">HtmlDumperTest</span></span>"
90+
<span class=sf-dump-meta>this</span>: <span class="sf-dump-note sf-dump-ellipsization" title="Symfony\Component\VarDumper\Tests\Dumper\HtmlDumperTest
91+
"><span class="sf-dump-ellipsis sf-dump-ellipsis-note">Symfony\Component\VarDumper\Tests\Dumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-note">\</span><span class="sf-dump-ellipsis-tail">HtmlDumperTest</span></span> {<a class=sf-dump-ref>#%d</a> &%s;}
92+
<span class=sf-dump-meta>file</span>: "<span class="sf-dump-str sf-dump-ellipsization" title="{$var['file']}
93+
%d characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%e</span><span class="sf-dump-ellipsis-tail">Tests%eFixtures%edumb-var.php</span></span>"
9494
<span class=sf-dump-meta>line</span>: "<span class=sf-dump-str title="%d characters">{$var['line']} to {$var['line']}</span>"
9595
</samp>}
9696
"<span class=sf-dump-key>line</span>" => <span class=sf-dump-num>{$var['line']}</span>
@@ -101,8 +101,8 @@ public function testGet()
101101
<span class=sf-dump-index>0</span> => <a class=sf-dump-ref href=#{$dumpId}-ref04 title="2 occurrences">&amp;4</a> <span class=sf-dump-note>array:1</span> [<a class=sf-dump-ref href=#{$dumpId}-ref04 title="2 occurrences">&amp;4</a>]
102102
</samp>]
103103
<span class=sf-dump-key>8</span> => <a class=sf-dump-ref href=#{$dumpId}-ref01 title="2 occurrences">&amp;1</a> <span class=sf-dump-const>null</span>
104-
"<span class=sf-dump-key>sobj</span>" => <span class=sf-dump-note title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo
105-
"><span class="sf-dump-ellipsis sf-dump-ellipsis-note">Symfony\Component\VarDumper\Tests\Fixture</span><span class="sf-dump-ellipsis sf-dump-ellipsis-note">\</span>DumbFoo</span> {<a class=sf-dump-ref href=#{$dumpId}-ref2%d title="2 occurrences">#%d</a>}
104+
"<span class=sf-dump-key>sobj</span>" => <span class="sf-dump-note sf-dump-ellipsization" title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo
105+
"><span class="sf-dump-ellipsis sf-dump-ellipsis-note">Symfony\Component\VarDumper\Tests\Fixture</span><span class="sf-dump-ellipsis sf-dump-ellipsis-note">\</span><span class="sf-dump-ellipsis-tail">DumbFoo</span></span> {<a class=sf-dump-ref href=#{$dumpId}-ref2%d title="2 occurrences">#%d</a>}
106106
"<span class=sf-dump-key>snobj</span>" => <a class=sf-dump-ref href=#{$dumpId}-ref03 title="2 occurrences">&amp;3</a> {<a class=sf-dump-ref href=#{$dumpId}-ref2%d title="3 occurrences">#%d</a>}
107107
"<span class=sf-dump-key>snobj2</span>" => {<a class=sf-dump-ref href=#{$dumpId}-ref2%d title="3 occurrences">#%d</a>}
108108
"<span class=sf-dump-key>file</span>" => "<span class=sf-dump-str title="%d characters">{$var['file']}</span>"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy