Help:Sandkasten: Difference between revisions

From BlueM
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
<HIGHLIGHTSYNTAX language="php3">
{BlauesModell Eingabedateien} {TSIM.EXT} {TSIM.ALL}
<?php
/**
* WikiMedia Extension for Code Syntax Highlighting with the [ http://www.beautifier.org | Beautifier Syntax Highlighting Engine].
*
* Parses any content defined within the <nowiki><highlightSyntax></highlightSyntax></nowiki> 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"]."()<br />";
                }
 
        }
 
        /**
        * 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 .= "<div style=\"font-weight: bold;\"><nowiki><pre></nowiki>\n";
                $output .= $highlighter->highlight_text($highlighter->load_file($serverRoot.$argv["serverFile"]));
                $output .= "</pre></div>";
                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."<br />";
                } else {
                        $fileContents = fread($fp, 8096);
                        fclose($fp);
                        $output .= "<div style=\"font-weight: bold;\"><h1>Code from <a href=\"".$argv["remoteFile"]."\">".$argv["remoteFile"]."</a></h1><nowiki><pre></nowiki>\n";
                        $output .= $highlighter->highlight_text($fileContents);
                        $output .= "</pre></div>";
                }
                return $output;
        /**
        * Else we just want to highlight the code within the syntaxHighlight tags.
        */
        } else {
                $output .= "<div style=\"font-weight: bold;\"><nowiki><pre></nowiki>\n";
                $output .= $highlighter->highlight_text($input);
                $output .= "</pre></div>";
                return $output;
        }
}
?>
</HIGHLIGHTSYNTAX>

Revision as of 07:03, 20 September 2006

{BlauesModell Eingabedateien} {TSIM.EXT} {TSIM.ALL}