mode to maintain valid XHTML, see // http://sourceforge.net/tracker/index.php?func=detail&aid=1201963&group_id=114997&atid=670231 $enclose = GESHI_HEADER_DIV; $geshi->enable_line_numbers( GESHI_FANCY_LINE_NUMBERS ); } // Starting line number if( isset( $args['start'] ) ) $geshi->start_line_numbers_at( $args['start'] ); $geshi->set_header_type( $enclose ); // Strict mode if( isset( $args['strict'] ) ) $geshi->enable_strict_mode(); // Format $out = $geshi->parse_code(); $err = $geshi->error(); if( $err ) { // Error! return self::formatError( $err ); } else { // Armour for Parser::doBlockLevels() if( $enclose == GESHI_HEADER_DIV ) $out = str_replace( "\n", '', $out ); // Register CSS $parser->mOutput->addHeadItem( self::buildHeadItem( $geshi ), "source-{$lang}" ); return '
{$error}
"; $html .= '' . htmlspecialchars( wfMsgForContent( 'syntaxhighlight-specify' ) ) . ' <source lang="html">...</source>
' . '' . htmlspecialchars( wfMsgForContent( 'syntaxhighlight-supported' ) ) . '
' . self::formatLanguages(); return "' . implode( ', ', $list ) . '
'; } else { return '' . htmlspecialchars( wfMsgForContent( 'syntaxhighlight-err-loading' ) ) . '
'; } } /** * Get the list of supported languages * * @return array */ private static function getSupportedLanguages() { if( !is_array( self::$languages ) ) { self::initialise(); self::$languages = array(); foreach( glob( GESHI_LANG_ROOT . "/*.php" ) as $file ) { self::$languages[] = basename( $file, '.php' ); } sort( self::$languages ); } return self::$languages; } /** * Initialise messages and ensure the GeSHi class is loaded */ private static function initialise() { if( !self::$initialised ) { self::loadMessages(); if( !class_exists( 'GeSHi' ) ) require( 'geshi/geshi.php' ); self::$initialised = true; } return true; } /** * Load extension messages * * @return bool */ public static function loadMessages() { static $done = false; if( !$done ) { global $wgMessageCache; require_once( dirname( __FILE__ ) . '/SyntaxHighlight_GeSHi.i18n.php' ); foreach( efSyntaxHighlight_GeSHiMessages() as $lang => $messages ) $wgMessageCache->addMessages( $messages, $lang ); } return true; } }