]> _ Git - cubist_cms-back.git/commitdiff
#2893
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 16 Jul 2019 16:10:01 +0000 (18:10 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 16 Jul 2019 16:10:01 +0000 (18:10 +0200)
src/app/Markdown/Heading/Renderer.php
src/app/Markdown/Wrapper/Extension.php [new file with mode: 0644]
src/app/Markdown/Wrapper/Renderer.php [new file with mode: 0644]

index d0622243941b0d8db1c2122f16be3deae439e490..ca2edc4a8edf15aa6e2c3924be471da54f6d183e 100644 (file)
@@ -17,7 +17,8 @@ class Renderer implements BlockRendererInterface
             throw new \InvalidArgumentException('Incompatible block type: ' . \get_class($block));
         }
 
-        $tag = 'h' . min(config('markdown_heading_max', 6), $block->getLevel() + config('markdown.heading_offset', 0));
+        $level = min(config('markdown_heading_max', 6), $block->getLevel() + config('markdown.heading_offset', 0));
+        $tag = 'h' . $level;
 
         $attrs = $block->getData('attributes', []);
 
diff --git a/src/app/Markdown/Wrapper/Extension.php b/src/app/Markdown/Wrapper/Extension.php
new file mode 100644 (file)
index 0000000..18274b1
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+
+
+namespace Cubist\Backpack\app\Markdown\Wrapper;
+
+
+use League\CommonMark\Block\Element\Document;
+use League\CommonMark\ConfigurableEnvironmentInterface;
+use League\CommonMark\Extension\ExtensionInterface;
+
+class Extension implements ExtensionInterface
+{
+    public function register(ConfigurableEnvironmentInterface $environment)
+    {
+        $environment->addBlockRenderer(Document::class, new Renderer(), 10);
+    }
+}
diff --git a/src/app/Markdown/Wrapper/Renderer.php b/src/app/Markdown/Wrapper/Renderer.php
new file mode 100644 (file)
index 0000000..b988b25
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+
+namespace Cubist\Backpack\app\Markdown\Wrapper;
+
+
+use League\CommonMark\Block\Element\AbstractBlock;
+use League\CommonMark\Block\Element\Document;
+use League\CommonMark\Block\Renderer\BlockRendererInterface;
+use League\CommonMark\ElementRendererInterface;
+
+class Renderer implements BlockRendererInterface
+{
+    public function render(AbstractBlock $block, ElementRendererInterface $htmlRenderer, bool $inTightList = false)
+    {
+        if (!($block instanceof Document)) {
+            throw new \InvalidArgumentException('Incompatible block type: ' . \get_class($block));
+        }
+
+        $wholeDoc = $htmlRenderer->renderBlocks($block->children());
+
+        return '<div class="markdown">' . ($wholeDoc === '' ? '' : $wholeDoc) . '</div>' . "\n";
+    }
+}