.
*/
// 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(); ?>