' . htmlspecialchars(print_r($matches, true)) . '' . htmlspecialchars($text) . '
' . htmlspecialchars('/([\w\W]*?)<\/code>/'));
+ */
+
+ foreach ( $matches[0] as $i => $match )
+ {
+ $codeblocks[$i] = array(
+ 'match' => $match,
+ 'lang' => $matches[1][$i],
+ 'code' => $matches[2][$i]
+ );
+ $text = str_replace_once($match, "{GESHI_BLOCK:$i:$random_id}", $text);
+ }
+}
+
+function geshi_restore_code(&$text, &$codeblocks, $random_id)
+{
+ foreach ( $codeblocks as $i => $match )
+ {
+ $text = str_replace_once("{GESHI_BLOCK:$i:$random_id}", $match['match'], $text);
+ }
+}
+
+// Formatter hook - where the actual highlighting is performed
+$plugins->attachHook('render_wikiformat_veryearly', 'geshi_strip_code($text, $codeblocks, $random_id);');
+$plugins->attachHook('render_wikiformat_post', 'geshi_perform_highlight($result, $codeblocks, $random_id);');
+
+function geshi_perform_highlight(&$text, &$codeblocks, $random_id)
+{
+ static $did_header_tweak = false;
+ if ( !$did_header_tweak )
+ {
+ $did_header_tweak = true;
+ global $template;
+ $template->add_header('
+ ');
+ }
+ if ( !defined('GESHI_ROOT') )
+ define('GESHI_ROOT', ENANO_ROOT . '/plugins/geshi/');
+
+ require_once ( GESHI_ROOT . '/base.php' );
+
+ foreach ( $codeblocks as $i => $match )
+ {
+ $lang =& $match['lang'];
+ $code =& $match['code'];
+
+ $geshi = new GeSHi($code, $lang, null);
+ $geshi->set_header_type(GESHI_HEADER_PRE);
+ // $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS);
+ $geshi->set_overall_class('geshi_highlighted');
+ $parsed = $geshi->parse_code();
+
+ $text = str_replace_once("{GESHI_BLOCK:$i:$random_id}", $parsed, $text);
+ }
+}
diff -r 441963e5b07a -r c715631f809a plugins/geshi/geshi/html.php
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/geshi/geshi/html.php Sun Feb 10 19:00:04 2008 -0500
@@ -0,0 +1,255 @@
+ 'HTML',
+ 'COMMENT_SINGLE' => array(),
+ 'COMMENT_MULTI' => array(''),
+ 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
+ 'QUOTEMARKS' => array("'", '"'),
+ 'ESCAPE_CHAR' => '',
+ 'KEYWORDS' => array(
+ 1 => array(
+ ),
+ 2 => array(
+ '<a>', '<abbr>', '<acronym>', '<address>', '<applet>',
+ '<a', '<abbr', '<acronym', '<address', '<applet',
+ '</a>', '</abbr>', '</acronym>', '</address>', '</applet>',
+ '</a', '</abbr', '</acronym', '</address', '</applet',
+
+ '<base>', '<basefont>', '<bdo>', '<big>', '<blockquote>', '<body>', '<br>', '<button>', '<b>',
+ '<base', '<basefont', '<bdo', '<big', '<blockquote', '<body', '<br', '<button', '<b',
+ '</base>', '</basefont>', '</bdo>', '</big>', '</blockquote>', '</body>', '</br>', '</button>', '</b>',
+ '</base', '</basefont', '</bdo', '</big', '</blockquote', '</body', '</br', '</button', '</b',
+
+ '<caption>', '<center>', '<cite>', '<code>', '<colgroup>', '<col>',
+ '<caption', '<center', '<cite', '<code', '<colgroup', '<col',
+ '</caption>', '</center>', '</cite>', '</code>', '</colgroup>', '</col>',
+ '</caption', '</center', '</cite', '</code', '</colgroup', '</col',
+
+ '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>',
+ '<dd', '<del', '<dfn', '<dir', '<div', '<dl', '<dt',
+ '</dd>', '</del>', '</dfn>', '</dir>', '</div>', '</dl>', '</dt>',
+ '</dd', '</del', '</dfn', '</dir', '</div', '</dl', '</dt',
+
+ '<em>',
+ '<em',
+ '</em>',
+ '</em',
+
+ '<fieldset>', '<font>', '<form>', '<frame>', '<frameset>',
+ '<fieldset', '<font', '<form', '<frame', '<frameset',
+ '</fieldset>', '</font>', '</form>', '</frame>', '</frameset>',
+ '</fieldset', '</font', '</form', '</frame', '</frameset',
+
+ '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<head>', '<hr>', '<html>',
+ '<h1', '<h2', '<h3', '<h4', '<h5', '<h6', '<head', '<hr', '<html',
+ '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</head>', '</hr>', '</html>',
+ '</h1', '</h2', '</h3', '</h4', '</h5', '</h6', '</head', '</hr', '</html',
+
+ '<iframe>', '<ilayer>', '<img>', '<input>', '<ins>', '<isindex>', '<i>',
+ '<iframe', '<ilayer', '<img', '<input', '<ins', '<isindex', '<i',
+ '</iframe>', '</ilayer>', '</img>', '</input>', '</ins>', '</isindex>', '</i>',
+ '</iframe', '</ilayer', '</img', '</input', '</ins', '</isindex', '</i',
+
+ '<kbd>',
+ '<kbd',
+ '&t;/kbd>',
+ '</kbd',
+
+ '<label>', '<legend>', '<link>', '<li>',
+ '<label', '<legend', '<link', '<li',
+ '</label>', '</legend>', '</link>', '</li>',
+ '</label', '</legend', '</link', '</li',
+
+ '<map>', '<meta>',
+ '<map', '<meta',
+ '</map>', '</meta>',
+ '</map', '</meta',
+
+ '<noframes>', '<noscript>',
+ '<noframes', '<noscript',
+ '</noframes>', '</noscript>',
+ '</noframes', '</noscript',
+
+ '<object>', '<ol>', '<optgroup>', '<option>',
+ '<object', '<ol', '<optgroup', '<option',
+ '</object>', '</ol>', '</optgroup>', '</option>',
+ '</object', '</ol', '</optgroup', '</option',
+
+ '<param>', '<pre>', '<p>',
+ '<param', '<pre', '<p',
+ '</param>', '</pre>', '</p>',
+ '</param', '</pre', '</p',
+
+ '<q>',
+ '<q',
+ '</q>',
+ '</q',
+
+ '<samp>', '<script>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<style>', '<sub>', '<sup>', '<s>',
+ '<samp', '<script', '<select', '<small', '<span', '<strike', '<strong', '<style', '<sub', '<sup', '<s',
+ '</samp>', '</script>', '</select>', '</small>', '</span>', '</strike>', '</strong>', '</style>', '</sub>', '</sup>', '</s>',
+ '</samp', '</script', '</select', '</small', '</span', '</strike', '</strong', '</style', '</sub', '</sup', '</s',
+
+ '<table>', '<tbody>', '<td>', '<textarea>', '<text>', '<tfoot>', '<thead>', '<th>', '<title>', '<tr>', '<tt>',
+ '<table', '<tbody', '<td', '<textarea', '<text', '<tfoot', '<tfoot', '<thead', '<th', '<title', '<tr', '<tt',
+ '</table>', '</tbody>', '</td>', '</textarea>', '</text>', '</tfoot>', '</thead', '</tfoot', '</th>', '</title>', '</tr>', '</tt>',
+ '</table', '</tbody', '</td', '</textarea', '</text', '</tfoot', '</tfoot', '</thead', '</th', '</title', '</tr', '</tt',
+
+ '<ul>', '<u>',
+ '<ul', '<u',
+ '</ul>', '</ul>',
+ '</ul', '</u',
+
+ '<var>',
+ '<var',
+ '</var>',
+ '</var',
+
+ '>', '<'
+ ),
+ 3 => array(
+ 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
+ 'background', 'bgcolor', 'border',
+ 'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
+ 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
+ 'enctype',
+ 'face', 'for', 'frame', 'frameborder',
+ 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
+ 'id', 'ismap',
+ 'label', 'lang', 'language', 'link', 'longdesc',
+ 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
+ 'name', 'nohref', 'noresize', 'noshade', 'nowrap',
+ 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
+ 'profile', 'prompt',
+ 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
+ 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
+ 'tabindex', 'target', 'text', 'title', 'type',
+ 'usemap',
+ 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
+ 'width'
+ )
+ ),
+ 'SYMBOLS' => array(
+ '/', '='
+ ),
+ 'CASE_SENSITIVE' => array(
+ GESHI_COMMENTS => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 'STYLES' => array(
+ 'KEYWORDS' => array(
+ 1 => 'color: #b1b100;',
+ 2 => 'color: #000000; font-weight: bold;',
+ 3 => 'color: #000066;'
+ ),
+ 'COMMENTS' => array(
+ 'MULTI' => 'color: #808080; font-style: italic;'
+ ),
+ 'ESCAPE_CHAR' => array(
+ 0 => 'color: #000099; font-weight: bold;'
+ ),
+ 'BRACKETS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'STRINGS' => array(
+ 0 => 'color: #ff0000;'
+ ),
+ 'NUMBERS' => array(
+ 0 => 'color: #cc66cc;'
+ ),
+ 'METHODS' => array(
+ ),
+ 'SYMBOLS' => array(
+ 0 => 'color: #66cc66;'
+ ),
+ 'SCRIPT' => array(
+ 0 => 'color: #00bbdd;',
+ 1 => 'color: #ddbb00;',
+ 2 => 'color: #009900;'
+ ),
+ 'REGEXPS' => array(
+ )
+ ),
+ 'URLS' => array(
+ 1 => '',
+ 2 => 'http://december.com/html/4/element/{FNAME}.html',
+ 3 => ''
+ ),
+ 'OOLANG' => false,
+ 'OBJECT_SPLITTERS' => array(
+ ),
+ 'REGEXPS' => array(
+ ),
+ 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
+ 'SCRIPT_DELIMITERS' => array(
+ 0 => array(
+ ' '>'
+ ),
+ 1 => array(
+ '&' => ';'
+ ),
+ 2 => array(
+ '<' => '>'
+ )
+ ),
+ 'HIGHLIGHT_STRICT_BLOCK' => array(
+ 0 => false,
+ 1 => false,
+ 2 => true
+ ),
+ 'TAB_WIDTH' => 4
+);
+
+?>
diff -r 441963e5b07a -r c715631f809a plugins/geshi/geshi/html4strict.php
--- a/plugins/geshi/geshi/html4strict.php Sun Feb 10 18:10:52 2008 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,255 +0,0 @@
- 'HTML',
- 'COMMENT_SINGLE' => array(),
- 'COMMENT_MULTI' => array(''),
- 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
- 'QUOTEMARKS' => array("'", '"'),
- 'ESCAPE_CHAR' => '',
- 'KEYWORDS' => array(
- 1 => array(
- ),
- 2 => array(
- '<a>', '<abbr>', '<acronym>', '<address>', '<applet>',
- '<a', '<abbr', '<acronym', '<address', '<applet',
- '</a>', '</abbr>', '</acronym>', '</address>', '</applet>',
- '</a', '</abbr', '</acronym', '</address', '</applet',
-
- '<base>', '<basefont>', '<bdo>', '<big>', '<blockquote>', '<body>', '<br>', '<button>', '<b>',
- '<base', '<basefont', '<bdo', '<big', '<blockquote', '<body', '<br', '<button', '<b',
- '</base>', '</basefont>', '</bdo>', '</big>', '</blockquote>', '</body>', '</br>', '</button>', '</b>',
- '</base', '</basefont', '</bdo', '</big', '</blockquote', '</body', '</br', '</button', '</b',
-
- '<caption>', '<center>', '<cite>', '<code>', '<colgroup>', '<col>',
- '<caption', '<center', '<cite', '<code', '<colgroup', '<col',
- '</caption>', '</center>', '</cite>', '</code>', '</colgroup>', '</col>',
- '</caption', '</center', '</cite', '</code', '</colgroup', '</col',
-
- '<dd>', '<del>', '<dfn>', '<dir>', '<div>', '<dl>', '<dt>',
- '<dd', '<del', '<dfn', '<dir', '<div', '<dl', '<dt',
- '</dd>', '</del>', '</dfn>', '</dir>', '</div>', '</dl>', '</dt>',
- '</dd', '</del', '</dfn', '</dir', '</div', '</dl', '</dt',
-
- '<em>',
- '<em',
- '</em>',
- '</em',
-
- '<fieldset>', '<font>', '<form>', '<frame>', '<frameset>',
- '<fieldset', '<font', '<form', '<frame', '<frameset',
- '</fieldset>', '</font>', '</form>', '</frame>', '</frameset>',
- '</fieldset', '</font', '</form', '</frame', '</frameset',
-
- '<h1>', '<h2>', '<h3>', '<h4>', '<h5>', '<h6>', '<head>', '<hr>', '<html>',
- '<h1', '<h2', '<h3', '<h4', '<h5', '<h6', '<head', '<hr', '<html',
- '</h1>', '</h2>', '</h3>', '</h4>', '</h5>', '</h6>', '</head>', '</hr>', '</html>',
- '</h1', '</h2', '</h3', '</h4', '</h5', '</h6', '</head', '</hr', '</html',
-
- '<iframe>', '<ilayer>', '<img>', '<input>', '<ins>', '<isindex>', '<i>',
- '<iframe', '<ilayer', '<img', '<input', '<ins', '<isindex', '<i',
- '</iframe>', '</ilayer>', '</img>', '</input>', '</ins>', '</isindex>', '</i>',
- '</iframe', '</ilayer', '</img', '</input', '</ins', '</isindex', '</i',
-
- '<kbd>',
- '<kbd',
- '&t;/kbd>',
- '</kbd',
-
- '<label>', '<legend>', '<link>', '<li>',
- '<label', '<legend', '<link', '<li',
- '</label>', '</legend>', '</link>', '</li>',
- '</label', '</legend', '</link', '</li',
-
- '<map>', '<meta>',
- '<map', '<meta',
- '</map>', '</meta>',
- '</map', '</meta',
-
- '<noframes>', '<noscript>',
- '<noframes', '<noscript',
- '</noframes>', '</noscript>',
- '</noframes', '</noscript',
-
- '<object>', '<ol>', '<optgroup>', '<option>',
- '<object', '<ol', '<optgroup', '<option',
- '</object>', '</ol>', '</optgroup>', '</option>',
- '</object', '</ol', '</optgroup', '</option',
-
- '<param>', '<pre>', '<p>',
- '<param', '<pre', '<p',
- '</param>', '</pre>', '</p>',
- '</param', '</pre', '</p',
-
- '<q>',
- '<q',
- '</q>',
- '</q',
-
- '<samp>', '<script>', '<select>', '<small>', '<span>', '<strike>', '<strong>', '<style>', '<sub>', '<sup>', '<s>',
- '<samp', '<script', '<select', '<small', '<span', '<strike', '<strong', '<style', '<sub', '<sup', '<s',
- '</samp>', '</script>', '</select>', '</small>', '</span>', '</strike>', '</strong>', '</style>', '</sub>', '</sup>', '</s>',
- '</samp', '</script', '</select', '</small', '</span', '</strike', '</strong', '</style', '</sub', '</sup', '</s',
-
- '<table>', '<tbody>', '<td>', '<textarea>', '<text>', '<tfoot>', '<thead>', '<th>', '<title>', '<tr>', '<tt>',
- '<table', '<tbody', '<td', '<textarea', '<text', '<tfoot', '<tfoot', '<thead', '<th', '<title', '<tr', '<tt',
- '</table>', '</tbody>', '</td>', '</textarea>', '</text>', '</tfoot>', '</thead', '</tfoot', '</th>', '</title>', '</tr>', '</tt>',
- '</table', '</tbody', '</td', '</textarea', '</text', '</tfoot', '</tfoot', '</thead', '</th', '</title', '</tr', '</tt',
-
- '<ul>', '<u>',
- '<ul', '<u',
- '</ul>', '</ul>',
- '</ul', '</u',
-
- '<var>',
- '<var',
- '</var>',
- '</var',
-
- '>', '<'
- ),
- 3 => array(
- 'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
- 'background', 'bgcolor', 'border',
- 'cellpadding', 'cellspacing', 'char', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
- 'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
- 'enctype',
- 'face', 'for', 'frame', 'frameborder',
- 'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
- 'id', 'ismap',
- 'label', 'lang', 'language', 'link', 'longdesc',
- 'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
- 'name', 'nohref', 'noresize', 'noshade', 'nowrap',
- 'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
- 'profile', 'prompt',
- 'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
- 'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
- 'tabindex', 'target', 'text', 'title', 'type',
- 'usemap',
- 'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
- 'width'
- )
- ),
- 'SYMBOLS' => array(
- '/', '='
- ),
- 'CASE_SENSITIVE' => array(
- GESHI_COMMENTS => false,
- 1 => false,
- 2 => false,
- 3 => false,
- ),
- 'STYLES' => array(
- 'KEYWORDS' => array(
- 1 => 'color: #b1b100;',
- 2 => 'color: #000000; font-weight: bold;',
- 3 => 'color: #000066;'
- ),
- 'COMMENTS' => array(
- 'MULTI' => 'color: #808080; font-style: italic;'
- ),
- 'ESCAPE_CHAR' => array(
- 0 => 'color: #000099; font-weight: bold;'
- ),
- 'BRACKETS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'STRINGS' => array(
- 0 => 'color: #ff0000;'
- ),
- 'NUMBERS' => array(
- 0 => 'color: #cc66cc;'
- ),
- 'METHODS' => array(
- ),
- 'SYMBOLS' => array(
- 0 => 'color: #66cc66;'
- ),
- 'SCRIPT' => array(
- 0 => 'color: #00bbdd;',
- 1 => 'color: #ddbb00;',
- 2 => 'color: #009900;'
- ),
- 'REGEXPS' => array(
- )
- ),
- 'URLS' => array(
- 1 => '',
- 2 => 'http://december.com/html/4/element/{FNAME}.html',
- 3 => ''
- ),
- 'OOLANG' => false,
- 'OBJECT_SPLITTERS' => array(
- ),
- 'REGEXPS' => array(
- ),
- 'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
- 'SCRIPT_DELIMITERS' => array(
- 0 => array(
- ' '>'
- ),
- 1 => array(
- '&' => ';'
- ),
- 2 => array(
- '<' => '>'
- )
- ),
- 'HIGHLIGHT_STRICT_BLOCK' => array(
- 0 => false,
- 1 => false,
- 2 => true
- ),
- 'TAB_WIDTH' => 4
-);
-
-?>