MediaWiki  REL1_31
MagicWord Class Reference

This class encapsulates "magic words" such as "#redirect", NOTOC, etc. More...

Collaboration diagram for MagicWord:

Public Member Functions

 __construct ( $id=null, $syn=[], $cs=false)
 #- More...
 
 addToArray (&$array, $value)
 Adds all the synonyms of this MagicWord to an array, to allow quick lookup in a list of magic words. More...
 
 compareStringLength ( $s1, $s2)
 A comparison function that returns -1, 0 or 1 depending on whether the first string is longer, the same length or shorter than the second string. More...
 
 getBaseRegex ()
 regex without the slashes and what not More...
 
 getId ()
 
 getRegex ()
 Gets a regex representing matching the word. More...
 
 getRegexCase ()
 Gets the regexp case modifier to use, i.e. More...
 
 getRegexStart ()
 Gets a regex matching the word, if it is at the string start. More...
 
 getRegexStartToEnd ()
 Gets a regex matching the word from start to end of a string. More...
 
 getSynonym ( $i)
 Accesses the synonym list directly. More...
 
 getSynonyms ()
 
 getVariableRegex ()
 Matches the word, where $1 is a wildcard. More...
 
 getVariableStartToEndRegex ()
 Matches the entire string, where $1 is a wildcard. More...
 
 getWasModified ()
 Returns true if the last call to replace() or substituteCallback() returned a modified text, otherwise false. More...
 
 initRegex ()
 Preliminary initialisation. More...
 
 isCaseSensitive ()
 
 load ( $id)
 Initialises this object with an ID. More...
 
 match ( $text)
 Returns true if the text contains the word. More...
 
 matchAndRemove (&$text)
 Returns true if the text matches the word, and alters the input string, removing all instances of the word. More...
 
 matchStart ( $text)
 Returns true if the text starts with the word. More...
 
 matchStartAndRemove (&$text)
 
 matchStartToEnd ( $text)
 Returns true if the text matched the word. More...
 
 matchVariableStartToEnd ( $text)
 Returns NULL if there's no match, the value of $1 otherwise The return code is the matched string, if there's no variable part in the regex and the matched variable part ($1) if there is one. More...
 
 pregRemoveAndRecord ()
 Used in matchAndRemove() More...
 
 replace ( $replacement, $subject, $limit=-1)
 Replaces the word with something else. More...
 
 substituteCallback ( $text, $callback)
 Variable handling: {{SUBST:xxx}} style words Calls back a function to determine what to replace xxx with Input word must contain $1. More...
 

Static Public Member Functions

static clearCache ()
 Clear the self::$mObjects variable For use in parser tests. More...
 
static & get ( $id)
 Factory: creates an object representing an ID. More...
 
static getCacheTTL ( $id)
 Allow external reads of TTL array. More...
 
static getDoubleUnderscoreArray ()
 Get a MagicWordArray of double-underscore entities. More...
 
static getSubstIDs ()
 Get an array of parser substitution modifier IDs. More...
 
static getVariableIDs ()
 Get an array of parser variable IDs. More...
 

Public Attributes

bool $mCaseSensitive
 
string $mId
 #- More...
 
string[] $mSynonyms
 

Static Public Attributes

static array $mCacheTTLs
 Array of caching hints for ParserCache [ string => int ]. More...
 
static MagicWordArray $mDoubleUnderscoreArray = null
 
static string[] $mDoubleUnderscoreIDs
 
static array $mObjects = []
 [ string => MagicWord ] More...
 
static string[] $mSubstIDs
 
static string[] $mVariableIDs
 
static bool $mVariableIDsInitialised = false
 

Private Attributes

string $mBaseRegex = ''
 
bool $mFound = false
 
bool $mModified = false
 
string $mRegex = ''
 
string $mRegexStart = ''
 
string $mRegexStartToEnd = ''
 
string $mVariableRegex = ''
 
string $mVariableStartToEndRegex = ''
 

Detailed Description

This class encapsulates "magic words" such as "#redirect", NOTOC, etc.

Usage:
if (MagicWord::get( 'redirect' )->match( $text ) ) {
// some code
}

Possible future improvements:

Please avoid reading the data out of one of these objects and then writing special case code. If possible, add another match()-like function here.

To add magic words in an extension, use $magicWords in a file listed in $wgExtensionMessagesFiles[].

Example:
$magicWords['en'] = [
'magicwordkey' => [ 0, 'case_insensitive_magic_word' ],
'magicwordkey2' => [ 1, 'CASE_sensitive_magic_word2' ],
];

For magic words which are also Parser variables, add a MagicWordwgVariableIDs hook. Use string keys.

Definition at line 59 of file MagicWord.php.

Constructor & Destructor Documentation

◆ __construct()

MagicWord::__construct (   $id = null,
  $syn = [],
  $cs = false 
)

#-

Create a new MagicWord object

Use factory instead: MagicWord::get

Parameters
string$idThe internal name of the magic word
string[] | string$synsynonyms for the magic word
bool$csIf magic word is case sensitive

Definition at line 264 of file MagicWord.php.

References array().

Member Function Documentation

◆ addToArray()

MagicWord::addToArray ( $array,
  $value 
)

Adds all the synonyms of this MagicWord to an array, to allow quick lookup in a list of magic words.

Parameters
string[]&$array
string$value

Definition at line 675 of file MagicWord.php.

References $value, $wgContLang, as, and global.

◆ clearCache()

static MagicWord::clearCache ( )
static

Clear the self::$mObjects variable For use in parser tests.

Definition at line 339 of file MagicWord.php.

Referenced by ParserTestRunner\perTestSetup(), ExtraParserTest\setUp(), and WikitextContentHandlerTest\testMakeRedirectContent().

◆ compareStringLength()

MagicWord::compareStringLength (   $s1,
  $s2 
)

A comparison function that returns -1, 0 or 1 depending on whether the first string is longer, the same length or shorter than the second string.

Parameters
string$s1
string$s2
Returns
int

Definition at line 395 of file MagicWord.php.

◆ get()

◆ getBaseRegex()

MagicWord::getBaseRegex ( )

regex without the slashes and what not

Returns
string

Definition at line 464 of file MagicWord.php.

References $mBaseRegex, and initRegex().

◆ getCacheTTL()

static MagicWord::getCacheTTL (   $id)
static

Allow external reads of TTL array.

Parameters
string$id
Returns
int

Definition at line 314 of file MagicWord.php.

Referenced by Parser\braceSubstitution().

◆ getDoubleUnderscoreArray()

static MagicWord::getDoubleUnderscoreArray ( )
static

Get a MagicWordArray of double-underscore entities.

Returns
MagicWordArray

Definition at line 327 of file MagicWord.php.

References $mDoubleUnderscoreArray, and Hooks\run().

Referenced by Parser\doDoubleUnderscore(), and InfoAction\pageInfo().

◆ getId()

MagicWord::getId ( )
Returns
string

Definition at line 692 of file MagicWord.php.

References $mId.

◆ getRegex()

MagicWord::getRegex ( )

Gets a regex representing matching the word.

Returns
string

Definition at line 412 of file MagicWord.php.

References $mRegex, and initRegex().

Referenced by match(), matchAndRemove(), and replace().

◆ getRegexCase()

MagicWord::getRegexCase ( )

Gets the regexp case modifier to use, i.e.

i or nothing, to be used if one is using MagicWord::getBaseRegex(), otherwise it'll be included in the complete expression

Returns
string

Definition at line 426 of file MagicWord.php.

References initRegex().

◆ getRegexStart()

MagicWord::getRegexStart ( )

Gets a regex matching the word, if it is at the string start.

Returns
string

Definition at line 439 of file MagicWord.php.

References $mRegexStart, and initRegex().

Referenced by matchStart(), and matchStartAndRemove().

◆ getRegexStartToEnd()

MagicWord::getRegexStartToEnd ( )

Gets a regex matching the word from start to end of a string.

Returns
string
Since
1.23

Definition at line 452 of file MagicWord.php.

References $mRegexStartToEnd, and initRegex().

Referenced by matchStartToEnd().

◆ getSubstIDs()

static MagicWord::getSubstIDs ( )
static

Get an array of parser substitution modifier IDs.

Returns
string[]

Definition at line 304 of file MagicWord.php.

References $mSubstIDs.

Referenced by Parser\initialiseVariables().

◆ getSynonym()

MagicWord::getSynonym (   $i)

Accesses the synonym list directly.

Parameters
int$i
Returns
string

Definition at line 647 of file MagicWord.php.

◆ getSynonyms()

MagicWord::getSynonyms ( )
Returns
string[]

Definition at line 654 of file MagicWord.php.

References $mSynonyms.

◆ getVariableIDs()

static MagicWord::getVariableIDs ( )
static

Get an array of parser variable IDs.

Returns
string[]

Definition at line 291 of file MagicWord.php.

References $mVariableIDs, and Hooks\run().

Referenced by ApiQuerySiteinfo\appendVariables(), and Parser\initialiseVariables().

◆ getVariableRegex()

MagicWord::getVariableRegex ( )

Matches the word, where $1 is a wildcard.

Returns
string

Definition at line 621 of file MagicWord.php.

References $mVariableRegex, and initRegex().

Referenced by substituteCallback().

◆ getVariableStartToEndRegex()

MagicWord::getVariableStartToEndRegex ( )

Matches the entire string, where $1 is a wildcard.

Returns
string

Definition at line 633 of file MagicWord.php.

References $mVariableStartToEndRegex, and initRegex().

Referenced by matchVariableStartToEnd().

◆ getWasModified()

MagicWord::getWasModified ( )

Returns true if the last call to replace() or substituteCallback() returned a modified text, otherwise false.

Returns
bool

Definition at line 664 of file MagicWord.php.

References $mModified.

◆ initRegex()

MagicWord::initRegex ( )

Preliminary initialisation.

Access:\n private

Definition at line 363 of file MagicWord.php.

References $mSynonyms, and as.

Referenced by getBaseRegex(), getRegex(), getRegexCase(), getRegexStart(), getRegexStartToEnd(), getVariableRegex(), and getVariableStartToEndRegex().

◆ isCaseSensitive()

MagicWord::isCaseSensitive ( )
Returns
bool

Definition at line 685 of file MagicWord.php.

References $mCaseSensitive.

◆ load()

MagicWord::load (   $id)

Initialises this object with an ID.

Parameters
string$id
Exceptions
MWException

Definition at line 349 of file MagicWord.php.

References $wgContLang, and global.

◆ match()

MagicWord::match (   $text)

Returns true if the text contains the word.

Parameters
string$text
Returns
bool

Definition at line 478 of file MagicWord.php.

References getRegex().

Referenced by WikitextContent\matchMagicWord().

◆ matchAndRemove()

MagicWord::matchAndRemove ( $text)

Returns true if the text matches the word, and alters the input string, removing all instances of the word.

Parameters
string&$text
Returns
bool

Definition at line 544 of file MagicWord.php.

References $mFound, and getRegex().

◆ matchStart()

MagicWord::matchStart (   $text)

Returns true if the text starts with the word.

Parameters
string$text
Returns
bool

Definition at line 489 of file MagicWord.php.

References getRegexStart().

◆ matchStartAndRemove()

MagicWord::matchStartAndRemove ( $text)
Parameters
string&$text
Returns
bool

Definition at line 559 of file MagicWord.php.

References $mFound, and getRegexStart().

◆ matchStartToEnd()

MagicWord::matchStartToEnd (   $text)

Returns true if the text matched the word.

Parameters
string$text
Returns
bool
Since
1.23

Definition at line 501 of file MagicWord.php.

References getRegexStartToEnd().

◆ matchVariableStartToEnd()

MagicWord::matchVariableStartToEnd (   $text)

Returns NULL if there's no match, the value of $1 otherwise The return code is the matched string, if there's no variable part in the regex and the matched variable part ($1) if there is one.

Parameters
string$text
Returns
string

Definition at line 515 of file MagicWord.php.

References $matches, and getVariableStartToEndRegex().

◆ pregRemoveAndRecord()

MagicWord::pregRemoveAndRecord ( )

Used in matchAndRemove()

Returns
string

Definition at line 575 of file MagicWord.php.

◆ replace()

MagicWord::replace (   $replacement,
  $subject,
  $limit = -1 
)

Replaces the word with something else.

Parameters
string$replacement
string$subject
int$limit
Returns
string

Definition at line 589 of file MagicWord.php.

References $res, StringUtils\escapeRegexReplacement(), and getRegex().

◆ substituteCallback()

MagicWord::substituteCallback (   $text,
  $callback 
)

Variable handling: {{SUBST:xxx}} style words Calls back a function to determine what to replace xxx with Input word must contain $1.

Parameters
string$text
callable$callback
Returns
string

Definition at line 610 of file MagicWord.php.

References $res, and getVariableRegex().

Member Data Documentation

◆ $mBaseRegex

string MagicWord::$mBaseRegex = ''
private

Definition at line 81 of file MagicWord.php.

Referenced by getBaseRegex().

◆ $mCacheTTLs

array MagicWord::$mCacheTTLs
static

Array of caching hints for ParserCache [ string => int ].

Definition at line 183 of file MagicWord.php.

◆ $mCaseSensitive

bool MagicWord::$mCaseSensitive

Definition at line 69 of file MagicWord.php.

Referenced by isCaseSensitive().

◆ $mDoubleUnderscoreArray

MagicWordArray MagicWord::$mDoubleUnderscoreArray = null
static

Definition at line 251 of file MagicWord.php.

Referenced by getDoubleUnderscoreArray().

◆ $mDoubleUnderscoreIDs

string [] MagicWord::$mDoubleUnderscoreIDs
static
Initial value:
= [
'notoc',
'nogallery',
'forcetoc',
'toc',
'noeditsection',
'newsectionlink',
'nonewsectionlink',
'hiddencat',
'index',
'noindex',
'staticredirect',
'notitleconvert',
'nocontentconvert',
]

Definition at line 225 of file MagicWord.php.

◆ $mFound

bool MagicWord::$mFound = false
private

Definition at line 93 of file MagicWord.php.

Referenced by matchAndRemove(), and matchStartAndRemove().

◆ $mId

string MagicWord::$mId

#-

Definition at line 63 of file MagicWord.php.

Referenced by getId().

◆ $mModified

bool MagicWord::$mModified = false
private

Definition at line 90 of file MagicWord.php.

Referenced by getWasModified().

◆ $mObjects

array MagicWord::$mObjects = []
static

[ string => MagicWord ]

Definition at line 248 of file MagicWord.php.

◆ $mRegex

string MagicWord::$mRegex = ''
private

Definition at line 72 of file MagicWord.php.

Referenced by getRegex().

◆ $mRegexStart

string MagicWord::$mRegexStart = ''
private

Definition at line 75 of file MagicWord.php.

Referenced by getRegexStart().

◆ $mRegexStartToEnd

string MagicWord::$mRegexStartToEnd = ''
private

Definition at line 78 of file MagicWord.php.

Referenced by getRegexStartToEnd().

◆ $mSubstIDs

string [] MagicWord::$mSubstIDs
static
Initial value:
= [
'subst',
'safesubst',
]

Definition at line 242 of file MagicWord.php.

Referenced by getSubstIDs().

◆ $mSynonyms

string [] MagicWord::$mSynonyms

Definition at line 66 of file MagicWord.php.

Referenced by getSynonyms(), and initRegex().

◆ $mVariableIDs

string [] MagicWord::$mVariableIDs
static

Definition at line 99 of file MagicWord.php.

Referenced by getVariableIDs().

◆ $mVariableIDsInitialised

bool MagicWord::$mVariableIDsInitialised = false
static

Definition at line 96 of file MagicWord.php.

◆ $mVariableRegex

string MagicWord::$mVariableRegex = ''
private

Definition at line 84 of file MagicWord.php.

Referenced by getVariableRegex().

◆ $mVariableStartToEndRegex

string MagicWord::$mVariableStartToEndRegex = ''
private

Definition at line 87 of file MagicWord.php.

Referenced by getVariableStartToEndRegex().


The documentation for this class was generated from the following file:
MagicWord\get
static & get( $id)
Factory: creates an object representing an ID.
Definition: MagicWord.php:277
$magicWords
magicword txt Magic Words are some phrases used in the wikitext They are used for two that looks like templates but that don t accept any parameter *Parser functions(like {{fullurl:...}}, {{#special:...}}) $magicWords['en']
Definition: magicword.txt:33
MagicWord\match
match( $text)
Returns true if the text contains the word.
Definition: MagicWord.php:478