Text.php in Zircon Profile 8.0
File
vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php
View source
<?php
class Twig_Profiler_Dumper_Text {
private $root;
public function dump(Twig_Profiler_Profile $profile) {
return $this
->dumpProfile($profile);
}
protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix) {
return sprintf('%s└ %s', $prefix, $profile
->getTemplate());
}
protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix) {
return sprintf('%s└ %s::%s(%s)', $prefix, $profile
->getTemplate(), $profile
->getType(), $profile
->getName());
}
protected function formatTime(Twig_Profiler_Profile $profile, $percent) {
return sprintf('%.2fms/%.0f%%', $profile
->getDuration() * 1000, $percent);
}
private function dumpProfile(Twig_Profiler_Profile $profile, $prefix = '', $sibling = false) {
if ($profile
->isRoot()) {
$this->root = $profile
->getDuration();
$start = $profile
->getName();
}
else {
if ($profile
->isTemplate()) {
$start = $this
->formatTemplate($profile, $prefix);
}
else {
$start = $this
->formatNonTemplate($profile, $prefix);
}
$prefix .= $sibling ? '│ ' : ' ';
}
$percent = $this->root ? $profile
->getDuration() / $this->root * 100 : 0;
if ($profile
->getDuration() * 1000 < 1) {
$str = $start . "\n";
}
else {
$str = sprintf("%s %s\n", $start, $this
->formatTime($profile, $percent));
}
$nCount = count($profile
->getProfiles());
foreach ($profile as $i => $p) {
$str .= $this
->dumpProfile($p, $prefix, $i + 1 !== $nCount);
}
return $str;
}
}