MediaWiki  1.29.2
MagicWord Class Reference

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

Collaboration diagram for MagicWord:

Public Member Functions

 __construct ( $id=0, $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...
 
 replaceMultiple ( $magicarr, $subject, &$result)
 $magicarr is an associative array of (magic word ID => replacement) This method uses the php feature to do several replacements at the same time, thereby gaining some efficiency. 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
 
int $mId
 #- More...
 
array $mSynonyms
 

Static Public Attributes

static $mCacheTTLs
 
static $mDoubleUnderscoreArray = null
 
static $mDoubleUnderscoreIDs
 
static $mObjects = []
 
static $mSubstIDs
 
static $mVariableIDs
 
static $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 = 0,
  $syn = [],
  $cs = false 
)

#-

Definition at line 245 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
array$array
string$value

Definition at line 683 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 320 of file MagicWord.php.

Referenced by 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 376 of file MagicWord.php.

◆ get()

◆ getBaseRegex()

MagicWord::getBaseRegex ( )

regex without the slashes and what not

Returns
string

Definition at line 445 of file MagicWord.php.

References $mBaseRegex, and initRegex().

◆ getCacheTTL()

static MagicWord::getCacheTTL (   $id)
static

Allow external reads of TTL array.

Parameters
int$id
Returns
int

Definition at line 295 of file MagicWord.php.

◆ getDoubleUnderscoreArray()

static MagicWord::getDoubleUnderscoreArray ( )
static

Get a MagicWordArray of double-underscore entities.

Returns
MagicWordArray

Definition at line 308 of file MagicWord.php.

References $mDoubleUnderscoreArray, and Hooks\run().

Referenced by InfoAction\pageInfo().

◆ getId()

MagicWord::getId ( )
Returns
int

Definition at line 700 of file MagicWord.php.

References $mId.

◆ getRegex()

MagicWord::getRegex ( )

Gets a regex representing matching the word.

Returns
string

Definition at line 393 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 407 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 420 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 433 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
array

Definition at line 285 of file MagicWord.php.

References $mSubstIDs.

◆ getSynonym()

MagicWord::getSynonym (   $i)

Accesses the synonym list directly.

Parameters
int$i
Returns
string

Definition at line 628 of file MagicWord.php.

◆ getSynonyms()

MagicWord::getSynonyms ( )
Returns
array

Definition at line 635 of file MagicWord.php.

References $mSynonyms.

◆ getVariableIDs()

static MagicWord::getVariableIDs ( )
static

Get an array of parser variable IDs.

Returns
array

Definition at line 272 of file MagicWord.php.

References $mVariableIDs, and Hooks\run().

◆ getVariableRegex()

MagicWord::getVariableRegex ( )

Matches the word, where $1 is a wildcard.

Returns
string

Definition at line 602 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 614 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 645 of file MagicWord.php.

References $mModified.

◆ initRegex()

MagicWord::initRegex ( )

Preliminary initialisation.

Access:\n private

Definition at line 344 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 693 of file MagicWord.php.

References $mCaseSensitive.

◆ load()

MagicWord::load (   $id)

Initialises this object with an ID.

Parameters
int$id
Exceptions
MWException

Definition at line 330 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 459 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 525 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 470 of file MagicWord.php.

References getRegexStart().

◆ matchStartAndRemove()

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

Definition at line 540 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 482 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 496 of file MagicWord.php.

References $matches, captcha-old\count, and getVariableStartToEndRegex().

◆ pregRemoveAndRecord()

MagicWord::pregRemoveAndRecord ( )

Used in matchAndRemove()

Returns
string

Definition at line 556 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 570 of file MagicWord.php.

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

◆ replaceMultiple()

MagicWord::replaceMultiple (   $magicarr,
  $subject,
$result 
)

$magicarr is an associative array of (magic word ID => replacement) This method uses the php feature to do several replacements at the same time, thereby gaining some efficiency.

The result is placed in the out variable $result. The return value is true if something was replaced.

Deprecated:
since 1.25, unused
Parameters
array$magicarr
string$subject
string$result
Returns
bool

Definition at line 662 of file MagicWord.php.

References as, get(), and wfDeprecated().

◆ 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 591 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

MagicWord::$mCacheTTLs
static

Definition at line 178 of file MagicWord.php.

◆ $mCaseSensitive

bool MagicWord::$mCaseSensitive

Definition at line 69 of file MagicWord.php.

Referenced by isCaseSensitive().

◆ $mDoubleUnderscoreArray

MagicWord::$mDoubleUnderscoreArray = null
static

Definition at line 241 of file MagicWord.php.

Referenced by getDoubleUnderscoreArray().

◆ $mDoubleUnderscoreIDs

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

Definition at line 219 of file MagicWord.php.

◆ $mFound

bool MagicWord::$mFound = false
private

Definition at line 93 of file MagicWord.php.

Referenced by matchAndRemove(), and matchStartAndRemove().

◆ $mId

int 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

MagicWord::$mObjects = []
static

Definition at line 240 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

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

Definition at line 235 of file MagicWord.php.

Referenced by getSubstIDs().

◆ $mSynonyms

array MagicWord::$mSynonyms

Definition at line 66 of file MagicWord.php.

Referenced by getSynonyms(), and initRegex().

◆ $mVariableIDs

MagicWord::$mVariableIDs
static

Definition at line 96 of file MagicWord.php.

Referenced by getVariableIDs().

◆ $mVariableIDsInitialised

MagicWord::$mVariableIDsInitialised = false
static

Definition at line 95 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:258
$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:459