Legoktm has uploaded a new change for review. https://gerrit.wikimedia.org/r/212452
Change subject: Revert "Add extension.json, empty PHP entry point" ...................................................................... Revert "Add extension.json, empty PHP entry point" This reverts commit 72d1e9226365959a7fff1ee429787b9ed52e751c. Change-Id: I47eab2842f195bf302de0ae3bf15beff1b48290f (cherry picked from commit 033ca20746432d34ae52540b169a78e070c5ea9b) --- M SyntaxHighlight_GeSHi.class.php M SyntaxHighlight_GeSHi.langs.php M SyntaxHighlight_GeSHi.php D extension.json M maintenance/updateLanguageList.php 5 files changed, 118 insertions(+), 128 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SyntaxHighlight_GeSHi refs/changes/52/212452/1 diff --git a/SyntaxHighlight_GeSHi.class.php b/SyntaxHighlight_GeSHi.class.php index 0ba0aa0..ddaea80 100644 --- a/SyntaxHighlight_GeSHi.class.php +++ b/SyntaxHighlight_GeSHi.class.php @@ -30,31 +30,6 @@ private static $languages = null; /** - * Executed after processing extension.json - */ - public static function registerExtension() { - global $wgVersion; - if ( version_compare( $wgVersion, '1.25', '<' ) ) { - die( 'This version of SyntaxHighlight GeSHi requires MediaWiki 1.25' ); - } - - require_once __DIR__ . '/SyntaxHighlight_GeSHi.langs.php'; - require_once __DIR__ . '/geshi/geshi.php'; - } - - /** - * Register parser hook - * - * @param $parser Parser - * @return bool - */ - public static function configureParser( &$parser ) { - $parser->setHook( 'source', array( 'SyntaxHighlight_GeSHi', 'parserHook' ) ); - $parser->setHook( 'syntaxhighlight', array( 'SyntaxHighlight_GeSHi', 'parserHook' ) ); - return true; - } - - /** * Parser hook * * @param string $text @@ -70,7 +45,7 @@ $text = preg_replace( '/^\n+/', '', $text ); // Validate language - if ( isset( $args['lang'] ) && $args['lang'] ) { + if( isset( $args['lang'] ) && $args['lang'] ) { $lang = $args['lang']; } else { // language is not specified. Check if default exists, if yes, use it. @@ -82,12 +57,12 @@ } } $lang = strtolower( $lang ); - if ( !preg_match( '/^[a-z_0-9-]*$/', $lang ) ) { + if( !preg_match( '/^[a-z_0-9-]*$/', $lang ) ) { $error = self::formatLanguageError( $text ); return $error; } $geshi = self::prepare( $text, $lang ); - if ( !$geshi instanceof GeSHi ) { + if( !$geshi instanceof GeSHi ) { $error = self::formatLanguageError( $text ); return $error; } @@ -95,23 +70,23 @@ $enclose = self::getEncloseType( $args ); // Line numbers - if ( isset( $args['line'] ) ) { + if( isset( $args['line'] ) ) { $geshi->enable_line_numbers( GESHI_FANCY_LINE_NUMBERS ); } // Highlighting specific lines - if ( isset( $args['highlight'] ) ) { + if( isset( $args['highlight'] ) ) { $lines = self::parseHighlightLines( $args['highlight'] ); if ( count( $lines ) ) { $geshi->highlight_lines_extra( $lines ); } } // Starting line number - if ( isset( $args['start'] ) ) { + if( isset( $args['start'] ) ) { $geshi->start_line_numbers_at( $args['start'] ); } $geshi->set_header_type( $enclose ); // Strict mode - if ( isset( $args['strict'] ) ) { + if( isset( $args['strict'] ) ) { $geshi->enable_strict_mode(); } // Format @@ -122,19 +97,19 @@ return $error; } $err = $geshi->error(); - if ( $err ) { + if( $err ) { // Other unknown error! $error = self::formatError( $err ); return $error; } // Armour for Parser::doBlockLevels() - if ( $enclose === GESHI_HEADER_DIV ) { + if( $enclose === GESHI_HEADER_DIV ) { $out = str_replace( "\n", '', $out ); } // HTML Tidy will convert tabs to spaces incorrectly (bug 30930). // But the conversion from tab to space occurs while reading the input, // before the conversion from 	 to tab, so we can armor it that way. - if ( $wgUseTidy ) { + if( $wgUseTidy ) { $out = str_replace( "\t", '	', $out ); } // Register CSS @@ -165,7 +140,7 @@ * @return array */ private static function addAttribute( $attribs, $name, $value ) { - if ( isset( $attribs[$name] ) ) { + if( isset( $attribs[$name] ) ) { $attribs[$name] = $value . ' ' . $attribs[$name]; } else { $attribs[$name] = $value; @@ -257,11 +232,9 @@ global $wgSyntaxHighlightModels, $wgUseSiteCss, $wgParser, $wgTextModelsToParse; - $highlightModels = ExtensionRegistry::getInstance()->getAttribute( 'SyntaxHighlightModels' ); - // Determine the language $model = $content->getModel(); - if ( !isset( $highlightModels[$model] ) && !isset( $wgSyntaxHighlightModels[$model] ) ) { + if ( !isset( $wgSyntaxHighlightModels[$model] ) ) { // We don't care about this model, carry on. return true; } @@ -285,25 +258,19 @@ $output = $wgParser->parse( $text, $title, $options, true, true, $revId ); } - if ( isset( $highlightModels[$model] ) ) { - $lang = $highlightModels[$model]; - } else { - // TODO: Add deprecation warning after a while? - $lang = $wgSyntaxHighlightModels[$model]; - } - + $lang = $wgSyntaxHighlightModels[$model]; // Attempt to format $geshi = self::prepare( $text, $lang ); - if ( $geshi instanceof GeSHi ) { + if( $geshi instanceof GeSHi ) { $out = $geshi->parse_code(); - if ( !$geshi->error() ) { + if( !$geshi->error() ) { // Done $output->addModuleStyles( "ext.geshi.language.$lang" ); $output->setText( "<div dir=\"ltr\">{$out}</div>" ); - if ( $wgUseSiteCss ) { + if( $wgUseSiteCss ) { $output->addModuleStyles( 'ext.geshi.local' ); } @@ -342,9 +309,9 @@ } $geshi = self::prepare( $text, $lang ); - if ( $geshi instanceof GeSHi ) { + if( $geshi instanceof GeSHi ) { $out = $geshi->parse_code(); - if ( !$geshi->error() ) { + if( !$geshi->error() ) { if ( preg_match( '/^<pre([^>]*)>/i', $out, $m ) ) { $attrs = Sanitizer::decodeTagAttributes( $m[1] ); $attrs['class'] .= ' api-pretty-content'; @@ -378,7 +345,7 @@ self::initialise(); $geshi = new GeSHi( $text, $lang ); - if ( $geshi->error() == GESHI_ERROR_NO_SUCH_LANG ) { + if( $geshi->error() == GESHI_ERROR_NO_SUCH_LANG ) { return null; } $geshi->set_encoding( 'UTF-8' ); @@ -480,7 +447,7 @@ */ private static function formatError( $error = '' ) { $html = ''; - if ( $error ) { + if( $error ) { $html .= "<p>{$error}</p>"; } $html .= '<p>' . wfMessage( 'syntaxhighlight-specify')->inContentLanguage()->escaped() @@ -498,8 +465,8 @@ private static function formatLanguages() { $langs = self::getSupportedLanguages(); $list = array(); - if ( count( $langs ) > 0 ) { - foreach ( $langs as $lang ) { + if( count( $langs ) > 0 ) { + foreach( $langs as $lang ) { $list[] = '<samp>' . htmlspecialchars( $lang ) . '</samp>'; } return '<p class="mw-collapsible mw-collapsed" style="padding: 0em 1em;">' . implode( ', ', $list ) . '</p><br style="clear: all"/>'; @@ -524,9 +491,9 @@ * @return bool */ private static function initialise() { - if ( !self::$initialised ) { - if ( !class_exists( 'GeSHi' ) ) { - require ( dirname( __FILE__ ) . '/geshi/geshi.php' ); + if( !self::$initialised ) { + if( !class_exists( 'GeSHi' ) ) { + require( dirname( __FILE__ ) . '/geshi/geshi.php' ); } self::$initialised = true; } diff --git a/SyntaxHighlight_GeSHi.langs.php b/SyntaxHighlight_GeSHi.langs.php index 535ec02..3793675 100644 --- a/SyntaxHighlight_GeSHi.langs.php +++ b/SyntaxHighlight_GeSHi.langs.php @@ -1,6 +1,5 @@ <?php -// Generated by updateLanguageList.php on Tue, 19 May 2015 23:11:43 +0000 -global $wgGeSHiSupportedLanguages; +// Generated by updateLanguageList.php on Sat, 28 Mar 2015 12:14:38 +0000 $wgGeSHiSupportedLanguages = array( "4cs", "6502acme", diff --git a/SyntaxHighlight_GeSHi.php b/SyntaxHighlight_GeSHi.php index 0c3df7d..d64dbc0 100644 --- a/SyntaxHighlight_GeSHi.php +++ b/SyntaxHighlight_GeSHi.php @@ -1,13 +1,93 @@ <?php -if ( function_exists( 'wfLoadExtension' ) ) { - wfLoadExtension( 'SyntaxHighlight_GeSHi' ); - // Keep i18n globals so mergeMessageFileList.php doesn't break - $wgMessagesDirs['SyntaxHighlight_GeSHi'] = __DIR__ . '/i18n'; - /* wfWarn( - 'Deprecated PHP entry point used for SyntaxHighlight_GeSHi extension. Please use wfLoadExtension instead, ' . - 'see https://www.mediawiki.org/wiki/Extension_registration for more details.' - ); */ - return; -} else { - die( 'This version of the SyntaxHighlight_GeSHi extension requires MediaWiki 1.25+' ); +/** + * Syntax highlighting extension for MediaWiki using GeSHi + * Copyright (C) 2005 Brion Vibber <br...@pobox.com> + * http://www.mediawiki.org/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + */ + +/** + * @file + * @ingroup Extensions + * @author Brion Vibber + * + * This extension wraps the GeSHi highlighter: http://qbnz.com/highlighter/ + * + * A language is specified like: <source lang="c">void main() {}</source> + * If you forget, or give an unsupported value, the extension spits out + * some help text and a list of all supported languages. + */ + +if( !defined( 'MEDIAWIKI' ) ) { + die(); } + +if ( version_compare( $wgVersion, '1.24', '<' ) ) { + die( "This version of SyntaxHighlight GeSHi requires MediaWiki 1.24" ); +} + +require_once __DIR__ . '/SyntaxHighlight_GeSHi.langs.php'; +require_once __DIR__ . '/geshi/geshi.php'; + +$wgExtensionCredits['parserhook'][] = array( + 'path' => __FILE__, + 'name' => 'SyntaxHighlight', + 'author' => array( 'Brion Vibber', 'Tim Starling', 'Rob Church', 'Niklas Laxström' ), + 'descriptionmsg' => 'syntaxhighlight-desc', + 'url' => 'https://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi', + 'version' => GESHI_VERSION, + 'license-name' => 'GPL-2.0+', +); + +// Change these in LocalSettings.php +$wgSyntaxHighlightDefaultLang = null; +$wgSyntaxHighlightKeywordLinks = false; + +$dir = __DIR__ . '/'; +$wgMessagesDirs['SyntaxHighlight_GeSHi'] = __DIR__ . '/i18n'; + +$wgAutoloadClasses['SyntaxHighlight_GeSHi'] = $dir . 'SyntaxHighlight_GeSHi.class.php'; +$wgAutoloadClasses['ResourceLoaderGeSHiModule'] = $dir . 'ResourceLoaderGeSHiModule.php'; +$wgAutoloadClasses['ResourceLoaderGeSHiLocalModule'] = $dir . 'ResourceLoaderGeSHiLocalModule.php'; + +$wgHooks['ResourceLoaderRegisterModules'][] = 'SyntaxHighlight_GeSHi::resourceLoaderRegisterModules'; +$wgHooks['ContentGetParserOutput'][] = 'SyntaxHighlight_GeSHi::renderHook'; +$wgHooks['ApiFormatHighlight'][] = 'SyntaxHighlight_GeSHi::apiFormatHighlight'; + +// Module to load MediaWiki:Geshi.css. +$wgResourceModules['ext.geshi.local'] = array( 'class' => 'ResourceLoaderGeSHiLocalModule' ); +// More modules are defined by SyntaxHighlight_GeSHi::resourceLoaderRegisterModules, +// one for each supported language. The general name template is 'ext.geshi.language.<lang>'. + +/** + * Map content models to the corresponding language names to be used with the highlighter. + * Pages with one of the given content models will automatically be highlighted. + */ +$wgSyntaxHighlightModels[CONTENT_MODEL_CSS] = 'css'; +$wgSyntaxHighlightModels[CONTENT_MODEL_JAVASCRIPT] = 'javascript'; + +/** + * Register parser hook + * + * @param $parser Parser + * @return bool + */ +$wgHooks['ParserFirstCallInit'][] = function ( &$parser ) { + $parser->setHook( 'source', array( 'SyntaxHighlight_GeSHi', 'parserHook' ) ); + $parser->setHook( 'syntaxhighlight', array( 'SyntaxHighlight_GeSHi', 'parserHook' ) ); + return true; +}; diff --git a/extension.json b/extension.json deleted file mode 100644 index 19809bf..0000000 --- a/extension.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "SyntaxHighlight", - "version": "1.0.8.12", - "author": [ - "Brion Vibber", - "Tim Starling", - "Rob Church", - "Niklas Laxström" - ], - "url": "https://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi", - "descriptionmsg": "syntaxhighlight-desc", - "license-name": "GPL-2.0+", - "type": "parserhook", - "callback": "SyntaxHighlight_GeSHi::registerExtension", - "MessagesDirs": { - "SyntaxHighlight_GeSHi": [ - "i18n" - ] - }, - "AutoloadClasses": { - "SyntaxHighlight_GeSHi": "SyntaxHighlight_GeSHi.class.php", - "ResourceLoaderGeSHiModule": "ResourceLoaderGeSHiModule.php", - "ResourceLoaderGeSHiLocalModule": "ResourceLoaderGeSHiLocalModule.php" - }, - "ResourceModules": { - "ext.geshi.local": { - "class": "ResourceLoaderGeSHiLocalModule" - } - }, - "Hooks": { - "ParserFirstCallInit": [ - "SyntaxHighlight_GeSHi::configureParser" - ], - "ResourceLoaderRegisterModules": [ - "SyntaxHighlight_GeSHi::resourceLoaderRegisterModules" - ], - "ContentGetParserOutput": [ - "SyntaxHighlight_GeSHi::renderHook" - ], - "ApiFormatHighlight": [ - "SyntaxHighlight_GeSHi::apiFormatHighlight" - ] - }, - "SyntaxHighlightModels": { - "css": "css", - "javascript": "javascript" - }, - "config": { - "SyntaxHighlightDefaultLang": null, - "SyntaxHighlightKeywordLinks": false, - "GeSHiSupportedLanguages" : null - } -} diff --git a/maintenance/updateLanguageList.php b/maintenance/updateLanguageList.php index fe122e9..d93b576 100644 --- a/maintenance/updateLanguageList.php +++ b/maintenance/updateLanguageList.php @@ -45,10 +45,7 @@ $langs = array_values( array_filter( $geshi->get_supported_languages( false ), 'lang_filter' ) ); sort( $langs ); $replace = array( '[' => "array(\n\t", ']' => "\n);\n", '",' => "\",\n\t" ); - $code = "<?php\n" . - $header . - "global \$wgGeSHiSupportedLanguages;\n" . - '$wgGeSHiSupportedLanguages = ' . strtr( json_encode( $langs ), $replace ); + $code = "<?php\n" . $header . '$wgGeSHiSupportedLanguages = ' . strtr( json_encode( $langs ), $replace ); file_put_contents( __DIR__ . '/../SyntaxHighlight_GeSHi.langs.php', $code ); $this->output( "Updated language list written to SyntaxHighlight_GeSHi.langs.php\n" ); } -- To view, visit https://gerrit.wikimedia.org/r/212452 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I47eab2842f195bf302de0ae3bf15beff1b48290f Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/SyntaxHighlight_GeSHi Gerrit-Branch: wmf/1.26wmf7 Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits