blob: 1f2433b4d3661013f746823e2ac52795f8a2f83a [file] [log] [blame]
Matthias Andreas Benkard12a57352021-12-28 18:02:04 +01001<?php
2
3/*
4 * This file is part of Twig.
5 *
6 * (c) Fabien Potencier
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Twig\Profiler\Dumper;
13
14use Twig\Profiler\Profile;
15
16/**
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19final class HtmlDumper extends BaseDumper
20{
21 private static $colors = [
22 'block' => '#dfd',
23 'macro' => '#ddf',
24 'template' => '#ffd',
25 'big' => '#d44',
26 ];
27
28 public function dump(Profile $profile): string
29 {
30 return '<pre>'.parent::dump($profile).'</pre>';
31 }
32
33 protected function formatTemplate(Profile $profile, $prefix): string
34 {
35 return sprintf('%s└ <span style="background-color: %s">%s</span>', $prefix, self::$colors['template'], $profile->getTemplate());
36 }
37
38 protected function formatNonTemplate(Profile $profile, $prefix): string
39 {
40 return sprintf('%s└ %s::%s(<span style="background-color: %s">%s</span>)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName());
41 }
42
43 protected function formatTime(Profile $profile, $percent): string
44 {
45 return sprintf('<span style="color: %s">%.2fms/%.0f%%</span>', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent);
46 }
47}