ParamValidator: Flag as unstable for 1.34
[lhc/web/wiklou.git] / includes / MagicWordArray.php
index 4010ec7..831d5b9 100644 (file)
  */
 
 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;
        }
 
        /**