summaryrefslogtreecommitdiff
path: root/includes/pear/Text/Wiki/Parse/Creole/Url.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/pear/Text/Wiki/Parse/Creole/Url.php')
-rw-r--r--includes/pear/Text/Wiki/Parse/Creole/Url.php109
1 files changed, 109 insertions, 0 deletions
diff --git a/includes/pear/Text/Wiki/Parse/Creole/Url.php b/includes/pear/Text/Wiki/Parse/Creole/Url.php
new file mode 100644
index 0000000..4422a31
--- /dev/null
+++ b/includes/pear/Text/Wiki/Parse/Creole/Url.php
@@ -0,0 +1,109 @@
+<?php
+
+/**
+ *
+ * Parse for URLS in the source text.
+ *
+ * raw -- http://example.com
+ * no descr. -- [[http://example.com]]
+ * described -- [[http://example.com|Example Description]]
+ *
+ * When rendering a URL token, this will convert URLs pointing to a .gif,
+ * .jpg, or .png image into an inline <img /> tag (for the 'xhtml'
+ * format).
+ *
+ * @category Text
+ *
+ * @package Text_Wiki
+ *
+ * @author Michele Tomaiuolo <tomamic@yahoo.it>
+ *
+ * @license LGPL
+ *
+ * @version $Id: Url.php 293784 2010-01-20 18:48:09Z justinpatrin $
+ *
+ */
+
+class Text_Wiki_Parse_Url extends Text_Wiki_Parse {
+
+ /**
+ *
+ * Constructor. Overrides the Text_Wiki_Parse constructor so that we
+ * can set the $regex property dynamically (we need to include the
+ * Text_Wiki $delim character).
+ *
+ * @param object &$obj The calling "parent" Text_Wiki object.
+ *
+ * @param string $name The token name to use for this rule.
+ *
+ */
+
+ function Text_Wiki_Parse_Url(&$obj)
+ {
+ parent::Text_Wiki_Parse($obj);
+ $this->regex = '/((?:\[\[ *((?:\w+:\/\/|mailto:|\/)[^\|\]\n ]*)( *\| *([^\]\n]*))? *\]\])|((?<=[^\~\w])(https?:\/\/|ftps?:\/\/|mailto:)[^\'\"\n ' . $this->wiki->delim . ']*[A-Za-z0-9\/\?\=\&\~\_#]))/';
+ }
+
+
+ /**
+ *
+ * Generates a replacement for the matched text.
+ *
+ * Token options are:
+ *
+ * 'href' => the URL link href portion
+ *
+ * 'text' => the displayed text of the URL link
+ *
+ * @access public
+ *
+ * @param array &$matches The array of matches from parse().
+ *
+ * @return string A token to be used as a placeholder
+ * in the source text for the preformatted text.
+ *
+ */
+
+ function process(&$matches)
+ {
+ if (isset($matches[2])) $href = trim($matches[2]);
+ if (isset($matches[4])) $text = trim($matches[4]);
+ if (isset($matches[5])) $rawurl = $matches[5];
+ if (empty($href)) $href = $rawurl;
+
+ if (empty($text)) {
+ $text = $href;
+ if (strpos($text, '/') === FALSE) {
+ $text = str_replace('http://', '', $text);
+ $text = str_replace('mailto:', '', $text);
+ }
+ return $this->wiki->addToken(
+ $this->rule,
+ array(
+ 'type' => 'inline',
+ 'href' => $href,
+ 'text' => $text
+ )
+ );
+ } else {
+ return $this->wiki->addToken(
+ $this->rule,
+ array(
+ 'type' => 'start',
+ 'href' => $href,
+ 'text' => $text
+ )
+ ) . $text .
+ $this->wiki->addToken(
+ $this->rule,
+ array(
+ 'type' => 'end',
+ 'href' => $href,
+ 'text' => $text
+ )
+ );
+ }
+ }
+
+}
+?> \ No newline at end of file