Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
CodeEditorHooks
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 1
 onCodeEditorGetPageLanguage
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace MediaWiki\Extension\Gadgets;
4
5use MediaWiki\Extension\CodeEditor\Hooks\CodeEditorGetPageLanguageHook;
6use MediaWiki\Title\Title;
7
8/**
9 * Hooks from CodeEditor extension,
10 * which is optional to use with this extension.
11 */
12class CodeEditorHooks implements CodeEditorGetPageLanguageHook {
13
14    /**
15     * Set the CodeEditor language for GadgetDefinition pages.
16     *
17     * The CodeEditor extension sets the default syntax highlight language based
18     * on the content model (not page title), so while gadget definitions have ".json"
19     * page titles, the fact that we use a more specific subclass as content model,
20     * means we must explicitly opt-in to JSON syntax highlighting.
21     *
22     * @param Title $title
23     * @param string|null &$lang
24     * @param string $model
25     * @param string $format
26     * @return bool
27     */
28    public function onCodeEditorGetPageLanguage( Title $title, ?string &$lang, string $model, string $format ) {
29        if ( $title->hasContentModel( 'GadgetDefinition' ) ) {
30            $lang = 'json';
31            return false;
32        }
33
34        return true;
35    }
36
37}