/** * Similar to SMWOutputs::commitToParser() but acting on a ParserOutput object. * * @param ParserOutput $parserOutput */ public static function commitToParserOutput(ParserOutput $parserOutput) { foreach (self::$scripts as $key => $script) { $parserOutput->addHeadItem($script . "\n", $key); } foreach (self::$headItems as $key => $item) { $parserOutput->addHeadItem("\t\t" . $item . "\n", $key); } $parserOutput->addModules(array_values(self::$resourceModules)); self::$resourceModules = array(); self::$headItems = array(); }
/** * Hook into Content::getParserOutput to provide syntax highlighting for * script content. * * @return bool * @since MW 1.21 */ public static function renderHook( Content $content, Title $title, ParserOptions $options, $generateHtml, ParserOutput &$output ) { global $wgSyntaxHighlightModels, $wgUseSiteCss; // Determine the language $model = $content->getModel(); if ( !isset( $wgSyntaxHighlightModels[$model] ) ) { // We don't care about this model, carry on. return true; } if ( !$generateHtml ) { // Nothing to do. return false; } // Hope that $wgSyntaxHighlightModels does not contain silly types. $text = Contenthandler::getContentText( $content ); if ( $text === null || $text === false ) { // Oops! Non-text content? return false; } $lang = $wgSyntaxHighlightModels[$model]; // Attempt to format $geshi = self::prepare( $text, $lang ); if( $geshi instanceof GeSHi ) { $out = $geshi->parse_code(); if( !$geshi->error() ) { // Done $output->addHeadItem( self::buildHeadItem( $geshi ), "source-$lang" ); $output->setText( "<div dir=\"ltr\">{$out}</div>" ); if( $wgUseSiteCss ) { $output->addModuleStyles( 'ext.geshi.local' ); } return false; } } // Bottle out return true; }
/** * Similar to SMWOutputs::commitToParser() but acting on a ParserOutput object. * * @param ParserOutput $parserOutput */ public static function commitToParserOutput(ParserOutput $parserOutput) { foreach (self::$scripts as $key => $script) { $parserOutput->addHeadItem($script . "\n", $key); } foreach (self::$headItems as $key => $item) { $parserOutput->addHeadItem("\t\t" . $item . "\n", $key); } // Check if the resource loader can be used or not. if (method_exists($parserOutput, 'addModules')) { $parserOutput->addModules(array_values(self::$resourceModules)); } else { self::addModulesBC($parserOutput); } self::$resourceModules = array(); self::$headItems = array(); }