Файл: vendor/league/commonmark/src/Extension/CommonMark/CommonMarkCoreExtension.php
Строк: 301
<?php
declare(strict_types=1);
/*
* This file is part of the league/commonmark package.
*
* (c) Colin O'Dell <colinodell@gmail.com>
*
* Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js)
* - (c) John MacFarlane
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace LeagueCommonMarkExtensionCommonMark;
use LeagueCommonMarkEnvironmentEnvironmentBuilderInterface;
use LeagueCommonMarkExtensionCommonMarkDelimiterProcessorEmphasisDelimiterProcessor;
use LeagueCommonMarkExtensionConfigurableExtensionInterface;
use LeagueCommonMarkNode as CoreNode;
use LeagueCommonMarkParser as CoreParser;
use LeagueCommonMarkRenderer as CoreRenderer;
use LeagueConfigConfigurationBuilderInterface;
use NetteSchemaExpect;
final class CommonMarkCoreExtension implements ConfigurableExtensionInterface
{
public function configureSchema(ConfigurationBuilderInterface $builder): void
{
$builder->addSchema('commonmark', Expect::structure([
'use_asterisk' => Expect::bool(true),
'use_underscore' => Expect::bool(true),
'enable_strong' => Expect::bool(true),
'enable_em' => Expect::bool(true),
'unordered_list_markers' => Expect::listOf('string')->min(1)->default(['*', '+', '-'])->mergeDefaults(false),
]));
}
// phpcs:disable Generic.Functions.FunctionCallArgumentSpacing.TooMuchSpaceAfterComma,Squiz.WhiteSpace.SemicolonSpacing.Incorrect
public function register(EnvironmentBuilderInterface $environment): void
{
$environment
->addBlockStartParser(new ParserBlockBlockQuoteStartParser(), 70)
->addBlockStartParser(new ParserBlockHeadingStartParser(), 60)
->addBlockStartParser(new ParserBlockFencedCodeStartParser(), 50)
->addBlockStartParser(new ParserBlockHtmlBlockStartParser(), 40)
->addBlockStartParser(new ParserBlockThematicBreakStartParser(), 20)
->addBlockStartParser(new ParserBlockListBlockStartParser(), 10)
->addBlockStartParser(new ParserBlockIndentedCodeStartParser(), -100)
->addInlineParser(new CoreParserInlineNewlineParser(), 200)
->addInlineParser(new ParserInlineBacktickParser(), 150)
->addInlineParser(new ParserInlineEscapableParser(), 80)
->addInlineParser(new ParserInlineEntityParser(), 70)
->addInlineParser(new ParserInlineAutolinkParser(), 50)
->addInlineParser(new ParserInlineHtmlInlineParser(), 40)
->addInlineParser(new ParserInlineCloseBracketParser(), 30)
->addInlineParser(new ParserInlineOpenBracketParser(), 20)
->addInlineParser(new ParserInlineBangParser(), 10)
->addRenderer(NodeBlockBlockQuote::class, new RendererBlockBlockQuoteRenderer(), 0)
->addRenderer(CoreNodeBlockDocument::class, new CoreRendererBlockDocumentRenderer(), 0)
->addRenderer(NodeBlockFencedCode::class, new RendererBlockFencedCodeRenderer(), 0)
->addRenderer(NodeBlockHeading::class, new RendererBlockHeadingRenderer(), 0)
->addRenderer(NodeBlockHtmlBlock::class, new RendererBlockHtmlBlockRenderer(), 0)
->addRenderer(NodeBlockIndentedCode::class, new RendererBlockIndentedCodeRenderer(), 0)
->addRenderer(NodeBlockListBlock::class, new RendererBlockListBlockRenderer(), 0)
->addRenderer(NodeBlockListItem::class, new RendererBlockListItemRenderer(), 0)
->addRenderer(CoreNodeBlockParagraph::class, new CoreRendererBlockParagraphRenderer(), 0)
->addRenderer(NodeBlockThematicBreak::class, new RendererBlockThematicBreakRenderer(), 0)
->addRenderer(NodeInlineCode::class, new RendererInlineCodeRenderer(), 0)
->addRenderer(NodeInlineEmphasis::class, new RendererInlineEmphasisRenderer(), 0)
->addRenderer(NodeInlineHtmlInline::class, new RendererInlineHtmlInlineRenderer(), 0)
->addRenderer(NodeInlineImage::class, new RendererInlineImageRenderer(), 0)
->addRenderer(NodeInlineLink::class, new RendererInlineLinkRenderer(), 0)
->addRenderer(CoreNodeInlineNewline::class, new CoreRendererInlineNewlineRenderer(), 0)
->addRenderer(NodeInlineStrong::class, new RendererInlineStrongRenderer(), 0)
->addRenderer(CoreNodeInlineText::class, new CoreRendererInlineTextRenderer(), 0)
;
if ($environment->getConfiguration()->get('commonmark/use_asterisk')) {
$environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('*'));
}
if ($environment->getConfiguration()->get('commonmark/use_underscore')) {
$environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('_'));
}
}
}