From: Geoffrey T. D. <da...@us...> - 2002-02-07 23:23:29
|
Update of /cvsroot/phpwiki/phpwiki/lib In directory usw-pr-cvs1:/tmp/cvs-serv20523/lib Modified Files: stdlib.php Log Message: New function to convert old-style markup to new-style markup. Index: stdlib.php =================================================================== RCS file: /cvsroot/phpwiki/phpwiki/lib/stdlib.php,v retrieving revision 1.100 retrieving revision 1.101 diff -u -b -I^#: -d -r1.100 -r1.101 --- stdlib.php 7 Feb 2002 21:17:26 -0000 1.100 +++ stdlib.php 7 Feb 2002 23:23:26 -0000 1.101 @@ -12,6 +12,7 @@ LinkPhpwikiURL($url, $text) LinkBracketLink($bracketlink) ExtractWikiPageLinks($content) + ConvertOldMarkup($content) class Stack { push($item), pop(), cnt(), top() } @@ -304,6 +305,66 @@ } /** + * Convert old page markup to new-style markup. + * + * @param $text string Old-style wiki markup. + * + * @return string New-style wiki markup. + * + * @bugs FIXME: footnotes and old-style tables are known to be broken. + */ +function ConvertOldMarkup ($text) { + // PHPism: defining this function here, doesn't really make + // it function local, but it should. + function _ConvertOldListMarkup ($indent, $bullet) { + $indent = str_repeat(' ', strlen($indent)); + if ($bullet[0] == ';') { + $term = ltrim(substr($bullet, 1)); + return $indent . $term . "\n" . $indent . ' '; + } + else + return $indent . $bullet . ' '; + } + + /***************************************************************** + * Conversions for inline markup: + */ + + // escape tilde's + $orig[] = '/~/'; + $repl[] = '~~'; + + // escape escaped brackets + $orig[] = '/\[\[/'; + $repl[] = '~['; + + // change ! escapes to ~'s. + global $AllowedProtocols, $WikiNameRegexp, $request; + include_once('lib/interwiki.php'); + $map = InterWikiMap::GetMap($request); + $bang_esc[] = "(?:$AllowedProtocols):[^\s<>\[\]\"'()]*[^\s<>\[\]\"'(),.?]"; + $bang_esc[] = $map->getRegexp() . ":[^\\s.,;?()]+"; // FIXME: is this really needed? + $bang_esc[] = $WikiNameRegexp; + $orig[] = '/!((?:' . join(')|(', $bang_esc) . '))/'; + $repl[] = '~\\1'; + + + /***************************************************************** + * Conversions for block markup + */ + // convert indented blocks to <pre></pre>. + $orig[] = '/^[ \t]+\S.*\n(?:(?:\s*\n)?^[ \t]+\S.*\n)*/m'; + $repl[] = "<pre>\n\\0</pre>\n"; + + // convert lists + $orig[] = '/^([#*;]*)([*#]|;.*?:) */me'; + $repl[] = "_ConvertOldListMarkup('\\1', '\\2')"; + + return preg_replace($orig, $repl, $text); +} + + +/** * Split WikiWords in page names. * * It has been deemed useful to split WikiWords (into "Wiki Words") in @@ -436,7 +497,7 @@ * Format time to standard 'ctime' format. * * @param $time time_t Time. Default: now. - * @return string Date and time in RFC-2822 format. + * @return string Date and time. */ function CTime ($time = false) { |