Вход Регистрация
Файл: 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('_'));
        }
    }
}
Онлайн: 0
Реклама