From: Geoffrey T. D. <da...@us...> - 2001-12-18 18:47:32
|
Update of /cvsroot/phpwiki/phpwiki/lib In directory usw-pr-cvs1:/tmp/cvs-serv8136/lib Modified Files: transform.php Log Message: Linkify WikiWords (& bracket links & URLs) in RecentChanges summaries. Index: transform.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/transform.php,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -r1.30 -r1.31 *** transform.php 2001/12/12 23:51:25 1.30 --- transform.php 2001/12/18 18:47:29 1.31 *************** *** 307,357 **** ////////////////////////////////////////////////////////// ! function do_transform ($lines) { ! global $WikiNameRegexp, $AllowedProtocols, $InterWikiLinkRegexp; ! if (is_string($lines)) ! $lines = preg_split('/[ \t\r]*\n/', trim($lines)); ! ! ! $transform = new WikiTransform; ! // register functions ! // functions are applied in order of registering ! $transform->register(WT_SIMPLE_MARKUP, 'wtm_plugin_link'); ! $transform->register(WT_MODE_MARKUP, 'wtm_plugin'); ! $transform->register(WT_TOKENIZER, 'wtt_doublebrackets', '\[\['); ! $transform->register(WT_TOKENIZER, 'wtt_footnotes', '^\[\d+\]'); ! $transform->register(WT_TOKENIZER, 'wtt_footnoterefs', '\[\d+\]'); ! $transform->register(WT_TOKENIZER, 'wtt_bracketlinks', '\[.+?\]'); ! $transform->register(WT_TOKENIZER, 'wtt_urls', ! "!?\b($AllowedProtocols):[^\s<>\[\]\"'()]*[^\s<>\[\]\"'(),.?]"); ! ! if (function_exists('wtt_interwikilinks')) { ! $transform->register(WT_TOKENIZER, 'wtt_interwikilinks', ! pcre_fix_posix_classes("!?(?<![[:alnum:]])") . ! "$InterWikiLinkRegexp:[^\\s.,;?()]+"); ! } ! $transform->register(WT_TOKENIZER, 'wtt_bumpylinks', "!?$WikiNameRegexp"); ! ! if (function_exists('wtm_table')) { ! $transform->register(WT_MODE_MARKUP, 'wtm_table', '^\|'); ! } ! $transform->register(WT_SIMPLE_MARKUP, 'wtm_htmlchars'); ! $transform->register(WT_SIMPLE_MARKUP, 'wtm_linebreak'); ! $transform->register(WT_SIMPLE_MARKUP, 'wtm_bold_italics'); ! ! $transform->register(WT_MODE_MARKUP, 'wtm_list_ul'); ! $transform->register(WT_MODE_MARKUP, 'wtm_list_ol'); ! $transform->register(WT_MODE_MARKUP, 'wtm_list_dl'); ! $transform->register(WT_MODE_MARKUP, 'wtm_preformatted'); ! $transform->register(WT_MODE_MARKUP, 'wtm_headings'); ! $transform->register(WT_MODE_MARKUP, 'wtm_hr'); ! $transform->register(WT_MODE_MARKUP, 'wtm_paragraph'); ! //$html = $transform->do_transform($html, $pagehash['content']); ! return $transform->do_transform('', $lines); ! } /* --- 307,387 ---- ////////////////////////////////////////////////////////// ! class WikiPageTransform ! extends WikiTransform { ! function WikiPageTransform() { ! global $WikiNameRegexp, $AllowedProtocols, $InterWikiLinkRegexp; ! $this->WikiTransform(); ! // register functions ! // functions are applied in order of registering ! $this->register(WT_SIMPLE_MARKUP, 'wtm_plugin_link'); ! $this->register(WT_MODE_MARKUP, 'wtm_plugin'); ! $this->register(WT_TOKENIZER, 'wtt_doublebrackets', '\[\['); ! $this->register(WT_TOKENIZER, 'wtt_footnotes', '^\[\d+\]'); ! $this->register(WT_TOKENIZER, 'wtt_footnoterefs', '\[\d+\]'); ! $this->register(WT_TOKENIZER, 'wtt_bracketlinks', '\[.+?\]'); ! $this->register(WT_TOKENIZER, 'wtt_urls', ! "!?\b($AllowedProtocols):[^\s<>\[\]\"'()]*[^\s<>\[\]\"'(),.?]"); ! ! if (function_exists('wtt_interwikilinks')) { ! $this->register(WT_TOKENIZER, 'wtt_interwikilinks', ! pcre_fix_posix_classes("!?(?<![[:alnum:]])") . ! "$InterWikiLinkRegexp:[^\\s.,;?()]+"); ! } ! $this->register(WT_TOKENIZER, 'wtt_bumpylinks', "!?$WikiNameRegexp"); ! ! if (function_exists('wtm_table')) { ! $this->register(WT_MODE_MARKUP, 'wtm_table', '^\|'); ! } ! $this->register(WT_SIMPLE_MARKUP, 'wtm_htmlchars'); ! $this->register(WT_SIMPLE_MARKUP, 'wtm_linebreak'); ! $this->register(WT_SIMPLE_MARKUP, 'wtm_bold_italics'); ! ! $this->register(WT_MODE_MARKUP, 'wtm_list_ul'); ! $this->register(WT_MODE_MARKUP, 'wtm_list_ol'); ! $this->register(WT_MODE_MARKUP, 'wtm_list_dl'); ! $this->register(WT_MODE_MARKUP, 'wtm_preformatted'); ! $this->register(WT_MODE_MARKUP, 'wtm_headings'); ! $this->register(WT_MODE_MARKUP, 'wtm_hr'); ! $this->register(WT_MODE_MARKUP, 'wtm_paragraph'); ! } ! }; ! function do_transform ($lines, $class = 'WikiPageTransform') { ! if (is_string($lines)) ! $lines = preg_split('/[ \t\r]*\n/', trim($lines)); ! ! $trfm = new $class; ! return $trfm->do_transform('', $lines); ! } ! ! class LinkTransform ! extends WikiTransform { ! function LinkTransform() { ! global $WikiNameRegexp, $AllowedProtocols, $InterWikiLinkRegexp; ! ! $this->WikiTransform(); ! ! // register functions ! // functions are applied in order of registering ! ! $this->register(WT_TOKENIZER, 'wtt_doublebrackets', '\[\['); ! $this->register(WT_TOKENIZER, 'wtt_quotetoken', '\[\d+\]'); ! $this->register(WT_TOKENIZER, 'wtt_bracketlinks', '\[.+?\]'); ! $this->register(WT_TOKENIZER, 'wtt_urls', ! "!?\b($AllowedProtocols):[^\s<>\[\]\"'()]*[^\s<>\[\]\"'(),.?]"); ! ! if (function_exists('wtt_interwikilinks')) { ! $this->register(WT_TOKENIZER, 'wtt_interwikilinks', ! pcre_fix_posix_classes("!?(?<![[:alnum:]])") . ! "$InterWikiLinkRegexp:[^\\s.,;?()]+"); ! } ! $this->register(WT_TOKENIZER, 'wtt_bumpylinks', "!?$WikiNameRegexp"); ! $this->register(WT_SIMPLE_MARKUP, 'wtm_htmlchars'); ! } ! }; /* *************** *** 471,474 **** --- 501,513 ---- } + + // Just quote the token. + function wtt_quotetoken($match, &$trfrm) + { + return htmlspecialchars($match); + } + + + // end of tokenizer functions ////////////////////////////////////////////////////////// |