Revert "Add extension.json, empty PHP entry point"

This reverts commit 72d1e92263.

Change-Id: I47eab2842f195bf302de0ae3bf15beff1b48290f
This commit is contained in:
Legoktm 2015-05-20 21:21:11 +00:00
parent 72d1e92263
commit 033ca20746
5 changed files with 118 additions and 128 deletions

View file

@ -29,31 +29,6 @@ class SyntaxHighlight_GeSHi {
*/ */
private static $languages = null; 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 * Parser hook
* *
@ -70,7 +45,7 @@ class SyntaxHighlight_GeSHi {
$text = preg_replace( '/^\n+/', '', $text ); $text = preg_replace( '/^\n+/', '', $text );
// Validate language // Validate language
if ( isset( $args['lang'] ) && $args['lang'] ) { if( isset( $args['lang'] ) && $args['lang'] ) {
$lang = $args['lang']; $lang = $args['lang'];
} else { } else {
// language is not specified. Check if default exists, if yes, use it. // language is not specified. Check if default exists, if yes, use it.
@ -82,12 +57,12 @@ class SyntaxHighlight_GeSHi {
} }
} }
$lang = strtolower( $lang ); $lang = strtolower( $lang );
if ( !preg_match( '/^[a-z_0-9-]*$/', $lang ) ) { if( !preg_match( '/^[a-z_0-9-]*$/', $lang ) ) {
$error = self::formatLanguageError( $text ); $error = self::formatLanguageError( $text );
return $error; return $error;
} }
$geshi = self::prepare( $text, $lang ); $geshi = self::prepare( $text, $lang );
if ( !$geshi instanceof GeSHi ) { if( !$geshi instanceof GeSHi ) {
$error = self::formatLanguageError( $text ); $error = self::formatLanguageError( $text );
return $error; return $error;
} }
@ -95,23 +70,23 @@ class SyntaxHighlight_GeSHi {
$enclose = self::getEncloseType( $args ); $enclose = self::getEncloseType( $args );
// Line numbers // Line numbers
if ( isset( $args['line'] ) ) { if( isset( $args['line'] ) ) {
$geshi->enable_line_numbers( GESHI_FANCY_LINE_NUMBERS ); $geshi->enable_line_numbers( GESHI_FANCY_LINE_NUMBERS );
} }
// Highlighting specific lines // Highlighting specific lines
if ( isset( $args['highlight'] ) ) { if( isset( $args['highlight'] ) ) {
$lines = self::parseHighlightLines( $args['highlight'] ); $lines = self::parseHighlightLines( $args['highlight'] );
if ( count( $lines ) ) { if ( count( $lines ) ) {
$geshi->highlight_lines_extra( $lines ); $geshi->highlight_lines_extra( $lines );
} }
} }
// Starting line number // Starting line number
if ( isset( $args['start'] ) ) { if( isset( $args['start'] ) ) {
$geshi->start_line_numbers_at( $args['start'] ); $geshi->start_line_numbers_at( $args['start'] );
} }
$geshi->set_header_type( $enclose ); $geshi->set_header_type( $enclose );
// Strict mode // Strict mode
if ( isset( $args['strict'] ) ) { if( isset( $args['strict'] ) ) {
$geshi->enable_strict_mode(); $geshi->enable_strict_mode();
} }
// Format // Format
@ -122,19 +97,19 @@ class SyntaxHighlight_GeSHi {
return $error; return $error;
} }
$err = $geshi->error(); $err = $geshi->error();
if ( $err ) { if( $err ) {
// Other unknown error! // Other unknown error!
$error = self::formatError( $err ); $error = self::formatError( $err );
return $error; return $error;
} }
// Armour for Parser::doBlockLevels() // Armour for Parser::doBlockLevels()
if ( $enclose === GESHI_HEADER_DIV ) { if( $enclose === GESHI_HEADER_DIV ) {
$out = str_replace( "\n", '', $out ); $out = str_replace( "\n", '', $out );
} }
// HTML Tidy will convert tabs to spaces incorrectly (bug 30930). // HTML Tidy will convert tabs to spaces incorrectly (bug 30930).
// But the conversion from tab to space occurs while reading the input, // But the conversion from tab to space occurs while reading the input,
// before the conversion from &#9; to tab, so we can armor it that way. // before the conversion from &#9; to tab, so we can armor it that way.
if ( $wgUseTidy ) { if( $wgUseTidy ) {
$out = str_replace( "\t", '&#9;', $out ); $out = str_replace( "\t", '&#9;', $out );
} }
// Register CSS // Register CSS
@ -165,7 +140,7 @@ class SyntaxHighlight_GeSHi {
* @return array * @return array
*/ */
private static function addAttribute( $attribs, $name, $value ) { private static function addAttribute( $attribs, $name, $value ) {
if ( isset( $attribs[$name] ) ) { if( isset( $attribs[$name] ) ) {
$attribs[$name] = $value . ' ' . $attribs[$name]; $attribs[$name] = $value . ' ' . $attribs[$name];
} else { } else {
$attribs[$name] = $value; $attribs[$name] = $value;
@ -257,11 +232,9 @@ class SyntaxHighlight_GeSHi {
global $wgSyntaxHighlightModels, $wgUseSiteCss, global $wgSyntaxHighlightModels, $wgUseSiteCss,
$wgParser, $wgTextModelsToParse; $wgParser, $wgTextModelsToParse;
$highlightModels = ExtensionRegistry::getInstance()->getAttribute( 'SyntaxHighlightModels' );
// Determine the language // Determine the language
$model = $content->getModel(); $model = $content->getModel();
if ( !isset( $highlightModels[$model] ) && !isset( $wgSyntaxHighlightModels[$model] ) ) { if ( !isset( $wgSyntaxHighlightModels[$model] ) ) {
// We don't care about this model, carry on. // We don't care about this model, carry on.
return true; return true;
} }
@ -285,25 +258,19 @@ class SyntaxHighlight_GeSHi {
$output = $wgParser->parse( $text, $title, $options, true, true, $revId ); $output = $wgParser->parse( $text, $title, $options, true, true, $revId );
} }
if ( isset( $highlightModels[$model] ) ) { $lang = $wgSyntaxHighlightModels[$model];
$lang = $highlightModels[$model];
} else {
// TODO: Add deprecation warning after a while?
$lang = $wgSyntaxHighlightModels[$model];
}
// Attempt to format // Attempt to format
$geshi = self::prepare( $text, $lang ); $geshi = self::prepare( $text, $lang );
if ( $geshi instanceof GeSHi ) { if( $geshi instanceof GeSHi ) {
$out = $geshi->parse_code(); $out = $geshi->parse_code();
if ( !$geshi->error() ) { if( !$geshi->error() ) {
// Done // Done
$output->addModuleStyles( "ext.geshi.language.$lang" ); $output->addModuleStyles( "ext.geshi.language.$lang" );
$output->setText( "<div dir=\"ltr\">{$out}</div>" ); $output->setText( "<div dir=\"ltr\">{$out}</div>" );
if ( $wgUseSiteCss ) { if( $wgUseSiteCss ) {
$output->addModuleStyles( 'ext.geshi.local' ); $output->addModuleStyles( 'ext.geshi.local' );
} }
@ -342,9 +309,9 @@ class SyntaxHighlight_GeSHi {
} }
$geshi = self::prepare( $text, $lang ); $geshi = self::prepare( $text, $lang );
if ( $geshi instanceof GeSHi ) { if( $geshi instanceof GeSHi ) {
$out = $geshi->parse_code(); $out = $geshi->parse_code();
if ( !$geshi->error() ) { if( !$geshi->error() ) {
if ( preg_match( '/^<pre([^>]*)>/i', $out, $m ) ) { if ( preg_match( '/^<pre([^>]*)>/i', $out, $m ) ) {
$attrs = Sanitizer::decodeTagAttributes( $m[1] ); $attrs = Sanitizer::decodeTagAttributes( $m[1] );
$attrs['class'] .= ' api-pretty-content'; $attrs['class'] .= ' api-pretty-content';
@ -378,7 +345,7 @@ class SyntaxHighlight_GeSHi {
self::initialise(); self::initialise();
$geshi = new GeSHi( $text, $lang ); $geshi = new GeSHi( $text, $lang );
if ( $geshi->error() == GESHI_ERROR_NO_SUCH_LANG ) { if( $geshi->error() == GESHI_ERROR_NO_SUCH_LANG ) {
return null; return null;
} }
$geshi->set_encoding( 'UTF-8' ); $geshi->set_encoding( 'UTF-8' );
@ -480,7 +447,7 @@ class SyntaxHighlight_GeSHi {
*/ */
private static function formatError( $error = '' ) { private static function formatError( $error = '' ) {
$html = ''; $html = '';
if ( $error ) { if( $error ) {
$html .= "<p>{$error}</p>"; $html .= "<p>{$error}</p>";
} }
$html .= '<p>' . wfMessage( 'syntaxhighlight-specify')->inContentLanguage()->escaped() $html .= '<p>' . wfMessage( 'syntaxhighlight-specify')->inContentLanguage()->escaped()
@ -498,8 +465,8 @@ class SyntaxHighlight_GeSHi {
private static function formatLanguages() { private static function formatLanguages() {
$langs = self::getSupportedLanguages(); $langs = self::getSupportedLanguages();
$list = array(); $list = array();
if ( count( $langs ) > 0 ) { if( count( $langs ) > 0 ) {
foreach ( $langs as $lang ) { foreach( $langs as $lang ) {
$list[] = '<samp>' . htmlspecialchars( $lang ) . '</samp>'; $list[] = '<samp>' . htmlspecialchars( $lang ) . '</samp>';
} }
return '<p class="mw-collapsible mw-collapsed" style="padding: 0em 1em;">' . implode( ', ', $list ) . '</p><br style="clear: all"/>'; return '<p class="mw-collapsible mw-collapsed" style="padding: 0em 1em;">' . implode( ', ', $list ) . '</p><br style="clear: all"/>';
@ -524,9 +491,9 @@ class SyntaxHighlight_GeSHi {
* @return bool * @return bool
*/ */
private static function initialise() { private static function initialise() {
if ( !self::$initialised ) { if( !self::$initialised ) {
if ( !class_exists( 'GeSHi' ) ) { if( !class_exists( 'GeSHi' ) ) {
require ( dirname( __FILE__ ) . '/geshi/geshi.php' ); require( dirname( __FILE__ ) . '/geshi/geshi.php' );
} }
self::$initialised = true; self::$initialised = true;
} }

View file

@ -1,6 +1,5 @@
<?php <?php
// Generated by updateLanguageList.php on Tue, 19 May 2015 23:11:43 +0000 // Generated by updateLanguageList.php on Sat, 28 Mar 2015 12:14:38 +0000
global $wgGeSHiSupportedLanguages;
$wgGeSHiSupportedLanguages = array( $wgGeSHiSupportedLanguages = array(
"4cs", "4cs",
"6502acme", "6502acme",

View file

@ -1,13 +1,93 @@
<?php <?php
if ( function_exists( 'wfLoadExtension' ) ) { /**
wfLoadExtension( 'SyntaxHighlight_GeSHi' ); * Syntax highlighting extension for MediaWiki using GeSHi
// Keep i18n globals so mergeMessageFileList.php doesn't break * Copyright (C) 2005 Brion Vibber <brion@pobox.com>
$wgMessagesDirs['SyntaxHighlight_GeSHi'] = __DIR__ . '/i18n'; * http://www.mediawiki.org/
/* wfWarn( *
'Deprecated PHP entry point used for SyntaxHighlight_GeSHi extension. Please use wfLoadExtension instead, ' . * This program is free software; you can redistribute it and/or modify
'see https://www.mediawiki.org/wiki/Extension_registration for more details.' * it under the terms of the GNU General Public License as published by
); */ * the Free Software Foundation; either version 2 of the License, or
return; * (at your option) any later version.
} else { *
die( 'This version of the SyntaxHighlight_GeSHi extension requires MediaWiki 1.25+' ); * 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;
};

View file

@ -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
}
}

View file

@ -45,10 +45,7 @@ class UpdateLanguageList extends Maintenance {
$langs = array_values( array_filter( $geshi->get_supported_languages( false ), 'lang_filter' ) ); $langs = array_values( array_filter( $geshi->get_supported_languages( false ), 'lang_filter' ) );
sort( $langs ); sort( $langs );
$replace = array( '[' => "array(\n\t", ']' => "\n);\n", '",' => "\",\n\t" ); $replace = array( '[' => "array(\n\t", ']' => "\n);\n", '",' => "\",\n\t" );
$code = "<?php\n" . $code = "<?php\n" . $header . '$wgGeSHiSupportedLanguages = ' . strtr( json_encode( $langs ), $replace );
$header .
"global \$wgGeSHiSupportedLanguages;\n" .
'$wgGeSHiSupportedLanguages = ' . strtr( json_encode( $langs ), $replace );
file_put_contents( __DIR__ . '/../SyntaxHighlight_GeSHi.langs.php', $code ); file_put_contents( __DIR__ . '/../SyntaxHighlight_GeSHi.langs.php', $code );
$this->output( "Updated language list written to SyntaxHighlight_GeSHi.langs.php\n" ); $this->output( "Updated language list written to SyntaxHighlight_GeSHi.langs.php\n" );
} }