Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
Language
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 3
30
0.00% covered (danger)
0.00%
0 / 1
 getConverter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 setConverter
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 isValidInternalCode
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2declare( strict_types = 1 );
3
4namespace Wikimedia\Parsoid\Language;
5
6/**
7 * Base class for Language objects.
8 */
9class Language {
10
11    /** @var LanguageConverter|null */
12    private $converter;
13
14    public function getConverter(): ?LanguageConverter {
15        return $this->converter;
16    }
17
18    public function setConverter( LanguageConverter $converter ): void {
19        $this->converter = $converter;
20    }
21
22    /**
23     * Returns true if a language code string is of a valid form, whether or not it exists.
24     * This includes codes which are used solely for customisation via the MediaWiki namespace.
25     * @param string $code a MediaWiki-internal code
26     * @return bool
27     */
28    public static function isValidInternalCode( string $code ): bool {
29        static $validityCache = [];
30        if ( !isset( $validityCache[$code] ) ) {
31            $validityCache[$code] = strcspn( $code, ":/\\\000&<>'\"" ) === strlen( $code ) &&
32                // XXX Core's version also checks against
33                // !preg_match( MediaWikiTitleCodec::getTitleInvalidRegex(), $code ) &&
34                strlen( $code ) <= 128;
35        }
36        return $validityCache[$code];
37    }
38}