8000 [VarDumper] Fix blank strings display · symfony/symfony@59d0af8 · GitHub
[go: up one dir, main page]

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)
0