mirror of
https://github.com/php-fig/www.php-fig.org.git
synced 2026-03-24 06:52:15 +01:00
49 lines
1.6 KiB
PHP
49 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Fig\Website;
|
|
|
|
use Aptoma\Twig\Extension\MarkdownEngine\PHPLeagueCommonMarkEngine;
|
|
use Aptoma\Twig\Extension\MarkdownEngineInterface;
|
|
use League\CommonMark\Block\Element\FencedCode;
|
|
use League\CommonMark\Block\Element\IndentedCode;
|
|
use League\CommonMark\Environment;
|
|
use League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkExtension;
|
|
use League\CommonMark\Extension\Table\TableExtension;
|
|
use League\CommonMark\GithubFlavoredMarkdownConverter;
|
|
use Spatie\CommonMarkHighlighter\FencedCodeRenderer;
|
|
use Spatie\CommonMarkHighlighter\IndentedCodeRenderer;
|
|
|
|
class CommonMarkEngineFactory
|
|
{
|
|
public static function create(): MarkdownEngineInterface
|
|
{
|
|
$supportedLanguages = [
|
|
'php',
|
|
'http', # inside PSR-7
|
|
];
|
|
|
|
$config = [
|
|
'heading_permalink' => [
|
|
'id_prefix' => '',
|
|
'fragment_prefix' => '',
|
|
'insert' => 'after',
|
|
],
|
|
];
|
|
|
|
$environment = Environment::createCommonMarkEnvironment();
|
|
$environment->mergeConfig($config);
|
|
$environment
|
|
->addExtension(new TableExtension())
|
|
->addExtension(new HeadingPermalinkExtension())
|
|
->addBlockRenderer(FencedCode::class, new FencedCodeRenderer($supportedLanguages))
|
|
->addBlockRenderer(IndentedCode::class, new IndentedCodeRenderer($supportedLanguages))
|
|
;
|
|
|
|
return new NullSafeCommonMarkEngine(
|
|
new PHPLeagueCommonMarkEngine(
|
|
new GithubFlavoredMarkdownConverter([], $environment)
|
|
)
|
|
);
|
|
}
|
|
}
|