Added the support for generating docs from template doc
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Documents;
|
||||
|
||||
use App\Models\DocumentSetting;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class DocumentSettings
|
||||
{
|
||||
private const CACHE_KEY = 'document_settings_singleton_v1';
|
||||
|
||||
public function get(): DocumentSetting
|
||||
{
|
||||
return Cache::remember(self::CACHE_KEY, 300, fn () => DocumentSetting::instance());
|
||||
}
|
||||
|
||||
public function refresh(): DocumentSetting
|
||||
{
|
||||
Cache::forget(self::CACHE_KEY);
|
||||
|
||||
return $this->get();
|
||||
}
|
||||
|
||||
public function fresh(): DocumentSetting
|
||||
{
|
||||
return $this->refresh();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Documents\Exceptions;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
class UnresolvedTokensException extends RuntimeException
|
||||
{
|
||||
/** @var array<int,string> */
|
||||
public array $unresolved;
|
||||
|
||||
/**
|
||||
* @param array<int,string> $unresolved
|
||||
*/
|
||||
public function __construct(array $unresolved, string $message = 'Unresolved tokens remain in template.')
|
||||
{
|
||||
parent::__construct($message);
|
||||
$this->unresolved = $unresolved;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Documents;
|
||||
|
||||
class TokenScanner
|
||||
{
|
||||
private const REGEX = '/{{\s*([a-zA-Z0-9_]+\.[a-zA-Z0-9_]+)\s*}}/';
|
||||
|
||||
/**
|
||||
* @return array<int,string>
|
||||
*/
|
||||
public function scan(string $content): array
|
||||
{
|
||||
preg_match_all(self::REGEX, $content, $m);
|
||||
if (empty($m[1])) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return array_values(array_unique($m[1]));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user