Version 1
[yaffs-website] / vendor / cebe / markdown / block / FencedCodeTrait.php
diff --git a/vendor/cebe/markdown/block/FencedCodeTrait.php b/vendor/cebe/markdown/block/FencedCodeTrait.php
new file mode 100644 (file)
index 0000000..79609b5
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/**
+ * @copyright Copyright (c) 2014 Carsten Brandt
+ * @license https://github.com/cebe/markdown/blob/master/LICENSE
+ * @link https://github.com/cebe/markdown#readme
+ */
+
+namespace cebe\markdown\block;
+
+/**
+ * Adds the fenced code blocks
+ *
+ * automatically included 4 space indented code blocks
+ */
+trait FencedCodeTrait
+{
+       use CodeTrait;
+
+       /**
+        * identify a line as the beginning of a fenced code block.
+        */
+       protected function identifyFencedCode($line)
+       {
+               return ($l = $line[0]) === '`' && strncmp($line, '```', 3) === 0 ||
+                               $l === '~' && strncmp($line, '~~~', 3) === 0;
+       }
+
+       /**
+        * Consume lines for a fenced code block
+        */
+       protected function consumeFencedCode($lines, $current)
+       {
+               // consume until ```
+               $line = rtrim($lines[$current]);
+               $fence = substr($line, 0, $pos = strrpos($line, $line[0]) + 1);
+               $language = substr($line, $pos);
+               $content = [];
+               for ($i = $current + 1, $count = count($lines); $i < $count; $i++) {
+                       if (rtrim($line = $lines[$i]) !== $fence) {
+                               $content[] = $line;
+                       } else {
+                               break;
+                       }
+               }
+               $block = [
+                       'code',
+                       'content' => implode("\n", $content),
+               ];
+               if (!empty($language)) {
+                       $block['language'] = $language;
+               }
+               return [$block, $i];
+       }
+}