blob: 1486f54918301ce98218600e0465bfdcb3e371b1 (
plain)
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
|
# Extension:Code
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 linkification
e.g. automatically link Wikidata identifiers in code blocks
* code pages
e.g. automatically higlight pages with names ending in `.rq`
as SPARQL (and also display the code actions for them)
## Example configuration
```php
$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',
],
'linkifiers' => [
'/\\b[QP][0-9]+\\b/' => 'https://www.wikidata.org/entity/$1',
],
'suffix' => '.rq',
];
```
## Linking code actions
Code actions can be linked 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.
## Installation
1. Place the extension in your extensions directory.
2. Add `wfLoadExtension('Code');` to your `LocalSettings.php`.
3. 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`).
[^1]: 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.
[SyntaxHighlight]: https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SyntaxHighlight
[WDQS]: https://query.wikidata.org/
|