Version 1
[yaffs-website] / vendor / cebe / markdown / GithubMarkdown.php
diff --git a/vendor/cebe/markdown/GithubMarkdown.php b/vendor/cebe/markdown/GithubMarkdown.php
new file mode 100644 (file)
index 0000000..ff206c6
--- /dev/null
@@ -0,0 +1,99 @@
+<?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;
+
+/**
+ * Markdown parser for github flavored markdown.
+ *
+ * @author Carsten Brandt <mail@cebe.cc>
+ */
+class GithubMarkdown extends Markdown
+{
+       // include block element parsing using traits
+       use block\TableTrait;
+       use block\FencedCodeTrait;
+
+       // include inline element parsing using traits
+       use inline\StrikeoutTrait;
+       use inline\UrlLinkTrait;
+
+       /**
+        * @var boolean whether to interpret newlines as `<br />`-tags.
+        * This feature is useful for comments where newlines are often meant to be real new lines.
+        */
+       public $enableNewlines = false;
+
+       /**
+        * @inheritDoc
+        */
+       protected $escapeCharacters = [
+               // from Markdown
+               '\\', // backslash
+               '`', // backtick
+               '*', // asterisk
+               '_', // underscore
+               '{', '}', // curly braces
+               '[', ']', // square brackets
+               '(', ')', // parentheses
+               '#', // hash mark
+               '+', // plus sign
+               '-', // minus sign (hyphen)
+               '.', // dot
+               '!', // exclamation mark
+               '<', '>',
+               // added by GithubMarkdown
+               ':', // colon
+               '|', // pipe
+       ];
+
+
+
+       /**
+        * Consume lines for a paragraph
+        *
+        * Allow headlines, lists and code to break paragraphs
+        */
+       protected function consumeParagraph($lines, $current)
+       {
+               // consume until newline
+               $content = [];
+               for ($i = $current, $count = count($lines); $i < $count; $i++) {
+                       $line = $lines[$i];
+                       if (!empty($line) && ltrim($line) !== '' &&
+                               !($line[0] === "\t" || $line[0] === " " && strncmp($line, '    ', 4) === 0) &&
+                               !$this->identifyHeadline($line, $lines, $i) &&
+                               !$this->identifyUl($line, $lines, $i) &&
+                               !$this->identifyOl($line, $lines, $i))
+                       {
+                               $content[] = $line;
+                       } else {
+                               break;
+                       }
+               }
+               $block = [
+                       'paragraph',
+                       'content' => $this->parseInline(implode("\n", $content)),
+               ];
+               return [$block, --$i];
+       }
+
+       /**
+        * @inheritdocs
+        *
+        * Parses a newline indicated by two spaces on the end of a markdown line.
+        */
+       protected function renderText($text)
+       {
+               if ($this->enableNewlines) {
+                       $br = $this->html5 ? "<br>\n" : "<br />\n";
+                       return strtr($text[1], ["  \n" => $br, "\n" => $br]);
+               } else {
+                       return parent::renderText($text);
+               }
+       }
+}