Help:Sandkasten
Jump to navigation
Jump to search
<HIGHLIGHTSYNTAX language="php3"> <?php /**
* WikiMedia Extension for Code Syntax Highlighting with the [ http://www.beautifier.org | Beautifier Syntax Highlighting Engine]. * * Parses any content defined within the <highlightSyntax></highlightSyntax> tag * with the [ http://www.beautifier.org | Beautifier Syntax Highlighting Engine] and * returns the HTML output. * @author Lucas Hrabovsky <lucas@amie.st> * @copyright © 2006 Amie Inc. * @package MediaWiki * @subpackage Extensions * @filesource */
/**
* ----------------------------------------
* Configuration Vars.
* ----------------------------------------
* @string BEAUT_PATH The root path to your Beatuifier installation.
* @string LOCAL_SERVER_ROOT The root path to use when opening files on the local server for highlighting.
* @string OUTPUT_HIGHLIGHT_AS Whether to output the HTML as CSS friendly or not. enum('CSS','HTML')
*/
$BEAUT_PATH = "/path/to/your/beautifier/installation/"; $LOCAL_SERVER_ROOT = "/pathtoyour/public_html/or/www/directory/"; $OUTPUT_HIGHLIGHT_AS = "HTML"; /**
* Add the syntax highlighting extension to the wgExtensionFunctions array. */
$wgExtensionFunctions[] = "syntaxHighlightingExtension"; /**
* Register the syntaxHighlightingExtension with the Wiki Parser and associate * the highlightSyntax tag with the syntaxHighlightingRenderHtml function. */
function syntaxHighlightingExtension(){
global $wgParser;
$wgParser->setHook("HIGHLIGHTSYNTAX","syntaxHighlightingRenderHtml");
} /**
* The callback function for converting the input text to HTML output. */
function syntaxHighlightingRenderHtml($input, $argv){
/**
* Pass in the globals defined above for use in the function.
*/
global $BEAUT_PATH, $LOCAL_SERVER_ROOT, $OUTPUT_HIGHLIGHT_AS;
/**
* Require the two main files for the beautifier.
*/
require_once ($BEAUT_PATH."Beautifier/Core.php");
/**
* If a specific language is requested load the relevant file and create the highlighter
*/
$myhfile = null;
if($argv["language"]){
require_once ($BEAUT_PATH."HFile/HFile_".$argv["language"].".php");
if (FALSE === eval("\$myhfile = new HFile_".$argv["language"]."();") ) {
$output .= "Error:1 Could not instantiate HFile_".$argv["language"]."()
";
}
}
/**
* Otherwise use php as a default
*/
else
{
require_once ($BEAUT_PATH."HFile/HFile_php3.php");
$myhfile = new HFile_php3();
}
/**
* Sett up the highlight object based on whether
* you want the output as CSS freindly or straight HTML.
*/
if($OUTPUT_HIGHLIGHT_AS=="CSS"){
require_once ($BEAUT_PATH."Output/Output_css.php");
$outputter = new Output_css();
}
else {
require_once ($BEAUT_PATH."Output/Output_HTML.php");
$outputter = new Output_Html();
}
$highlighter = new Core($myhfile, $outputter);
/**
* The meat and potatoes...
*/
/**
* If the serverFile argument is passed in the tag, load the local file into the highlighter parser.
*/
if($argv["serverFile"]){
$output .= "
<pre>\n";
$output .= $highlighter->highlight_text($highlighter->load_file($serverRoot.$argv["serverFile"]));$output .= "
";
return $output;
/**
* If its a remote file, open it up and parse the returned contents.
*/
} else if($argv["remoteFile"]){
$openFileName = $argv["remoteFile"];
$fp = fopen($openFileName, "r");
if(!$fp){
$output = "Error: Syntax Highlighter could not open the file ".$openFileName."
";
} else {
$fileContents = fread($fp, 8096);
fclose($fp);
$output .= "
Code from <a href=\"".$argv["remoteFile"]."\">".$argv["remoteFile"]."</a>
<pre>\n";$output .= $highlighter->highlight_text($fileContents);$output .= "
";
}
return $output;
/**
* Else we just want to highlight the code within the syntaxHighlight tags.
*/
} else {
$output .= "
<pre>\n";
$output .= $highlighter->highlight_text($input);$output .= "
";
return $output;
}
} ?> </HIGHLIGHTSYNTAX>