Version 1
[yaffs-website] / vendor / cebe / markdown / inline / EmphStrongTrait.php
diff --git a/vendor/cebe/markdown/inline/EmphStrongTrait.php b/vendor/cebe/markdown/inline/EmphStrongTrait.php
new file mode 100644 (file)
index 0000000..1cd6214
--- /dev/null
@@ -0,0 +1,64 @@
+<?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\inline;
+
+/**
+ * Adds inline emphasizes and strong elements
+ */
+trait EmphStrongTrait
+{
+       /**
+        * Parses empathized and strong elements.
+        * @marker _
+        * @marker *
+        */
+       protected function parseEmphStrong($text)
+       {
+               $marker = $text[0];
+
+               if (!isset($text[1])) {
+                       return [['text', $text[0]], 1];
+               }
+
+               if ($marker == $text[1]) { // strong
+                       if ($marker == '*' && preg_match('/^[*]{2}((?:[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', $text, $matches) ||
+                               $marker == '_' && preg_match('/^__((?:[^_]|_[^_]*_)+?)__(?!_)/us', $text, $matches)) {
+
+                               return [
+                                       [
+                                               'strong',
+                                               $this->parseInline($matches[1]),
+                                       ],
+                                       strlen($matches[0])
+                               ];
+                       }
+               } else { // emph
+                       if ($marker == '*' && preg_match('/^[*]((?:[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', $text, $matches) ||
+                               $marker == '_' && preg_match('/^_((?:[^_]|__[^_]*__)+?)_(?!_)\b/us', $text, $matches)) {
+                               return [
+                                       [
+                                               'emph',
+                                               $this->parseInline($matches[1]),
+                                       ],
+                                       strlen($matches[0])
+                               ];
+                       }
+               }
+               return [['text', $text[0]], 1];
+       }
+
+       protected function renderStrong($block)
+       {
+               return '<strong>' . $this->renderAbsy($block[1]) . '</strong>';
+       }
+
+       protected function renderEmph($block)
+       {
+               return '<em>' . $this->renderAbsy($block[1]) . '</em>';
+       }
+}