Update MagicWordArray to use MagicWordFactory
Bug: T200247 Change-Id: Ie5a60b81382d7299beadc691fe4d27e931ebe0ed
This commit is contained in:
parent
72ab013be0
commit
5a16d92e04
4 changed files with 35 additions and 12 deletions
|
|
@ -23,6 +23,7 @@
|
|||
*/
|
||||
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
/**
|
||||
* Class for handling an array of magic words
|
||||
|
|
@ -32,6 +33,9 @@ class MagicWordArray {
|
|||
/** @var array */
|
||||
public $names = [];
|
||||
|
||||
/** @var MagicWordFactory */
|
||||
private $factory;
|
||||
|
||||
/** @var array */
|
||||
private $hash;
|
||||
|
||||
|
|
@ -41,9 +45,14 @@ class MagicWordArray {
|
|||
|
||||
/**
|
||||
* @param array $names
|
||||
* @param MagicWordFactory|null $factory
|
||||
*/
|
||||
public function __construct( $names = [] ) {
|
||||
public function __construct( $names = [], MagicWordFactory $factory = null ) {
|
||||
$this->names = $names;
|
||||
$this->factory = $factory;
|
||||
if ( !$factory ) {
|
||||
$this->factory = MediaWikiServices::getInstance()->getMagicWordFactory();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -75,7 +84,7 @@ class MagicWordArray {
|
|||
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 ) {
|
||||
|
|
@ -97,7 +106,7 @@ class MagicWordArray {
|
|||
$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+
|
||||
|
|
|
|||
|
|
@ -254,8 +254,18 @@ class MagicWordFactory {
|
|||
public function getDoubleUnderscoreArray() {
|
||||
if ( is_null( $this->mDoubleUnderscoreArray ) ) {
|
||||
Hooks::run( 'GetDoubleUnderscoreIDs', [ &$this->mDoubleUnderscoreIDs ] );
|
||||
$this->mDoubleUnderscoreArray = new MagicWordArray( $this->mDoubleUnderscoreIDs );
|
||||
$this->mDoubleUnderscoreArray = $this->newArray( $this->mDoubleUnderscoreIDs );
|
||||
}
|
||||
return $this->mDoubleUnderscoreArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a new MagicWordArray with provided $names
|
||||
*
|
||||
* @param array $names
|
||||
* @return MagicWordArray
|
||||
*/
|
||||
public function newArray( array $names = [] ) : MagicWordArray {
|
||||
return new MagicWordArray( $names, $this );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,7 +171,8 @@ class CoreParserFunctions {
|
|||
public static function urlencode( $parser, $s = '', $arg = null ) {
|
||||
static $magicWords = null;
|
||||
if ( is_null( $magicWords ) ) {
|
||||
$magicWords = new MagicWordArray( [ 'url_path', 'url_query', 'url_wiki' ] );
|
||||
$magicWords =
|
||||
$parser->getMagicWordFactory()->newArray( [ 'url_path', 'url_query', 'url_wiki' ] );
|
||||
}
|
||||
switch ( $magicWords->matchStartToEnd( $arg ) ) {
|
||||
// Encode as though it's a wiki page, '_' for ' '.
|
||||
|
|
@ -393,7 +394,8 @@ class CoreParserFunctions {
|
|||
|
||||
static $magicWords = null;
|
||||
if ( is_null( $magicWords ) ) {
|
||||
$magicWords = new MagicWordArray( [ 'displaytitle_noerror', 'displaytitle_noreplace' ] );
|
||||
$magicWords = $parser->getMagicWordFactory()->newArray(
|
||||
[ 'displaytitle_noerror', 'displaytitle_noreplace' ] );
|
||||
}
|
||||
$arg = $magicWords->matchStartToEnd( $uarg );
|
||||
|
||||
|
|
@ -743,7 +745,7 @@ class CoreParserFunctions {
|
|||
global $wgContLang;
|
||||
static $magicWords = null;
|
||||
if ( is_null( $magicWords ) ) {
|
||||
$magicWords = new MagicWordArray( [
|
||||
$magicWords = $parser->getMagicWordFactory()->newArray( [
|
||||
'pagesincategory_all',
|
||||
'pagesincategory_pages',
|
||||
'pagesincategory_subcats',
|
||||
|
|
@ -980,7 +982,8 @@ class CoreParserFunctions {
|
|||
public static function defaultsort( $parser, $text, $uarg = '' ) {
|
||||
static $magicWords = null;
|
||||
if ( is_null( $magicWords ) ) {
|
||||
$magicWords = new MagicWordArray( [ 'defaultsort_noerror', 'defaultsort_noreplace' ] );
|
||||
$magicWords = $parser->getMagicWordFactory()->newArray(
|
||||
[ 'defaultsort_noerror', 'defaultsort_noreplace' ] );
|
||||
}
|
||||
$arg = $magicWords->matchStartToEnd( $uarg );
|
||||
|
||||
|
|
|
|||
|
|
@ -2881,8 +2881,8 @@ class Parser {
|
|||
$variableIDs = $this->magicWordFactory->getVariableIDs();
|
||||
$substIDs = $this->magicWordFactory->getSubstIDs();
|
||||
|
||||
$this->mVariables = new MagicWordArray( $variableIDs );
|
||||
$this->mSubstWords = new MagicWordArray( $substIDs );
|
||||
$this->mVariables = $this->magicWordFactory->newArray( $variableIDs );
|
||||
$this->mSubstWords = $this->magicWordFactory->newArray( $substIDs );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -5066,7 +5066,7 @@ class Parser {
|
|||
unset( $paramMap['img_width'] );
|
||||
}
|
||||
|
||||
$mwArray = new MagicWordArray( array_keys( $paramMap ) );
|
||||
$mwArray = $this->magicWordFactory->newArray( array_keys( $paramMap ) );
|
||||
|
||||
$label = '';
|
||||
$alt = '';
|
||||
|
|
@ -5185,7 +5185,8 @@ class Parser {
|
|||
}
|
||||
}
|
||||
$this->mImageParams[$handlerClass] = $paramMap;
|
||||
$this->mImageParamsMagicArray[$handlerClass] = new MagicWordArray( array_keys( $paramMap ) );
|
||||
$this->mImageParamsMagicArray[$handlerClass] =
|
||||
$this->magicWordFactory->newArray( array_keys( $paramMap ) );
|
||||
}
|
||||
return [ $this->mImageParams[$handlerClass], $this->mImageParamsMagicArray[$handlerClass] ];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue