Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
16 / 16 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
1 / 1 |
WikiLinkParserFactory | |
100.00% |
16 / 16 |
|
100.00% |
2 / 2 |
4 | |
100.00% |
1 / 1 |
__construct | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
getWikiLinkParser | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
3 |
1 | <?php |
2 | |
3 | namespace FileImporter\Services\Wikitext; |
4 | |
5 | use FileImporter\Remote\MediaWiki\MediaWikiSourceUrlParser; |
6 | use MediaWiki\Languages\LanguageFactory; |
7 | use MediaWiki\MediaWikiServices; |
8 | use MediaWiki\Title\NamespaceInfo; |
9 | use MediaWiki\Title\TitleParser; |
10 | |
11 | /** |
12 | * @license GPL-2.0-or-later |
13 | * @author Thiemo Kreuz |
14 | */ |
15 | class WikiLinkParserFactory { |
16 | use MediaWikiSourceUrlParser; |
17 | |
18 | private TitleParser $parser; |
19 | private NamespaceInfo $namespaceInfo; |
20 | private LanguageFactory $languageFactory; |
21 | |
22 | public function __construct() { |
23 | $services = MediaWikiServices::getInstance(); |
24 | $this->parser = $services->getTitleParser(); |
25 | $this->namespaceInfo = $services->getNamespaceInfo(); |
26 | $this->languageFactory = $services->getLanguageFactory(); |
27 | } |
28 | |
29 | public function getWikiLinkParser( ?string $languageCode, string $interWikiPrefix ): WikiLinkParser { |
30 | $parser = new WikiLinkParser(); |
31 | |
32 | // Minor performance optimization: skip this step if there is nothing to unlocalize |
33 | if ( $languageCode && $languageCode !== 'en' ) { |
34 | $language = $this->languageFactory->getLanguage( $languageCode ); |
35 | $parser->registerWikiLinkCleaner( new NamespaceUnlocalizer( |
36 | new LocalizedMediaWikiNamespaceLookup( $language ), |
37 | $this->namespaceInfo |
38 | ) ); |
39 | } |
40 | |
41 | $parser->registerWikiLinkCleaner( new WikiLinkPrefixer( |
42 | $interWikiPrefix, |
43 | $this->parser |
44 | ) ); |
45 | |
46 | return $parser; |
47 | } |
48 | |
49 | } |