Deprecated: Use of MediaWiki\Parser\ParserOutput::getText was deprecated in MediaWiki 1.42. [Called from SMW\MediaWiki\Hooks\OutputPageParserOutput::getParserOutput in /home/jltryoen/www/MediaWiki/extensions/SemanticMediaWiki/src/MediaWiki/Hooks/OutputPageParserOutput.php at line 161] in /home/jltryoen/www/MediaWiki/includes/debug/MWDebug.php on line 386
MediaWiki/Mes Extensions/SyntaxHighlight — La FAQ de JLT

MediaWiki/Mes Extensions/SyntaxHighlight


MediaWiki/Mes Extensions/SyntaxHighlight
Nom SyntaxHighlight
Lien Extension:SyntaxHighlight
Github  wikimedia/mediawiki-extensions-SyntaxHighlight_GeSHi

Description

Mise en forme de code

  MediaWiki/Mes_Extensions


Nouvelle version avec pygments

La nouvelle version utilise la librairie Pygments .
Elle permet d'ajouter un langage.
Pour cela il faut modifier la librarie utilisée écrite en python et disponible sur github, voir   #
J'ai ajouté le langage Clearcase

Je l'utilise au travers du modèle Modèle:Syntaxhighlight

Syntaxe

{{syntaxhighlight | lang=php|wfLoadExtension("SyntaxHighlight_GeSHi" );}}

Résultat

wfLoadExtension("SyntaxHighlight_GeSHi" );


Comment ajouter un "lexer" à l'outil pygments

Voir  https://pygments.org/docs/lexerdevelopment/

  • Cloner la repository de pygments en local
    Le site est   pygments/pygments
    git clone https://github.com/pygments/pygments.git
  • Ajouter le lexer souhaité sous le répertoire  pygments/lexers en respectant bien les champs à remplir:
    example de fichier  clearcase.py
    class ClearcaseLexer(RegexLexer):
        """
        Lexer for (ba|k|z|)sh shell scripts.
        """
    
        name = 'Clearcase'
        mimetypes = ['application/text']
        filenames = ['*.clr']
        aliases = ['clearcase']
        url = 'https://fr.wikipedia.org/wiki/Rational_ClearCase'
        version_added = '2.19.1'
    
  • Mettre à jour pygments avec le nouveau "lexer"
    python scripts/gen_mapfiles.py
    
  • On peut ensuite soit générer un executable
    pyinstaller --onefile __main__.py
    
  • On peut aussi utiliser un lanceur python ex:
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    import re
    import sys
    from pygments.cmdline import main
    if __name__ == '__main__':
        sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
        sys.exit(main())