RSS Git Download  Clone
Raw View History
Blames found: 9 Mode: php Binary: false


Hang on, we reloading big blames...
<?php declare(strict_types=1); namespace GitList\App\Twig; use GitList\SCM\Blob; use GitList\SCM\Tree; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; use Twig\TwigFunction; class RepositoryExtension extends AbstractExtension { public function getFunctions() { return [ new TwigFunction('getCommitish', [$this, 'getCommitish']), new TwigFunction('getParent', [$this, 'getParent']), new TwigFunction('getBreadcrumbs', [$this, 'getBreadcrumbs']), ]; } public function getFilters() { return [ new TwigFilter('formatFileSize', [$this, 'formatFileSize']), new TwigFilter('onlyTrees', [$this, 'onlyTrees']), new TwigFilter('onlyFiles', [$this, 'onlyFiles']), ]; } public function onlyTrees($items): array { return array_filter($items, [$this, 'isTree']); } public function onlyFiles($items): array { return array_filter($items, fn ($item) => !$this->isTree($item)); } public function isTree($value): bool { if (!$value) { return false; } return $value instanceof Tree; } public function getCommitish(string $hash, string $path): string {
return $hash.'/'.$path;
} public function getParent(string $path): string { $parent = dirname($path);
if ('.' == $parent) {
return ''; } return $parent; } public function getBreadcrumbs(Blob $blob): array { $breadcrumbs = []; $parts = explode('/', $blob->getName()); $previousPart = ''; foreach ($parts as $index => $part) {
$previousPart .= (0 == $index ? '' : '/').$part;
$breadcrumbs[] = [ 'name' => $part, 'commitish' => $this->getCommitish($blob->getHash(), $previousPart), ]; } return $breadcrumbs; } public function formatFileSize($value = null): string { if (!$value) { return '0 B'; } $units = ['B', 'KB', 'MB', 'GB', 'TB']; $pow = floor(log($value) / log(1024)); $pow = min($pow, count($units) - 1); $value /= 1024 ** $pow;
return (string) round($value, 2).' '.$units[$pow];
} }