Skip to content

Commit d40f83f

Browse files
committed
Upgrade to latest stable CommonMark release
1 parent dd15ea2 commit d40f83f

File tree

2 files changed

+63
-9
lines changed

2 files changed

+63
-9
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"symfony/finder": "^4.2.5",
66
"twig/twig": "^2.6",
77
"tightenco/collect": "^5.7.0",
8-
"league/commonmark": "^0.18.1",
8+
"league/commonmark": "^1.5",
99
"mnapoli/front-yaml": "^1.6"
1010
},
1111
"require-dev": {

src/DocumentParsers/Markdown/PrimerExtension.php

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,71 @@
22

33
namespace Rareloop\Primer\DocumentParsers\Markdown;
44

5-
use League\CommonMark\Block\Parser\IndentedCodeParser;
6-
use League\CommonMark\Extension\CommonMarkCoreExtension;
5+
use League\CommonMark\Block\Parser as BlockParser;
6+
use League\CommonMark\Extension\ExtensionInterface;
7+
use League\CommonMark\Block\Element as BlockElement;
8+
use League\CommonMark\Inline\Parser as InlineParser;
9+
use League\CommonMark\Block\Renderer as BlockRenderer;
10+
use League\CommonMark\Inline\Element as InlineElement;
11+
use League\CommonMark\ConfigurableEnvironmentInterface;
12+
use League\CommonMark\Inline\Renderer as InlineRenderer;
13+
use League\CommonMark\Delimiter\Processor\EmphasisDelimiterProcessor;
714

8-
class PrimerExtension extends CommonMarkCoreExtension
15+
/**
16+
* Primer flavoured Markdown setup. It is the same as the CommonMarkCoreExtension but with the
17+
* `IndentedCodeParser` removed to allow for embedded Twig code in Markdown to be interpretted
18+
* rather than code blocked.
19+
*/
20+
class PrimerExtension implements ExtensionInterface
921
{
10-
public function getBlockParsers()
22+
public function register(ConfigurableEnvironmentInterface $environment)
1123
{
12-
$parsers = array_filter(parent::getBlockParsers(), function ($parser) {
13-
return !($parser instanceof IndentedCodeParser);
14-
});
24+
$environment
25+
->addBlockParser(new BlockParser\BlockQuoteParser(), 70)
26+
->addBlockParser(new BlockParser\ATXHeadingParser(), 60)
27+
->addBlockParser(new BlockParser\FencedCodeParser(), 50)
28+
->addBlockParser(new BlockParser\HtmlBlockParser(), 40)
29+
->addBlockParser(new BlockParser\SetExtHeadingParser(), 30)
30+
->addBlockParser(new BlockParser\ThematicBreakParser(), 20)
31+
->addBlockParser(new BlockParser\ListParser(), 10)
32+
->addBlockParser(new BlockParser\LazyParagraphParser(), -200)
1533

16-
return $parsers;
34+
->addInlineParser(new InlineParser\NewlineParser(), 200)
35+
->addInlineParser(new InlineParser\BacktickParser(), 150)
36+
->addInlineParser(new InlineParser\EscapableParser(), 80)
37+
->addInlineParser(new InlineParser\EntityParser(), 70)
38+
->addInlineParser(new InlineParser\AutolinkParser(), 50)
39+
->addInlineParser(new InlineParser\HtmlInlineParser(), 40)
40+
->addInlineParser(new InlineParser\CloseBracketParser(), 30)
41+
->addInlineParser(new InlineParser\OpenBracketParser(), 20)
42+
->addInlineParser(new InlineParser\BangParser(), 10)
43+
44+
->addBlockRenderer(BlockElement\BlockQuote::class, new BlockRenderer\BlockQuoteRenderer(), 0)
45+
->addBlockRenderer(BlockElement\Document::class, new BlockRenderer\DocumentRenderer(), 0)
46+
->addBlockRenderer(BlockElement\FencedCode::class, new BlockRenderer\FencedCodeRenderer(), 0)
47+
->addBlockRenderer(BlockElement\Heading::class, new BlockRenderer\HeadingRenderer(), 0)
48+
->addBlockRenderer(BlockElement\HtmlBlock::class, new BlockRenderer\HtmlBlockRenderer(), 0)
49+
->addBlockRenderer(BlockElement\IndentedCode::class, new BlockRenderer\IndentedCodeRenderer(), 0)
50+
->addBlockRenderer(BlockElement\ListBlock::class, new BlockRenderer\ListBlockRenderer(), 0)
51+
->addBlockRenderer(BlockElement\ListItem::class, new BlockRenderer\ListItemRenderer(), 0)
52+
->addBlockRenderer(BlockElement\Paragraph::class, new BlockRenderer\ParagraphRenderer(), 0)
53+
->addBlockRenderer(BlockElement\ThematicBreak::class, new BlockRenderer\ThematicBreakRenderer(), 0)
54+
55+
->addInlineRenderer(InlineElement\Code::class, new InlineRenderer\CodeRenderer(), 0)
56+
->addInlineRenderer(InlineElement\Emphasis::class, new InlineRenderer\EmphasisRenderer(), 0)
57+
->addInlineRenderer(InlineElement\HtmlInline::class, new InlineRenderer\HtmlInlineRenderer(), 0)
58+
->addInlineRenderer(InlineElement\Image::class, new InlineRenderer\ImageRenderer(), 0)
59+
->addInlineRenderer(InlineElement\Link::class, new InlineRenderer\LinkRenderer(), 0)
60+
->addInlineRenderer(InlineElement\Newline::class, new InlineRenderer\NewlineRenderer(), 0)
61+
->addInlineRenderer(InlineElement\Strong::class, new InlineRenderer\StrongRenderer(), 0)
62+
->addInlineRenderer(InlineElement\Text::class, new InlineRenderer\TextRenderer(), 0);
63+
64+
if ($environment->getConfig('use_asterisk', true)) {
65+
$environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('*'));
66+
}
67+
68+
if ($environment->getConfig('use_underscore', true)) {
69+
$environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('_'));
70+
}
1771
}
1872
}

0 commit comments

Comments
 (0)