Implement custom parsers/renderers with autowiring for snip content

This commit is contained in:
Tim
2025-04-23 01:06:21 +02:00
parent 5cec259469
commit 943177bc08
15 changed files with 194 additions and 26 deletions

View File

@ -0,0 +1,44 @@
<?php
namespace App\Service\SnipParser\Generic;
use App\Service\SnipParser\AbstractParser;
use League\Pipeline\PipelineBuilder;
class GenericParser extends AbstractParser
{
public static function getName(): string
{
return 'generic';
}
public function __construct(
private readonly UrlReferenceStage $referenceStage,
private readonly IncludeReferenceStage $includeStage,
) {}
public function parseView(string $content): string
{
$builder = new PipelineBuilder();
$pipeline = $builder
->add(new HtmlEscapeStage())
->add(new ReplaceStage(PHP_EOL, '<br>'))
->add(new ReplaceBlocksStage('<pre><code class="hljs">', '</code></pre>', '```'))
->add(new ReplaceBlocksStage('<code class="hljs">', '</code>', '``'))
->add($this->referenceStage)
->add($this->includeStage)
->build()
;
return $pipeline->process($content);
}
public function parseRaw(string $content): string
{
return str_replace(
['```', '``'],
'',
$content
);
}
}