MediaWiki REL1_33
NumericUppercaseCollation Class Reference

Collation that orders text with numbers "naturally", so that 'Foo 1' < 'Foo 2' < 'Foo 12'. More...

Inheritance diagram for NumericUppercaseCollation:
Collaboration diagram for NumericUppercaseCollation:

Public Member Functions

 __construct (Language $lang)
 
 getFirstLetter ( $string)
 Given a string, return the logical "first letter" to be used for grouping on category pages and so on.
 
 getSortKey ( $string)
 Given a string, convert it to a (hopefully short) key that can be used for efficient sorting.
 
- Public Member Functions inherited from UppercaseCollation
 __construct ()
 

Private Member Functions

 convertDigits ( $string)
 Convert localized digits to english digits.
 

Private Attributes

 $digitTransformLang
 

Additional Inherited Members

- Static Public Member Functions inherited from Collation
static factory ( $collationName)
 
static singleton ()
 

Detailed Description

Collation that orders text with numbers "naturally", so that 'Foo 1' < 'Foo 2' < 'Foo 12'.

Note that this only works in terms of sequences of digits, and the behavior for decimal fractions or pretty-formatted numbers may be unexpected.

Digits will be based on the wiki's content language settings. If you change the content language of a wiki you will need to run updateCollation.php –force. Only English (ASCII 0-9) and the localized version will be counted. Localized digits from other languages or weird unicode digit equivalents (e.g. 4, 𝟜, ⓸ , ⁴, etc) will not count.

Since
1.28

Definition at line 35 of file NumericUppercaseCollation.php.

Constructor & Destructor Documentation

◆ __construct()

NumericUppercaseCollation::__construct ( Language  $lang)
Parameters
Language$langHow to convert digits. For example, if given language "my" than ၇ is treated like 7.

It is expected that usually this is given the content language.

Definition at line 48 of file NumericUppercaseCollation.php.

References UppercaseCollation\$lang.

Member Function Documentation

◆ convertDigits()

NumericUppercaseCollation::convertDigits (   $string)
private

Convert localized digits to english digits.

based on Language::parseFormattedNumber but without commas.

Parameters
string$stringsortkey to unlocalize digits of
Returns
string Sortkey with all localized digits replaced with ASCII digits.

Definition at line 82 of file NumericUppercaseCollation.php.

Referenced by getFirstLetter(), and getSortKey().

◆ getFirstLetter()

NumericUppercaseCollation::getFirstLetter (   $string)

Given a string, return the logical "first letter" to be used for grouping on category pages and so on.

This has to be coordinated carefully with convertToSortkey(), or else the sorted list might jump back and forth between the same "initial letters" or other pathological behavior. For instance, if you just return the first character, but "a" sorts the same as "A" based on getSortKey(), then you might get a list like

== A ==

  • [[Aardvark]]

== a ==

  • [[antelope]]

== A ==

  • [[Ape]]

etc., assuming for the sake of argument that $wgCapitalLinks is false.

Since
1.16.3
Parameters
string$stringUTF-8 string
Returns
string UTF-8 string corresponding to the first letter of input

Reimplemented from UppercaseCollation.

Reimplemented in CustomUppercaseCollation.

Definition at line 94 of file NumericUppercaseCollation.php.

References convertDigits(), and wfMessage().

◆ getSortKey()

NumericUppercaseCollation::getSortKey (   $string)

Given a string, convert it to a (hopefully short) key that can be used for efficient sorting.

A binary sort according to the sortkeys corresponds to a logical sort of the corresponding strings. Current code expects that a line feed character should sort before all others, but has no other particular expectations (and that one can be changed if necessary).

Since
1.16.3
Parameters
string$stringUTF-8 string
Returns
string Binary sortkey

Reimplemented from UppercaseCollation.

Reimplemented in CustomUppercaseCollation.

Definition at line 53 of file NumericUppercaseCollation.php.

References $matches, and convertDigits().

Member Data Documentation

◆ $digitTransformLang

NumericUppercaseCollation::$digitTransformLang
private

Definition at line 40 of file NumericUppercaseCollation.php.


The documentation for this class was generated from the following file: