. */ // Highlight options: $hl_options=array(); $hl_options['hl_binary']='highlight'; // path to the highlight binary $hl_options['theme']='kwrite'; // set color theme $hl_options['linenumbers']=true; $hl_options['linenumber-start']=1; $hl_options['linenumber-zeroes']=1; // set to 1 if line numbers should be padded with zeros $hl_options['linenumber-length']=2; $hl_options['reformat-style']="gnu"; // possible values for C, C++ and Java Code: ansi, gnu, java, kr, linux $hl_options['replace-tabs']=4; // number of spaces which replace a tab $hl_options['wrap-style']=2; // 0 -> disable, 1-> wrap, 2-> wrap and indent function names $hl_options['wrap-line-length']=60; // if wrap-style <>0, this defines the line length before wrapping takes place class as_highlight { var $ch_is_excerpt = false; function __construct() { add_filter('the_content',array(&$this, 'hl_the_content_filter'),1); } // PHP 4 Constructor function as_highlight () { $this->__construct() ; } function as_highlight_code($matches){ global $hl_options; $lang = preg_replace("'[^a-zA-Z]'","",$matches[1]); // undo nl and p formatting $input_code = $matches[2]; $input_code = preg_replace("'\r?\n?'","\n",$input_code); $search = array("&",""", "<", ">","\","'"," "); $replace = array("&","\"", "<", ">","\\","\'", " "); $input_code = str_replace($search, $replace, $input_code); $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w") // stdout is a pipe that the child will write to ); $hl_cmd_str = $hl_options['hl_binary']; $hl_cmd_str .= ' --inline-css -I -f '; if ($hl_options['linenumbers']){ $hl_cmd_str .= " -l -m "; $hl_cmd_str .= $hl_options['linenumber-start']; if ($hl_options['linenumber-zeroes']){ $hl_cmd_str .= " -z -j "; $hl_cmd_str .= $hl_options['linenumber-length']; } } if ($hl_options['replace-tabs']) { $hl_cmd_str .= " -t "; $hl_cmd_str .= $hl_options['replace-tabs']; } if ($hl_options['wrap-style']){ $hl_cmd_str .= ($hl_options['wrap-style'] == 1)? ' -V ':' -W '; $hl_cmd_str .= " -J "; $hl_cmd_str .= $hl_options['wrap-line-length']; } if ($hl_options['reformat-style']){ $hl_cmd_str .= " -F "; $hl_cmd_str .= $hl_options['reformat-style']; } if ($hl_options['theme']){ $hl_cmd_str .= " -s "; $hl_cmd_str .= $hl_options['theme']; } $hl_cmd_str .= " -S $lang "; $process = proc_open($hl_cmd_str, $descriptorspec, $pipes); if (is_resource($process)) { fwrite($pipes[0], $input_code); fclose($pipes[0]); if (function_exists("stream_get_contents")) { $output = stream_get_contents($pipes[1]); } else { $output = ""; while (!feof($pipes[1])) $output .= fgets($pipes[1]); } fclose($pipes[1]); // It is important that you close any pipes before calling // proc_close in order to avoid a deadlock $return_value = proc_close($process); } $newContent = "
". $output ."
"; return $newContent; } function hl_the_content_filter($content) { return preg_replace_callback("/(.*)<\/pre>/siU", array(&$this, "as_highlight_code"), $content); } } if (!function_exists('as_highlight')) $as_highlight = new as_highlight(); ?>