Extension:BlueM

From BlueM
Revision as of 07:03, 8 December 2013 by Froehlich (talk | contribs) (Created page with "A simple extension for making syntax highlighting of BlueM input files easier. It converts the tag <code><nowiki><bluem></nowiki></code> to <code><nowiki><source lang="bluem">...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?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
        )
);
 
?>