Completed
Push — master ( 0b0b24...54ff37 )
by Colin
02:37
created

CommonMarkCoreExtension   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 38

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 38
dl 0
loc 55
ccs 42
cts 42
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A register() 0 52 3
1
<?php
2
3
/*
4
 * This file is part of the league/commonmark package.
5
 *
6
 * (c) Colin O'Dell <[email protected]>
7
 *
8
 * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js)
9
 *  - (c) John MacFarlane
10
 *
11
 * For the full copyright and license information, please view the LICENSE
12
 * file that was distributed with this source code.
13
 */
14
15
namespace League\CommonMark\Extension\CommonMark;
16
17
use League\CommonMark\Environment\ConfigurableEnvironmentInterface;
18
use League\CommonMark\Extension\CommonMark\Delimiter\Processor\EmphasisDelimiterProcessor;
19
use League\CommonMark\Extension\ExtensionInterface;
20
use League\CommonMark\Node as CoreNode;
21
use League\CommonMark\Parser as CoreParser;
22
use League\CommonMark\Renderer as CoreRenderer;
23
24
final class CommonMarkCoreExtension implements ExtensionInterface
25
{
26 2487
    public function register(ConfigurableEnvironmentInterface $environment): void
27
    {
28
        $environment
29 2487
            ->addBlockParser(new Parser\Block\BlockQuoteParser(),          70)
30 2487
            ->addBlockParser(new Parser\Block\ATXHeadingParser(),          60)
31 2487
            ->addBlockParser(new Parser\Block\FencedCodeParser(),          50)
32 2487
            ->addBlockParser(new Parser\Block\HtmlBlockParser(),           40)
33 2487
            ->addBlockParser(new Parser\Block\SetExtHeadingParser(),       30)
34 2487
            ->addBlockParser(new Parser\Block\ThematicBreakParser(),       20)
35 2487
            ->addBlockParser(new Parser\Block\ListParser(),                10)
36 2487
            ->addBlockParser(new Parser\Block\IndentedCodeParser(),      -100)
37 2487
            ->addBlockParser(new CoreParser\Block\LazyParagraphParser(), -200)
38
39 2487
            ->addInlineParser(new CoreParser\Inline\NewlineParser(), 200)
40 2487
            ->addInlineParser(new Parser\Inline\BacktickParser(),    150)
41 2487
            ->addInlineParser(new Parser\Inline\EscapableParser(),    80)
42 2487
            ->addInlineParser(new Parser\Inline\EntityParser(),       70)
43 2487
            ->addInlineParser(new Parser\Inline\AutolinkParser(),     50)
44 2487
            ->addInlineParser(new Parser\Inline\HtmlInlineParser(),   40)
45 2487
            ->addInlineParser(new Parser\Inline\CloseBracketParser(), 30)
46 2487
            ->addInlineParser(new Parser\Inline\OpenBracketParser(),  20)
47 2487
            ->addInlineParser(new Parser\Inline\BangParser(),         10)
48
49 2487
            ->addBlockRenderer(Node\Block\BlockQuote::class,    new Renderer\Block\BlockQuoteRenderer(),    0)
50 2487
            ->addBlockRenderer(CoreNode\Block\Document::class,  new CoreRenderer\Block\DocumentRenderer(),  0)
51 2487
            ->addBlockRenderer(Node\Block\FencedCode::class,    new Renderer\Block\FencedCodeRenderer(),    0)
52 2487
            ->addBlockRenderer(Node\Block\Heading::class,       new Renderer\Block\HeadingRenderer(),       0)
53 2487
            ->addBlockRenderer(Node\Block\HtmlBlock::class,     new Renderer\Block\HtmlBlockRenderer(),     0)
54 2487
            ->addBlockRenderer(Node\Block\IndentedCode::class,  new Renderer\Block\IndentedCodeRenderer(),  0)
55 2487
            ->addBlockRenderer(Node\Block\ListBlock::class,     new Renderer\Block\ListBlockRenderer(),     0)
56 2487
            ->addBlockRenderer(Node\Block\ListItem::class,      new Renderer\Block\ListItemRenderer(),      0)
57 2487
            ->addBlockRenderer(CoreNode\Block\Paragraph::class, new CoreRenderer\Block\ParagraphRenderer(), 0)
58 2487
            ->addBlockRenderer(Node\Block\ThematicBreak::class, new Renderer\Block\ThematicBreakRenderer(), 0)
59
60 2487
            ->addInlineRenderer(Node\Inline\Code::class,        new Renderer\Inline\CodeRenderer(),        0)
61 2487
            ->addInlineRenderer(Node\Inline\Emphasis::class,    new Renderer\Inline\EmphasisRenderer(),    0)
62 2487
            ->addInlineRenderer(Node\Inline\HtmlInline::class,  new Renderer\Inline\HtmlInlineRenderer(),  0)
63 2487
            ->addInlineRenderer(Node\Inline\Image::class,       new Renderer\Inline\ImageRenderer(),       0)
64 2487
            ->addInlineRenderer(Node\Inline\Link::class,        new Renderer\Inline\LinkRenderer(),        0)
65 2487
            ->addInlineRenderer(CoreNode\Inline\Newline::class, new CoreRenderer\Inline\NewlineRenderer(), 0)
66 2487
            ->addInlineRenderer(Node\Inline\Strong::class,      new Renderer\Inline\StrongRenderer(),      0)
67 2487
            ->addInlineRenderer(CoreNode\Inline\Text::class,    new CoreRenderer\Inline\TextRenderer(),    0)
68
        ;
69
70 2487
        if ($environment->getConfig('use_asterisk', true)) {
71 2487
            $environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('*'));
72
        }
73
74 2487
        if ($environment->getConfig('use_underscore', true)) {
75 2487
            $environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('_'));
76
        }
77 2487
    }
78
}
79