Extension:BlueM

From BlueM
Jump to: navigation, search

A simple extension for making syntax highlighting of BlueM input files easier. It converts the tag <bluem> to <source lang="bluem">, so that the extension SyntaxHighlight can highlight the syntax.

<?php
 
$wgExtensionCredits['parserhook']['BlueM'] = array(
	'path'           => __FILE__,
	'name'           => 'BlueM',
	'author'         => array( 'Felix Froehlich'),
	'description'    => 'Converts the tag <code><nowiki><bluem></nowiki></code> to <code><nowiki><source lang="bluem"></nowiki></code> so that the extension [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi SyntaxHighlight] can highlight the syntax.',
	'url'            => 'http://wiki.bluemodel.org/index.php/Extension:BlueM',
	'version'        => '1.0',
);

$wgHooks['ParserFirstCallInit'][] = 'wfBluemParserInit';
 
// Hook our callback function into the parser
function wfBlueMParserInit( Parser $parser ) {
	$parser->setHook( 'bluem', 'wfparseBlueM' );
        // Always return true from this function. The return value does not denote
        // success or otherwise have meaning - it just must always be true.
	return true;
}
 
// Execute 
function wfparseBlueM( $input, array $args, Parser $parser, PPFrame $frame ) {
	return $parser->recursiveTagParse( "<source lang=\"bluem\">{$input}<\/source>", $frame ); // <-- repair the closing source tag before use!
}

Save the following file as bluem.php in the geshi language file directory:

<?php
/*************************************************************************************
 * bluem.php
 * --------
 * Author: Felix Froehlich (felix@bluemodel.org)
 * Copyright: (c) 2008 Felix Froehlich
 * Release Version: 1.0.8.5
 * Last Modified: $Date: 2009/10/09 11:00:00 $
 *
 * BlueM language file for GeSHi.
 *
 * CHANGES
 * -------
 *
 * TODO
 * ----
 *
 *************************************************************************************
 *
 *     This file is part of GeSHi.
 *
 *   GeSHi 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.
 *
 *   GeSHi 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 GeSHi; if not, write to the Free Software
 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 ************************************************************************************/

$language_data = array (
	'LANG_NAME' => 'bluem',
	'COMMENT_SINGLE' => array(),
	'COMMENT_MULTI' => array(),
	'COMMENT_REGEXP' => array(1 => '/^\*.*?$/mi'), //Zeile fängt mit * an
	'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
	'QUOTEMARKS' => array(),
	'ESCAPE_CHAR' => '',
	'KEYWORDS' => array(
		1 => array('J', 'N'),
		2 => array(),
		3 => array()
		),
	'SYMBOLS' => array(0 => '|'),
	'CASE_SENSITIVE' => array(
		GESHI_COMMENTS => false,
		1 => false,
		2 => false,
		3 => false,
		),
	'STYLES' => array(
		'KEYWORDS' => array(
			1 => 'color: blue;',
			2 => '',
			3 => ''
			),
		'COMMENTS' => array(
			1 => 'color: #808080; font-style:italic;',
			2 => '',
			'MULTI' => ''
			),
		'ESCAPE_CHAR' => array(
			0 => ''
			),
		'BRACKETS' => array(
			0 => ''
			),
		'STRINGS' => array(
			0 => ''
			),
		'NUMBERS' => array(
			0 => 'color: red;'
			),
		'METHODS' => array(
			1 => '',
			2 => ''
			),
		'SYMBOLS' => array(
			0 => 'color: #808080; font-style:italic;' // |-Zeichen
			),
		'REGEXPS' => array(
			1 => 'color: orange;', 		//Datum
			2 => 'color: orange;' 		//Nur Uhrzeit
			),
		'SCRIPT' => array(
			0 => '',
			1 => '',
			2 => '',
			3 => ''
			)
		),
	'URLS' => array(
		1 => '',
		2 => '',
		3 => '',
		4 => ''
		),
	'OOLANG' => false,
	'OBJECT_SPLITTERS' => array(),
	'REGEXPS' => array(
		1 => "[^\d]\d\d\.\d\d(\.\d{2,4})?(\s\d\d:\d\d)?[^\d]", 	//Datum
		2 => "[^\d]\d\d:\d\d[^\d]" 								//Nur Uhrzeit
		),
	'STRICT_MODE_APPLIES' => GESHI_NEVER,
	'SCRIPT_DELIMITERS' => array(),
	'HIGHLIGHT_STRICT_BLOCK' => array(
		0 => true,
		1 => true,
		2 => true,
		3 => true
		)
);

?>