30 lines
977 B
PHP
30 lines
977 B
PHP
<?php
|
|
namespace Hanyuu;
|
|
|
|
use Twig\Extension\AbstractExtension;
|
|
use Twig\TwigFunction;
|
|
|
|
final class HanyuuSasaeExtension extends AbstractExtension {
|
|
private HanyuuContext $ctx;
|
|
private ?object $assets;
|
|
|
|
public function __construct(HanyuuContext $ctx) {
|
|
$this->ctx = $ctx;
|
|
$this->assets = $ctx->getWebAssetInfo();
|
|
}
|
|
|
|
public function getFunctions() {
|
|
return [
|
|
new TwigFunction('asset', $this->getAssetPath(...)),
|
|
new TwigFunction('git_commit_hash', GitInfo::hash(...)),
|
|
new TwigFunction('git_tag', GitInfo::tag(...)),
|
|
new TwigFunction('git_branch', GitInfo::branch(...)),
|
|
new TwigFunction('startup_time', fn(float $time = HAU_STARTUP) => microtime(true) - $time),
|
|
new TwigFunction('sql_query_count', $this->ctx->getDbQueryCount(...)),
|
|
];
|
|
}
|
|
|
|
public function getAssetPath(string $name): string {
|
|
return $this->assets?->{$name} ?? '';
|
|
}
|
|
}
|