示例#1
0
 /**
  * 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;
	}
示例#3
0
 /**
  * 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();
 }