Version 1
[yaffs-website] / vendor / cebe / markdown / inline / UrlLinkTrait.php
diff --git a/vendor/cebe/markdown/inline/UrlLinkTrait.php b/vendor/cebe/markdown/inline/UrlLinkTrait.php
new file mode 100644 (file)
index 0000000..5712073
--- /dev/null
@@ -0,0 +1,48 @@
+<?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;
+
+// work around https://github.com/facebook/hhvm/issues/1120
+defined('ENT_HTML401') || define('ENT_HTML401', 0);
+
+/**
+ * Adds auto linking for URLs
+ */
+trait UrlLinkTrait
+{
+       /**
+        * Parses urls and adds auto linking feature.
+        * @marker http
+        * @marker ftp
+        */
+       protected function parseUrl($markdown)
+       {
+               $pattern = <<<REGEXP
+                       /(?(R) # in case of recursion match parentheses
+                                \(((?>[^\s()]+)|(?R))*\)
+                       |      # else match a link with title
+                               ^(https?|ftp):\/\/(([^\s()]+)|(?R))+(?<![\.,:;\'"!\?\s])
+                       )/x
+REGEXP;
+
+               if (!in_array('parseLink', $this->context) && preg_match($pattern, $markdown, $matches)) {
+                       return [
+                               ['autoUrl', $matches[0]],
+                               strlen($matches[0])
+                       ];
+               }
+               return [['text', substr($markdown, 0, 4)], 4];
+       }
+
+       protected function renderAutoUrl($block)
+       {
+               $href = htmlspecialchars($block[1], ENT_COMPAT | ENT_HTML401, 'UTF-8');
+               $text = htmlspecialchars(urldecode($block[1]), ENT_NOQUOTES | ENT_SUBSTITUTE, 'UTF-8');
+               return "<a href=\"$href\">$text</a>";
+       }
+}