byos_laravel/app/Liquid/FileSystems/InlineTemplatesFileSystem.php
Benjamin Nussbaum 4c66761baa chore: pint
2025-08-26 11:17:09 +02:00

62 lines
1.4 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Liquid\FileSystems;
use InvalidArgumentException;
use Keepsuit\Liquid\Contracts\LiquidFileSystem;
/**
* A file system that allows registering inline templates defined with the template tag
*/
class InlineTemplatesFileSystem implements LiquidFileSystem
{
/**
* @var array<string, string>
*/
protected array $templates = [];
/**
* Register a template with the given name and content
*/
public function register(string $name, string $content): void
{
$this->templates[$name] = $content;
}
/**
* Check if a template exists
*/
public function hasTemplate(string $templateName): bool
{
return isset($this->templates[$templateName]);
}
/**
* Get all registered template names
*
* @return array<string>
*/
public function getTemplateNames(): array
{
return array_keys($this->templates);
}
/**
* Clear all registered templates
*/
public function clear(): void
{
$this->templates = [];
}
public function readTemplateFile(string $templateName): string
{
if (! isset($this->templates[$templateName])) {
throw new InvalidArgumentException("Template '{$templateName}' not found in inline templates");
}
return $this->templates[$templateName];
}
}