*/ final class HtmlDumper extends BaseDumper { private static $colors = [ 'block' => '#dfd', 'macro' => '#ddf', 'template' => '#ffd', 'big' => '#d44', ]; public function dump(Profile $profile): string { return '
'.parent::dump($profile).''; } protected function formatRoot(Profile $profile): string { return self::escape($profile->getName()); } protected function formatTemplate(Profile $profile, $prefix): string { return \sprintf('%s└ %s', $prefix, self::$colors['template'], self::escape($profile->getTemplate())); } protected function formatNonTemplate(Profile $profile, $prefix): string { return \sprintf('%s└ %s::%s(%s)', $prefix, self::escape($profile->getTemplate()), $profile->getType(), self::$colors[$profile->getType()] ?? 'auto', self::escape($profile->getName())); } protected function formatTime(Profile $profile, $percent): string { return \sprintf('%.2fms/%.0f%%', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent); } private static function escape(string $value): string { return htmlspecialchars($value, \ENT_QUOTES | \ENT_SUBSTITUTE, 'UTF-8'); } }