From: <be...@us...> - 2007-09-02 14:12:19
|
Revision: 1033 http://geshi.svn.sourceforge.net/geshi/?rev=1033&view=rev Author: benbe Date: 2007-09-02 07:12:18 -0700 (Sun, 02 Sep 2007) Log Message: ----------- mrg: Recent changes and bugfixes in trunk Modified Paths: -------------- branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/docs/CHANGES branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi/bash.php branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi.php Modified: branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/docs/CHANGES =================================================================== --- branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/docs/CHANGES 2007-09-02 11:26:34 UTC (rev 1032) +++ branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/docs/CHANGES 2007-09-02 14:12:18 UTC (rev 1033) @@ -30,6 +30,7 @@ - Disabled symbol highlighting by default (doesn't affect brackets, cf. documentation) (BenBE) - Added a check for set_case_keywords for the given param to be supported (BenBE) - Minor rework of the HTML documentation layout \ W3C compliance (BenBE) + - Fixed highlighting error in bash language avoiding keywords in comments (SF #1786314, SF #1564839, BenBE) Version 1.0.7.20 - Added language files * Genero (logic) and Per (forms) (FOURJ's Genero 4GL) (Lars Gersmann) Modified: branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi/bash.php =================================================================== --- branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi/bash.php 2007-09-02 11:26:34 UTC (rev 1032) +++ branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi/bash.php 2007-09-02 14:12:18 UTC (rev 1033) @@ -50,7 +50,7 @@ // Bash DOES have single line comments with # markers. But bash also has // the $# variable, so comments need special handling (see sf.net // 1564839) - 'COMMENT_SINGLE' => array(), + 'COMMENT_SINGLE' => array('#'), 'COMMENT_MULTI' => array(), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), @@ -88,7 +88,7 @@ 'last', 'lastb', 'ld', 'ld86', 'ldd', 'less', 'lex', 'link', 'ln', 'loadkeys', 'loadunimap', 'locate', 'lockfile', 'login', 'logname', 'lp', 'lpr', 'ls', 'lsattr', 'lsmod', 'lsmod.old', 'lynx', - 'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo', + 'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo', 'mknod', 'mktemp', 'more', 'mount', 'msgfmt', 'mv', 'namei', 'nano', 'nasm', 'nawk', 'netstat', 'nice', 'nisdomainname', 'nl', 'nm', 'nm86', 'nmap', 'nohup', 'nop', @@ -144,7 +144,7 @@ 3 => 'color: #7a0874; font-weight: bold;' ), 'COMMENTS' => array( - 1 => 'color: #808080; font-style: italic;' + 0 => 'color: #808080; font-style: italic;' ), 'ESCAPE_CHAR' => array( 0 => 'color: #000099; font-weight: bold;' @@ -167,7 +167,7 @@ 0 => 'color: #007800;', 1 => 'color: #007800;', 2 => 'color: #007800;', - 3 => 'color: #808080; font-style: italic;', +// 3 => 'color: #808080; font-style: italic;', 4 => 'color: #007800;' ), 'SCRIPT' => array( @@ -185,7 +185,7 @@ 0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}", 1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*", 2 => "([a-zA-Z_][a-zA-Z0-9_]*)=", - 3 => "(?<!\\$)#[^\n]*", +// 3 => "(?<!\\$)#[^\n]*", 4 => "\\$#" ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, Modified: branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi.php =================================================================== --- branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi.php 2007-09-02 11:26:34 UTC (rev 1032) +++ branches/RELEASE_1_0_7_STABLE/geshi-1.0.X/src/geshi.php 2007-09-02 14:12:18 UTC (rev 1033) @@ -1766,7 +1766,7 @@ count($this->highlight_extra_lines) > 0)) { // strreplace to put close span and open span around multiline newlines $test_str .= str_replace( - "\n", "</span>\n<span$attributes>", + "\n", "</span>\n<span$attributes>", str_replace("\n ", "\n ", $rest_of_comment) ); } @@ -1799,6 +1799,9 @@ else { $match = (strtolower($comment_mark) == strtolower($test_str)); } + if($match && "bash" == $this->language && "#" == $comment_mark) { + $match = ("$" != substr($part, $i-1, 1)) && (0!=$i); + } if ($match) { $COMMENT_MATCHED = true; if ($this->lexic_permissions['COMMENTS'][$comment_key]) { @@ -2245,13 +2248,13 @@ if(is_array($symbols)) { foreach($symbols as $sym) { if(!isset($symbol_data[$sym])) { - $symbol_data[$sym] = $key; + $symbol_data[GeSHi::hsc($sym)] = $key; $symbol_preg[] = preg_quote(GeSHi::hsc($sym), '/'); } } } else { if(!isset($symbol_data[$symbols])) { - $symbol_data[$symbols] = 0; + $symbol_data[GeSHi::hsc($symbols)] = 0; $symbol_preg[] = preg_quote(GESHI::hsc($symbols), '/'); } } @@ -2300,14 +2303,14 @@ $symbol_hl .= '<| style="' . $this->language_data['STYLES']['SYMBOLS'][$old_sym] . '">'; } else { - $attributes = '<| class="sy' . $old_sym . '">'; + $symbol_hl .= '<| class="sy' . $old_sym . '">'; } } $symbol_hl .= $sym_ms; } //Close remaining tags and insert the replacement at the right position ... //Take caution if symbol_hl is empty to avoid doubled closing spans. - if ("" != $symbol_hl) { + if (-1 != $old_sym) { $symbol_hl .= "|>"; } $stuff_to_parse = substr($stuff_to_parse, 0, $symbol_offset) . $symbol_hl . substr($stuff_to_parse, $symbol_offset + strlen($symbol_match)); @@ -2529,11 +2532,10 @@ } // Add in the line surrounded by appropriate list HTML - $attr_string = ' '; + $attr_string = ''; foreach ($attrs as $key => $attr) { - $attr_string .= $key . '="' . implode(' ', $attr) . '" '; + $attr_string .= ' ' . $key . '="' . implode(' ', $attr) . '"'; } - $attr_string = substr($attr_string, 0, -1); $parsed_code .= "<li$attr_string>$start$line$end</li>$ls"; $attrs = array(); } @@ -2854,7 +2856,14 @@ // Header of the stylesheet if (!$economy_mode) { - $stylesheet = "/**\n * GeSHi Dynamically Generated Stylesheet\n * --------------------------------------\n * Dynamically generated stylesheet for {$this->language}\n * CSS class: {$this->overall_class}, CSS id: {$this->overall_id}\n * GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)\n */\n"; + $stylesheet = + "/**\n * GeSHi Dynamically Generated Stylesheet\n". + " * --------------------------------------\n". + " * Dynamically generated stylesheet for {$this->language}\n". + " * CSS class: {$this->overall_class}, CSS id: {$this->overall_id}\n". + " * GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)\n". + " * --------------------------------------\n". + " */\n"; } else { $stylesheet = '/* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter) */' . "\n"; } @@ -2918,13 +2927,16 @@ } foreach ($this->language_data['STYLES']['KEYWORDS'] as $group => $styles) { - if (!$economy_mode || !($economy_mode && (!$this->lexic_permissions['KEYWORDS'][$group] || $styles == ''))) { + if (!$economy_mode || ($economy_mode && $styles != '') && + (isset($this->lexic_permissions['KEYWORDS'][$group]) && + $this->lexic_permissions['KEYWORDS'][$group])) { $stylesheet .= "$selector.kw$group {{$styles}}\n"; } } foreach ($this->language_data['STYLES']['COMMENTS'] as $group => $styles) { - if (!$economy_mode || !($economy_mode && $styles == '') && - !($economy_mode && !$this->lexic_permissions['COMMENTS'][$group])) { + if (!$economy_mode || ($economy_mode && $styles != '') && + (isset($this->lexic_permissions['COMMENTS'][$group]) && + $this->lexic_permissions['COMMENTS'][$group])) { $stylesheet .= "$selector.co$group {{$styles}}\n"; } } @@ -2970,8 +2982,9 @@ } } foreach ($this->language_data['STYLES']['REGEXPS'] as $group => $styles) { - if (!$economy_mode || !($economy_mode && $styles == '') && !($economy_mode && - !$this->lexic_permissions['REGEXPS'][$group])) { + if (!$economy_mode || ($economy_mode && $styles != '') && + (isset($this->lexic_permissions['REGEXPS'][$group]) && + $this->lexic_permissions['REGEXPS'][$group])) { if (is_array($this->language_data['REGEXPS'][$group]) && array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$group])) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |