From: <ru...@us...> - 2010-06-07 10:55:58
|
Revision: 7472 http://phpwiki.svn.sourceforge.net/phpwiki/?rev=7472&view=rev Author: rurban Date: 2010-06-07 10:55:52 +0000 (Mon, 07 Jun 2010) Log Message: ----------- enable Markup_xml_plugin allow undefining ENABLE_MARKUP_TEMPLATE add link to LinkImage allow image attributes (again) Modified Paths: -------------- trunk/lib/InlineParser.php Modified: trunk/lib/InlineParser.php =================================================================== --- trunk/lib/InlineParser.php 2010-06-07 10:37:33 UTC (rev 7471) +++ trunk/lib/InlineParser.php 2010-06-07 10:55:52 UTC (rev 7472) @@ -34,7 +34,6 @@ */ define('ESCAPE_CHAR', '~'); -require_once(dirname(__FILE__).'/HtmlElement.php'); require_once('lib/CachedMarkup.php'); require_once(dirname(__FILE__).'/stdlib.php'); @@ -319,7 +318,8 @@ function isImageLink($link) { if (!$link) return false; assert(defined('INLINE_IMAGES')); - return preg_match("/\\.(" . INLINE_IMAGES . ")/i", $link); + return preg_match("/\\.(" . INLINE_IMAGES . ")$/i", $link) + or preg_match("/\\.(" . INLINE_IMAGES . ")\s+(size|border|align|hspace|vspace|type|data|width|height|title|lang|id|alt)=/i", $link); } function LinkBracketLink($bracketlink) { @@ -470,7 +470,7 @@ if (empty($label) and isImageLink($link)) { // if without label => inlined image [File:xx.gif] $imgurl = $intermap->link($link); - return LinkImage($imgurl->getAttr('href')); + return LinkImage($imgurl->getAttr('href'), $link); } return new Cached_InterwikiLink($link, $label); } else { @@ -936,6 +936,43 @@ } } +// Special version for plugins in xml syntax, mediawiki-style +// <name arg=value>body</name> or <name /> => < ? plugin pluginname arg=value body ? > +// PLUGIN_MARKUP_MAP = "html:RawHtml dot:GraphViz toc:CreateToc amath:AsciiMath richtable:RichTable include:IncludePage tex:TexToPng" +class Markup_xml_plugin extends BalancedMarkup +{ + //var $_start_regexp = "<(?: ".join('|',PLUGIN_MARKUP_MAP)." )(?: \s[^>]*)>"; + + function getStartRegexp () { + global $PLUGIN_MARKUP_MAP; + static $_start_regexp; + if ($_start_regexp) return $_start_regexp; + if (empty($PLUGIN_MARKUP_MAP)) + return ''; + //"<(?: html|dot|toc|amath|richtable|include|tex )(?: \s[^>]*)>" + $_start_regexp = "<(?: ".join('|',array_keys($PLUGIN_MARKUP_MAP))." )(?: \s[^>]* | / )>"; + return $_start_regexp; + } + function getEndRegexp ($match) { + return "<\\/" . $match . '>'; + } + function markup ($match, $body) { + global $PLUGIN_MARKUP_MAP; + $name = substr($match,2,-2); + $vars = ''; + if (preg_match('/^(\S+)\|(.*)$/', $name, $_m)) { + $name = $_m[1]; + $vars = $_m[2]; //str_replace(' ', '&', $_m[2]); + } + if (!isset($PLUGIN_MARKUP_MAP[$name])) { + trigger_error("No plugin for $name $vars defined.", E_USER_WARNING); + return ""; + } + $plugin = $PLUGIN_MARKUP_MAP[$name]; + return new Cached_PluginInvocation("<"."?plugin $plugin $vars $body ?".">"); + } +} + /** * Mediawiki <nowiki> * <nowiki>...</nowiki> @@ -965,7 +1002,7 @@ } } -/** +/** ENABLE_MARKUP_TEMPLATE * Template syntax similar to Mediawiki * {{template}} * => < ? plugin Template page=template ? > @@ -1157,7 +1194,11 @@ $this->_addMarkup(new Markup_color); // Markup_wikicreole_preformatted must be before Markup_template_plugin $this->_addMarkup(new Markup_wikicreole_preformatted); - $this->_addMarkup(new Markup_template_plugin); + if (ENABLE_MARKUP_TEMPLATE and !$non_default) + $this->_addMarkup(new Markup_template_plugin); + // This does not work yet + if (PLUGIN_MARKUP_MAP and !$non_default) + $this->_addMarkup(new Markup_xml_plugin); } function _addMarkup ($markup) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |