Skip to content

Commit 8e68fdf

Browse files
[DebugBundle] enhance dump excerpts
1 parent 9b90211 commit 8e68fdf

File tree

2 files changed

+21
-62
lines changed

2 files changed

+21
-62
lines changed

DataCollector/DumpDataCollector.php

Lines changed: 18 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public function dump(Data $data)
7373

7474
for ($i = 1; $i < 7; ++$i) {
7575
if (isset($trace[$i]['class'], $trace[$i]['function'])
76-
&& ('dump' === $trace[$i]['function'] || 'debug' === $trace[$i]['function'])
76+
&& 'dump' === $trace[$i]['function']
7777
&& 'Symfony\Component\VarDumper\VarDumper' === $trace[$i]['class']
7878
) {
7979
$file = $trace[$i]['file'];
@@ -152,66 +152,29 @@ public function getDumpsCount()
152152
return $this->dataCount;
153153
}
154154

155-
public function getDumpsExcerpts()
155+
public function getDumps($format, $maxDepthLimit = -1, $maxItemsPerDepth = -1)
156156
{
157-
$dumps = array();
158-
159-
foreach ($this->data as $dump) {
160-
$data = $dump['data']->getRawData();
161-
unset($dump['data']);
162-
163-
$data = $data[0][0];
164-
165-
if (isset($data->val)) {
166-
$data = $data->val;
167-
}
168-
169-
if (isset($data->bin)) {
170-
$data = 'b"'.$data->bin.'"';
171-
} elseif (isset($data->str)) {
172-
$data = '"'.$data->str.'"';
173-
} elseif (isset($data->count)) {
174-
$data = 'array('.$data->count.')';
175-
} elseif (isset($data->class)) {
176-
$data = $data->class.'{...}';
177-
} elseif (isset($data->res)) {
178-
$data = 'resource:'.$data->res.'{...}';
179-
} elseif (is_array($data)) {
180-
$data = 'array()';
181-
} elseif (null === $data) {
182-
$data = 'null';
183-
} elseif (false === $data) {
184-
$data = 'false';
185-
} elseif (INF === $data) {
186-
$data = 'INF';
187-
} elseif (-INF === $data) {
188-
$data = '-INF';
189-
} elseif (NAN === $data) {
190-
$data = 'NAN';
191-
} elseif (true === $data) {
192-
$data = 'true';
193-
}
194-
195-
$dump['dataExcerpt'] = $data;
196-
$dumps[] = $dump;
197-
}
198-
199-
return $dumps;
200-
}
201-
202-
public function getDumps($getData = false)
203-
{
204-
if ($getData) {
157+
if ('html' === $format) {
158+
$dumper = new HtmlDumper();
159+
} elseif ('json' === $format) {
205160
$dumper = new JsonDumper();
161+
} else {
162+
throw new \InvalidArgumentException(sprintf('Invalid dump format: %s', $format));
163+
206164
}
207165
$dumps = array();
208166

209167
foreach ($this->data as $dump) {
210-
$json = '';
211-
if ($getData) {
212-
$dumper->dump($dump['data'], function ($line) use (&$json) {$json .= $line;});
213-
}
214-
$dump['data'] = $json;
168+
$data = '';
169+
$dumper->dump(
170+
$dump['data']->getLimitedClone($maxDepthLimit, $maxItemsPerDepth),
171+
function ($line, $depth) use (&$data) {
172+
if (false !==$depth) {
173+
$data .= str_repeat(' ', $depth).$line."\n";
174+
}
175+
}
176+
);
177+
$dump['data'] = $data;
215178
$dumps[] = $dump;
216179
}
217180

Tests/DataCollector/DumpDataCollectorTest.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,17 @@ public function testDump()
3434

3535
$xDump = array(
3636
array(
37-
'data' => '',
37+
'data' => "<!DOCTYPE html><style> pre.sf-dump { background-color: #300a24; white-space: pre; line-height: 1.2em; color: #eee8d5; font-family: monospace, sans-serif; padding: 5px; } .sf-dump span { display: inline; }a.sf-dump-ref {color:#444444}span.sf-dump-num {font-weight:bold;color:#0087FF}span.sf-dump-const {font-weight:bold;color:#0087FF}span.sf-dump-str {font-weight:bold;color:#00D7FF}span.sf-dump-cchr {font-style: italic}span.sf-dump-note {color:#D7AF00}span.sf-dump-ref {color:#444444}span.sf-dump-public {color:#008700}span.sf-dump-protected {color:#D75F00}span.sf-dump-private {color:#D70000}span.sf-dump-meta {color:#005FFF}</style><pre class=sf-dump><span class=sf-dump-0><span class=sf-dump-num>123</span>\n</pre>\n",
3838
'name' => 'DumpDataCollectorTest.php',
3939
'file' => __FILE__,
4040
'line' => $line,
4141
'fileExcerpt' => false,
4242
),
4343
);
44-
45-
$this->assertSame($xDump, $collector->getDumps());
46-
47-
$xDump[0]['data'] = '123';
48-
$this->assertSame($xDump, $collector->getDumps(true));
44+
$this->assertSame($xDump, $collector->getDumps('html'));
4945

5046
$this->assertStringStartsWith(
51-
'a:1:{i:0;a:5:{s:4:"data";O:39:"Symfony\Component\VarDumper\Cloner\Data":1:{s:45:"Symfony\Component\VarDumper\Cloner\Datadata";a:1:{i:0;a:1:{i:0;i:123;}}}s:4:"name";s:25:"DumpDataCollectorTest.php";',
47+
'a:1:{i:0;a:5:{s:4:"data";O:39:"Symfony\Component\VarDumper\Cloner\Data":3:{s:45:"Symfony\Component\VarDumper\Cloner\Datadata";a:1:{i:0;a:1:{i:0;i:123;}}s:49:"Symfony\Component\VarDumper\Cloner\DatamaxDepth";i:-1;s:57:"Symfony\Component\VarDumper\Cloner\DatamaxItemsPerDepth";i:-1;}s:4:"name";s:25:"DumpDataCollectorTest.php";s:4:"file";s:',
5248
str_replace("\0", '', $collector->serialize())
5349
);
5450

0 commit comments

Comments
 (0)