X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FMagicWordArray.php;h=831d5b99887fb7b00a8817f577f049f6e0669851;hb=64e8987c542b5b4a6e7660dec0abf563bb252054;hp=4010ec7585ba52f522378962296e25d45c033af7;hpb=5fa4cdf860c79b32ab6ef034c6d9420c2727f695;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/MagicWordArray.php b/includes/MagicWordArray.php index 4010ec7585..831d5b9988 100644 --- a/includes/MagicWordArray.php +++ b/includes/MagicWordArray.php @@ -23,15 +23,19 @@ */ use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; /** * Class for handling an array of magic words * @ingroup Parser */ class MagicWordArray { - /** @var array */ + /** @var string[] */ public $names = []; + /** @var MagicWordFactory */ + private $factory; + /** @var array */ private $hash; @@ -40,10 +44,12 @@ class MagicWordArray { private $regex; /** - * @param array $names + * @param string[] $names + * @param MagicWordFactory|null $factory */ - public function __construct( $names = [] ) { + public function __construct( $names = [], MagicWordFactory $factory = null ) { $this->names = $names; + $this->factory = $factory ?: MediaWikiServices::getInstance()->getMagicWordFactory(); } /** @@ -59,7 +65,7 @@ class MagicWordArray { /** * Add a number of magic words by name * - * @param array $names + * @param string[] $names */ public function addArray( $names ) { $this->names = array_merge( $this->names, array_values( $names ) ); @@ -72,14 +78,13 @@ class MagicWordArray { */ public function getHash() { if ( is_null( $this->hash ) ) { - global $wgContLang; $this->hash = [ 0 => [], 1 => [] ]; foreach ( $this->names as $name ) { - $magic = MagicWord::get( $name ); + $magic = $this->factory->get( $name ); $case = intval( $magic->isCaseSensitive() ); foreach ( $magic->getSynonyms() as $syn ) { if ( !$case ) { - $syn = $wgContLang->lc( $syn ); + $syn = $this->factory->getContentLanguage()->lc( $syn ); } $this->hash[$case][$syn] = $name; } @@ -90,14 +95,14 @@ class MagicWordArray { /** * Get the base regex - * @return array + * @return string[] */ public function getBaseRegex() { if ( is_null( $this->baseRegex ) ) { $this->baseRegex = [ 0 => '', 1 => '' ]; $allGroups = []; foreach ( $this->names as $name ) { - $magic = MagicWord::get( $name ); + $magic = $this->factory->get( $name ); $case = intval( $magic->isCaseSensitive() ); foreach ( $magic->getSynonyms() as $i => $syn ) { // Group name must start with a non-digit in PCRE 8.34+ @@ -124,7 +129,7 @@ class MagicWordArray { /** * Get an unanchored regex that does not match parameters - * @return array + * @return string[] */ public function getRegex() { if ( is_null( $this->regex ) ) { @@ -143,7 +148,7 @@ class MagicWordArray { /** * Get a regex for matching variables with parameters * - * @return string + * @return string[] */ public function getVariableRegex() { return str_replace( "\\$1", "(.*?)", $this->getRegex() ); @@ -152,7 +157,7 @@ class MagicWordArray { /** * Get a regex anchored to the start of the string that does not match parameters * - * @return array + * @return string[] */ public function getRegexStart() { $base = $this->getBaseRegex(); @@ -169,7 +174,7 @@ class MagicWordArray { /** * Get an anchored regex for matching variables with parameters * - * @return array + * @return string[] */ public function getVariableStartToEndRegex() { $base = $this->getBaseRegex(); @@ -185,7 +190,7 @@ class MagicWordArray { /** * @since 1.20 - * @return array + * @return string[] */ public function getNames() { return $this->names; @@ -259,12 +264,8 @@ class MagicWordArray { if ( isset( $hash[1][$text] ) ) { return $hash[1][$text]; } - global $wgContLang; - $lc = $wgContLang->lc( $text ); - if ( isset( $hash[0][$lc] ) ) { - return $hash[0][$lc]; - } - return false; + $lc = $this->factory->getContentLanguage()->lc( $text ); + return $hash[0][$lc] ?? false; } /**