Extension:Code
Release status: beta | |
|---|---|
| Implementation | Tag, User interface |
| Description | Code pages, code actions and customizable code rendering. |
| Author(s) | Martin Fischer (push-ftalk) |
| Latest version | 0.1.0 |
| MediaWiki | |
| License | MIT License |
| Download | https://git.push-f.com/mw-code/ |
| |
| configurable | |
A MediaWiki extension that builds on SyntaxHighlight to provide the following (all in a configurable manner):
- shorter tags
- e.g.
<query>instead of<syntaxhighlight lang=sparql> - code actions
- e.g. automatically link the WDQS for SPARQL code blocks[1]
- code pages
- e.g. automatically higlight pages with names ending in
.rqas SPARQL (and also display the code actions for them) - customizable code display via Lua/Scribunto
- e.g. automatically link Wikidata identifiers in code blocks
Note that code actions are also linkable from other pages via the Special:CodeAction special page, e.g. Special:CodeAction/run/Example.rq attempts to execute the run action for the Example.rq code page and redirect the user accordingly.
Example configuration
[edit]$wgCode_namespacesWithCodePages[NS_MAIN] = true; $wgCode_languages[] = [ 'tag' => 'query', 'pygmentsLexer' => 'sparql', 'actions' => [ 'run' => 'https://query.wikidata.org/#$code', 'embed' => 'https://query.wikidata.org/embed.html#$code', ], 'suffix' => '.rq', ]; Customizable code display
[edit]The display of code blocks can be customized via Lua/Scribunto. For example if you specify e.g. "scribuntoModule" => "QueryCode" for a language then this extension will additionally invoke the Module:QueryCode Scribunto module for every code tag and code page. Such a module could look as follows:
local p = {} p.formatCode = function(frame) local code, tag, is_code_page = frame.args[1], frame.args[2], frame.args[3] local formattedCode = frame.args[4] formattedCode = formattedCode:gsub('[QP][0-9]+', function(m) local a = mw.html.create('a') a:attr('href', 'https://www.wikidata.org/entity/' .. m) a:wikitext(m) return tostring(a) end) return formattedCode; end p.additionalOutput = function(frame) local code, tag, is_code_page = frame.args[1], frame.args[2], frame.args[3] -- HTML returned here is displayed after the code action links end return p Note that the returned strings are not parsed as Wikitext they must already be HTML; any dangerous tags and attributes are removed via MediaWiki's builtin Sanitizer class.
Installation
[edit]- Download and place the file(s) in a directory called
Codein yourextensions/folder. - Add the following code at the bottom of your LocalSettings.php file:
wfLoadExtension( 'Code' );
Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Visit Special:CodeAction it will tell you what other configuration you need.
(If you want syntax highlighting via SyntaxHighlight, additionally add wfLoadExtension('SyntaxHighlight_GeSHi'); to your LocalSettings.php).
Footnotes
[edit]- ↑ While this can also be achieved just via MediaWiki templates, this bears the problem that
|has to be escaped as{{!}}, which can be quite annoying for languages like SPARQL that use|as an operator.
