the browser-facing portion of osu!
at master 69 lines 3.7 kB view raw
1<?php 2 3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0. 4// See the LICENCE file in the repository root for full licence text. 5 6namespace App\Libraries\Markdown\Indexing; 7 8use App\Libraries\Markdown\CustomContainerInline\Element as CustomContainerInline; 9use App\Libraries\Markdown\Osu\Extension as OsuExtension; 10use App\Libraries\Markdown\StyleBlock\Element as StyleBlock; 11use League\CommonMark\Environment\EnvironmentBuilderInterface; 12use League\CommonMark\Extension\Attributes\AttributesExtension; 13use League\CommonMark\Extension\CommonMark\Node\Block as ExtensionBlock; 14use League\CommonMark\Extension\CommonMark\Node\Inline as ExtensionInline; 15use League\CommonMark\Extension\Footnote; 16use League\CommonMark\Extension\Strikethrough\Strikethrough; 17use League\CommonMark\Extension\Table as TableExtension; 18use League\CommonMark\Node\Block; 19use League\CommonMark\Node\Inline; 20 21class Extension extends OsuExtension 22{ 23 public function register(EnvironmentBuilderInterface $environment): void 24 { 25 if ($environment->getConfiguration()->exists('osu_extension/attributes_allowed')) { 26 $environment->addExtension(new AttributesExtension()); 27 } 28 29 foreach ($this->renderers() as $class => $renderer) { 30 $environment->addRenderer($class, $renderer, 10); 31 } 32 } 33 34 private function renderers() 35 { 36 return [ 37 Block\Document::class => new Renderers\BlockRenderer(), 38 Block\Paragraph::class => new Renderers\BlockRenderer(), 39 CustomContainerInline::class => new Renderers\InlineRenderer(), 40 ExtensionBlock\BlockQuote::class => new Renderers\BlockRenderer(), 41 ExtensionBlock\FencedCode::class => new Renderers\NoopRenderer(), 42 ExtensionBlock\Heading::class => new Renderers\BlockRenderer(), 43 ExtensionBlock\HtmlBlock::class => new Renderers\NoopRenderer(), 44 ExtensionBlock\IndentedCode::class => new Renderers\BlockRenderer(), 45 ExtensionBlock\ListBlock::class => new Renderers\ListBlockRenderer(), 46 ExtensionBlock\ListItem::class => new Renderers\ListItemRenderer(), 47 ExtensionBlock\ThematicBreak::class => new Renderers\BlockRenderer(), 48 ExtensionInline\Code::class => new Renderers\InlineRenderer(), 49 ExtensionInline\Emphasis::class => new Renderers\InlineRenderer(), 50 ExtensionInline\HtmlInline::class => new Renderers\NoopRenderer(), 51 ExtensionInline\Image::class => new Renderers\NoopRenderer(), 52 ExtensionInline\Link::class => new Renderers\InlineRenderer(), 53 ExtensionInline\Strong::class => new Renderers\InlineRenderer(), 54 Footnote\Node\Footnote::class => new Renderers\NoopRenderer(), 55 Footnote\Node\FootnoteBackref::class => new Renderers\NoopRenderer(), 56 Footnote\Node\FootnoteContainer::class => new Renderers\NoopRenderer(), 57 Footnote\Node\FootnoteRef::class => new Renderers\NoopRenderer(), 58 Inline\Newline::class => new Renderers\NewlineRenderer(), 59 Inline\Text::class => new Renderers\InlineRenderer(), 60 Strikethrough::class => new Renderers\InlineRenderer(), 61 StyleBlock::class => new Renderers\BlockRenderer(), 62 TableExtension\Table::class => new Renderers\TableRenderer(), 63 TableExtension\TableCaption::class => new Renderers\NoopRenderer(), 64 TableExtension\TableSection::class => new Renderers\TableRenderer(), 65 TableExtension\TableRow::class => new Renderers\TableRenderer(), 66 TableExtension\TableCell::class => new Renderers\TableRenderer(), 67 ]; 68 } 69}