Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit f214eda

Browse filesBrowse files
committed
[VarDumper] Added unique id for every single dump in html
1 parent b5c4d54 commit f214eda
Copy full SHA for f214eda

File tree

4 files changed

+51
-32
lines changed
Filter options

4 files changed

+51
-32
lines changed

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

Copy file name to clipboardExpand all lines: src/Symfony/Bridge/Twig/Tests/Extension/DumpExtensionTest.php
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public function testDump($context, $args, $expectedOutput, $debug = true)
7777
if ($debug) {
7878
$this->assertStringStartsWith('<script>', $dump);
7979
$dump = preg_replace('/^.*?<pre/', '<pre', $dump);
80+
$dump = preg_replace('/sf-dump-\\d{2,}/', 'sf-dump', $dump);
8081
}
8182
$this->assertEquals($expectedOutput, $dump);
8283
}

‎src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php
+11-8Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,21 @@ public function testDump()
3232
$collector->dump($data); $line = __LINE__;
3333
$this->assertSame(1, $collector->getDumpsCount());
3434

35+
$dump = $collector->getDumps('html');
36+
$this->assertTrue(isset($dump[0]['data']));
37+
$dump[0]['data'] = preg_replace('/^.*?<pre/', '<pre', $dump[0]['data']);
38+
preg_match('/sf-dump-(\\d{2,})/', $dump[0]['data'], $matches);
39+
$dumpId = $matches[1];
40+
3541
$xDump = array(
3642
array(
37-
'data' => "<pre id=sf-dump><span class=sf-dump-0><span class=sf-dump-num>123</span>\n</span></pre><script>Sfjs.dump.instrument()</script>\n",
38-
'name' => 'DumpDataCollectorTest.php',
39-
'file' => __FILE__,
40-
'line' => $line,
41-
'fileExcerpt' => false,
43+
'data' => "<pre id=sf-dump-{$dumpId}><span class=sf-dump-0><span class=sf-dump-num>123</span>\n</span></pre><script>Sfjs.dump.instrument()</script>\n",
44+
'name' => 'DumpDataCollectorTest.php',
45+
'file' => __FILE__,
46+
'line' => $line,
47+
'fileExcerpt' => false,
4248
),
4349
);
44-
$dump = $collector->getDumps('html');
45-
$this->assertTrue(isset($dump[0]['data']));
46-
$dump[0]['data'] = preg_replace('/^.*?<pre/', '<pre', $dump[0]['data']);
4750
$this->assertSame($xDump, $dump);
4851

4952
$this->assertStringStartsWith(

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php
+27-14Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\VarDumper\Dumper;
1313

1414
use Symfony\Component\VarDumper\Cloner\Cursor;
15+
use Symfony\Component\VarDumper\Cloner\Data;
1516

1617
/**
1718
* HtmlDumper dumps variables as HTML.
@@ -23,8 +24,9 @@ class HtmlDumper extends CliDumper
2324
public static $defaultOutputStream = 'php://output';
2425

2526
protected $dumpHeader;
26-
protected $dumpPrefix = '<pre id=sf-dump>';
27+
protected $dumpPrefix = '<pre id=%id%>';
2728
protected $dumpSuffix = '</pre><script>Sfjs.dump.instrument()</script>';
29+
protected $dumpId = 'sf-dump';
2830
protected $colors = true;
2931
protected $headerIsDumped = false;
3032
protected $lastDepth = -1;
@@ -82,6 +84,15 @@ public function setDumpBoundaries($prefix, $suffix)
8284
$this->dumpSuffix = $suffix;
8385
}
8486

87+
/**
88+
* {@inheritdoc}
89+
*/
90+
public function dump(Data $data, $lineDumper = null)
91+
{
92+
$this->dumpId = 'sf-dump-'.mt_rand();
93+
parent::dump($data, $lineDumper);
94+
}
95+
8596
/**
8697
* Dumps the HTML header.
8798
*/
@@ -90,7 +101,7 @@ protected function getDumpHeader()
90101
$this->headerIsDumped = true;
91102

92103
if (null !== $this->dumpHeader) {
93-
return $this->dumpHeader;
104+
return str_replace('%id%', $this->dumpId, $this->dumpHeader);
94105
}
95106

96107
$line = <<<'EOHTML'
@@ -129,7 +140,7 @@ protected function getDumpHeader()
129140
};
130141
</script>
131142
<style>
132-
#sf-dump {
143+
#%id% {
133144
display: block;
134145
background-color: #300a24;
135146
white-space: pre;
@@ -138,31 +149,33 @@ protected function getDumpHeader()
138149
font: 12px monospace, sans-serif;
139150
padding: 5px;
140151
}
141-
#sf-dump span {
152+
#%id% span {
142153
display: inline;
143154
}
144-
#sf-dump .sf-dump-compact {
155+
#%id% .sf-dump-compact {
145156
display: none;
146157
}
147-
#sf-dump abbr {
158+
#%id% abbr {
148159
text-decoration: none;
149160
border: none;
150161
cursor: help;
151162
}
152-
#sf-dump a {
163+
#%id% a {
153164
text-decoration: none;
154165
cursor: pointer;
155166
}
156-
#sf-dump a:hover {
167+
#%id% a:hover {
157168
text-decoration: underline;
158169
}
159170
EOHTML;
160171

161172
foreach ($this->styles as $class => $style) {
162-
$line .= "#sf-dump .sf-dump-$class {{$style}}";
173+
$line .= "#%id% .sf-dump-$class {{$style}}";
163174
}
164175

165-
return $this->dumpHeader = preg_replace('/\s+/', ' ', $line).'</style>'.$this->dumpHeader;
176+
$this->dumpHeader = preg_replace('/\s+/', ' ', $line).'</style>'.$this->dumpHeader;
177+
178+
return str_replace('%id%', $this->dumpId, $this->dumpHeader);
166179
}
167180

168181
/**
@@ -201,9 +214,9 @@ protected function style($style, $val)
201214
if ('ref' === $style) {
202215
$ref = substr($val, 1);
203216
if ('#' === $val[0]) {
204-
return "<a class=sf-dump-ref name=\"sf-dump-ref$ref\">$val</a>";
217+
return "<a class=sf-dump-ref name=\"{$this->dumpId}-ref$ref\">$val</a>";
205218
} else {
206-
return "<a class=sf-dump-ref href=\"#sf-dump-ref$ref\">$val</a>";
219+
return "<a class=sf-dump-ref href=\"#{$this->dumpId}-ref$ref\">$val</a>";
207220
}
208221
}
209222

@@ -236,14 +249,14 @@ protected function dumpLine($depth)
236249
}
237250

238251
if (-1 === $this->lastDepth) {
239-
$this->line = $this->dumpPrefix.$this->line;
252+
$this->line = str_replace('%id%', $this->dumpId, $this->dumpPrefix).$this->line;
240253
}
241254
if (!$this->headerIsDumped) {
242255
$this->line = $this->getDumpHeader().$this->line;
243256
}
244257

245258
if (-1 === $depth) {
246-
$this->line .= $this->dumpSuffix;
259+
$this->line .= str_replace('%id%', $this->dumpId, $this->dumpSuffix);
247260
parent::dumpLine(0);
248261
}
249262
$this->lastDepth = $depth;

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/VarDumper/Tests/HtmlDumperTest.php
+12-10Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public function testGet()
3333
unset($a['uri']);
3434

3535
return $a;
36-
}
36+
},
3737
));
3838
$data = $cloner->cloneVar($var);
3939

@@ -44,12 +44,14 @@ public function testGet()
4444
$out = preg_replace('/[ \t]+$/m', '', $out);
4545
$var['file'] = htmlspecialchars($var['file'], ENT_QUOTES, 'UTF-8');
4646
$intMax = PHP_INT_MAX;
47+
preg_match('/sf-dump-(\\d{2,})/', $out, $matches);
48+
$dumpId = $matches[1];
4749

4850
$this->assertSame(
4951
<<<EOTXT
5052
<foo></foo><bar><span class=sf-dump-0><span class=sf-dump-note>array:25</span> [<span name=sf-dump-child>
5153
<span class=sf-dump-1>"<span class=sf-dump-meta>number</span>" => <span class=sf-dump-num>1</span>
52-
<span class=sf-dump-meta>0</span> => <span class=sf-dump-const>null</span> <a class=sf-dump-ref name="sf-dump-ref1">#1</a>
54+
<span class=sf-dump-meta>0</span> => <span class=sf-dump-const>null</span> <a class=sf-dump-ref name="sf-dump-{$dumpId}-ref1">#1</a>
5355
"<span class=sf-dump-meta>const</span>" => <span class=sf-dump-num>1.1</span>
5456
<span class=sf-dump-meta>1</span> => <span class=sf-dump-const>true</span>
5557
<span class=sf-dump-meta>2</span> => <span class=sf-dump-const>false</span>
@@ -72,7 +74,7 @@ public function testGet()
7274
<span class=sf-dump-meta>options</span>: []
7375
</span></span>}
7476
<span class=sf-dump-meta>8</span> => resource:<span class=sf-dump-note>Unknown</span> {}
75-
"<span class=sf-dump-meta>obj</span>" => <span class=sf-dump-note><abbr title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo" class=sf-dump-note>DumbFoo</abbr></span> {<span name=sf-dump-child> <a class=sf-dump-ref name="sf-dump-ref2">#2</a>
77+
"<span class=sf-dump-meta>obj</span>" => <span class=sf-dump-note><abbr title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo" class=sf-dump-note>DumbFoo</abbr></span> {<span name=sf-dump-child> <a class=sf-dump-ref name="sf-dump-{$dumpId}-ref2">#2</a>
7678
<span class=sf-dump-2><span class=sf-dump-public>foo</span>: "<span class=sf-dump-str>foo</span>"
7779
"<span class=sf-dump-public>bar</span>": "<span class=sf-dump-str>bar</span>"
7880
</span></span>}
@@ -90,15 +92,15 @@ public function testGet()
9092
</span></span>}
9193
"<span class=sf-dump-meta>line</span>" => <span class=sf-dump-num>{$var['line']}</span>
9294
"<span class=sf-dump-meta>nobj</span>" => <span class=sf-dump-note>array:1</span> [<span name=sf-dump-child>
93-
<span class=sf-dump-2><span class=sf-dump-meta>0</span> => {} <a class=sf-dump-ref name="sf-dump-ref3">#3</a>
95+
<span class=sf-dump-2><span class=sf-dump-meta>0</span> => {} <a class=sf-dump-ref name="sf-dump-{$dumpId}-ref3">#3</a>
9496
</span></span>]
95-
"<span class=sf-dump-meta>recurs</span>" => <span class=sf-dump-note>array:1</span> [<span name=sf-dump-child> <a class=sf-dump-ref name="sf-dump-ref4">#4</a>
96-
<span class=sf-dump-2><span class=sf-dump-meta>0</span> => <a class=sf-dump-ref href="#sf-dump-ref4">&4</a> <span class=sf-dump-note>array:1</span> [<a class=sf-dump-ref href="#sf-dump-ref4">@4</a>]
97+
"<span class=sf-dump-meta>recurs</span>" => <span class=sf-dump-note>array:1</span> [<span name=sf-dump-child> <a class=sf-dump-ref name="sf-dump-{$dumpId}-ref4">#4</a>
98+
<span class=sf-dump-2><span class=sf-dump-meta>0</span> => <a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref4">&4</a> <span class=sf-dump-note>array:1</span> [<a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref4">@4</a>]
9799
</span></span>]
98-
<span class=sf-dump-meta>9</span> => <a class=sf-dump-ref href="#sf-dump-ref1">&1</a> <span class=sf-dump-const>null</span>
99-
"<span class=sf-dump-meta>sobj</span>" => <span class=sf-dump-note><abbr title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo" class=sf-dump-note>DumbFoo</abbr></span> {<a class=sf-dump-ref href="#sf-dump-ref2">@2</a>}
100-
"<span class=sf-dump-meta>snobj</span>" => <a class=sf-dump-ref href="#sf-dump-ref3">&3</a> {<a class=sf-dump-ref href="#sf-dump-ref3">@3</a>}
101-
"<span class=sf-dump-meta>snobj2</span>" => {<a class=sf-dump-ref href="#sf-dump-ref3">@3</a>}
100+
<span class=sf-dump-meta>9</span> => <a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref1">&1</a> <span class=sf-dump-const>null</span>
101+
"<span class=sf-dump-meta>sobj</span>" => <span class=sf-dump-note><abbr title="Symfony\Component\VarDumper\Tests\Fixture\DumbFoo" class=sf-dump-note>DumbFoo</abbr></span> {<a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref2">@2</a>}
102+
"<span class=sf-dump-meta>snobj</span>" => <a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref3">&3</a> {<a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref3">@3</a>}
103+
"<span class=sf-dump-meta>snobj2</span>" => {<a class=sf-dump-ref href="#sf-dump-{$dumpId}-ref3">@3</a>}
102104
"<span class=sf-dump-meta>file</span>" => "<span class=sf-dump-str>{$var['file']}</span>"
103105
b"<span class=sf-dump-meta>bin-key-é</span>" => ""
104106
</span></span>]

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.