build: Updating mediawiki/mediawiki-codesniffer to 22.0.0

Added spaces around .
Removed empty return statement which are not required
Removed return after phpunit markTestIncomplete,
which is throwing to exit the test, no need for a return

Change-Id: I2c80b965ee52ba09949e70ea9e7adfc58a1d89ce
This commit is contained in:
Umherirrender 2018-09-07 19:01:32 +02:00 committed by Krinkle
parent fc656f07ab
commit a4caa4d0c6
41 changed files with 276 additions and 273 deletions

View file

@ -2,14 +2,12 @@
<ruleset name="MediaWiki">
<rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
<exclude name="Generic.ControlStructures.InlineControlStructure" />
<exclude name="MediaWiki.Commenting.FunctionAnnotations.UnrecognizedAnnotation" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingReturn" />
<exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
<exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
<exclude name="MediaWiki.Commenting.PhpunitAnnotations.NotClassTrait" />
<exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentStart" />
<exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
<exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />

View file

@ -62,7 +62,7 @@
"jakub-onderka/php-parallel-lint": "0.9.2",
"jetbrains/phpstorm-stubs": "dev-master#38ff1a581b297f7901e961b8c923862ea80c3b96",
"justinrainbow/json-schema": "~5.2",
"mediawiki/mediawiki-codesniffer": "21.0.0",
"mediawiki/mediawiki-codesniffer": "22.0.0",
"monolog/monolog": "~1.22.1",
"nikic/php-parser": "3.1.3",
"seld/jsonlint": "1.7.1",

View file

@ -132,14 +132,14 @@ class AutoLoader {
'MediaWiki\\Auth\\' => __DIR__ . '/auth/',
'MediaWiki\\Edit\\' => __DIR__ . '/edit/',
'MediaWiki\\EditPage\\' => __DIR__ . '/editpage/',
'MediaWiki\\Linker\\' => __DIR__ .'/linker/',
'MediaWiki\\Preferences\\' => __DIR__ .'/preferences/',
'MediaWiki\\Services\\' => __DIR__ .'/services/',
'MediaWiki\\Session\\' => __DIR__ .'/session/',
'MediaWiki\\Shell\\' => __DIR__ .'/shell/',
'MediaWiki\\Sparql\\' => __DIR__ .'/sparql/',
'MediaWiki\\Storage\\' => __DIR__ .'/Storage/',
'MediaWiki\\Tidy\\' => __DIR__ .'/tidy/',
'MediaWiki\\Linker\\' => __DIR__ . '/linker/',
'MediaWiki\\Preferences\\' => __DIR__ . '/preferences/',
'MediaWiki\\Services\\' => __DIR__ . '/services/',
'MediaWiki\\Session\\' => __DIR__ . '/session/',
'MediaWiki\\Shell\\' => __DIR__ . '/shell/',
'MediaWiki\\Sparql\\' => __DIR__ . '/sparql/',
'MediaWiki\\Storage\\' => __DIR__ . '/Storage/',
'MediaWiki\\Tidy\\' => __DIR__ . '/tidy/',
];
}
}

View file

@ -1689,7 +1689,7 @@ class EditPage {
// is if an extension hook aborted from inside ArticleSave.
// Render the status object into $this->hookError
// FIXME this sucks, we should just use the Status object throughout
$this->hookError = '<div class="error">' ."\n" . $status->getWikiText() .
$this->hookError = '<div class="error">' . "\n" . $status->getWikiText() .
'</div>';
return true;
}

View file

@ -1077,7 +1077,7 @@ class DerivedPageDataUpdater implements IDBAccessObject {
} else {
throw new LogicException(
'Trying to re-use DerivedPageDataUpdater with revision '
.$revision->getId()
. $revision->getId()
. ', but it\'s already bound to revision '
. $this->revision->getId()
);
@ -1138,7 +1138,7 @@ class DerivedPageDataUpdater implements IDBAccessObject {
if ( !$this->user->equals( $user ) ) {
throw new LogicException(
'The Revision provided has a mismatching actor: expected '
.$this->user->getName()
. $this->user->getName()
. ', got '
. $user->getName()
);

View file

@ -525,11 +525,11 @@ class RevisionStore
$slot = $rev->getSlot( $role, RevisionRecord::RAW );
Assert::postcondition(
$slot->getContent() !== null,
$role . ' slot must have content'
$role . ' slot must have content'
);
Assert::postcondition(
$slot->hasRevision(),
$role . ' slot must have a revision associated'
$role . ' slot must have a revision associated'
);
}

View file

@ -1665,7 +1665,7 @@ class Title implements LinkTarget {
if ( $nsText === false ) {
// See T165149. Awkward, but better than erroneously linking to the main namespace.
$nsText = MediaWikiServices::getInstance()->getContentLanguage()->
getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
}
$p .= $nsText . ':';

View file

@ -856,7 +856,7 @@ class WebRequest {
* @return string
*/
public function getFullRequestURL() {
return wfGetServerUrl( PROTO_CURRENT ) . $this->getRequestURL();
return wfGetServerUrl( PROTO_CURRENT ) . $this->getRequestURL();
}
/**

View file

@ -151,7 +151,6 @@ class RollbackAction extends FormlessAction {
);
$de->showDiff( '', '' );
}
return;
}
protected function getDescription() {

View file

@ -76,7 +76,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase {
if ( !is_null( $params[$param] ) ) {
$p = $this->getModulePrefix();
$this->dieWithError(
[ 'apierror-invalidparammix-cannotusewith', $p.$param, "{$p}user" ],
[ 'apierror-invalidparammix-cannotusewith', $p . $param, "{$p}user" ],
'invalidparammix'
);
}
@ -86,7 +86,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase {
if ( !is_null( $params[$param] ) ) {
$p = $this->getModulePrefix();
$this->dieWithError(
[ 'apierror-invalidparammix-mustusewith', $p.$param, "{$p}user" ],
[ 'apierror-invalidparammix-mustusewith', $p . $param, "{$p}user" ],
'invalidparammix'
);
}

View file

@ -107,6 +107,5 @@ class PackedImageGallery extends TraditionalImageGallery {
* @param int $num
*/
public function setPerRow( $num ) {
return;
}
}

View file

@ -264,8 +264,6 @@ class JobQueueDB extends JobQueue {
if ( $flags & self::QOS_ATOMIC ) {
$dbw->endAtomic( $method );
}
return;
}
/**

View file

@ -181,7 +181,7 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
unset( $req['query']['oldid'] );
}
} elseif ( $reqType === 'transform' ) {
$req['url'] .= 'transform/'. $parts[3] . '/to/' . $parts[5];
$req['url'] .= 'transform/' . $parts[3] . '/to/' . $parts[5];
// the title
if ( isset( $parts[6] ) ) {
$req['url'] .= '/' . $parts[6];

View file

@ -259,13 +259,13 @@ class JpegHandler extends ExifBitmapHandler {
// Make a regex out of the source data to match it to an array of color
// spaces in a case-insensitive way
$colorSpaceRegex = '/'.preg_quote( $data[0], '/' ).'/i';
$colorSpaceRegex = '/' . preg_quote( $data[0], '/' ) . '/i';
if ( empty( preg_grep( $colorSpaceRegex, $colorSpaces ) ) ) {
// We can't establish that this file matches the color space, don't process it
return false;
}
$profileRegex = '/'.preg_quote( $data[1], '/' ).'/i';
$profileRegex = '/' . preg_quote( $data[1], '/' ) . '/i';
if ( empty( preg_grep( $profileRegex, $oldProfileStrings ) ) ) {
// We can't establish that this file has the expected ICC profile, don't process it
return false;

View file

@ -355,7 +355,7 @@ class Article implements Page {
if ( $this->mRevision !== null ) {
// Revision title doesn't match the page title given?
if ( $this->mPage->getId() != $this->mRevision->getPage() ) {
$function = get_class( $this->mPage ). '::newFromID';
$function = get_class( $this->mPage ) . '::newFromID';
$this->mPage = $function( $this->mRevision->getPage() );
}
}
@ -817,6 +817,7 @@ class Article implements Page {
// Note that the ArticleViewHeader hook is allowed to set $outputDone to a
// ParserOutput instance.
$pOutput = ( $outputDone instanceof ParserOutput )
// phpcs:ignore MediaWiki.Usage.NestedInlineTernary.UnparenthesizedTernary -- FIXME T203805
? $outputDone // object fetched by hook
: $this->mParserOutput ?: null; // ParserOutput or null, avoid false

View file

@ -266,7 +266,7 @@ class ImageHistoryList extends ContextSource {
} else {
$row .=
'<td dir="' . MediaWikiServices::getInstance()->getContentLanguage()->getDir() .
'">' . Linker::formatComment( $description, $this->title ) . '</td>';
'">' . Linker::formatComment( $description, $this->title ) . '</td>';
}
$rowClass = null;

View file

@ -1088,7 +1088,7 @@ class PPFrame_Hash implements PPFrame {
} elseif ( is_array( $contextNode ) ) {
// Node descriptor array
if ( count( $contextNode ) !== 2 ) {
throw new MWException( __METHOD__.
throw new MWException( __METHOD__ .
': found an array where a node descriptor should be' );
}
list( $contextName, $contextChildren ) = $contextNode;
@ -1786,7 +1786,7 @@ class PPNode_Hash_Tree implements PPNode {
$class = self::class;
}
} else {
throw new MWException( __METHOD__.': invalid node descriptor' );
throw new MWException( __METHOD__ . ': invalid node descriptor' );
}
return new $class( $store, $index );
}
@ -2206,7 +2206,7 @@ class PPNode_Hash_Attr implements PPNode {
public function __construct( array $store, $index ) {
$descriptor = $store[$index];
if ( $descriptor[PPNode_Hash_Tree::NAME][0] !== '@' ) {
throw new MWException( __METHOD__.': invalid name in attribute descriptor' );
throw new MWException( __METHOD__ . ': invalid name in attribute descriptor' );
}
$this->name = substr( $descriptor[PPNode_Hash_Tree::NAME], 1 );
$this->value = $descriptor[PPNode_Hash_Tree::CHILDREN][0];

View file

@ -1223,7 +1223,7 @@ MESSAGE;
if ( self::inDebugMode() ) {
$scripts = new XmlJsCode( "function ( $, jQuery, require, module ) {\n{$scripts->value}\n}" );
} else {
$scripts = new XmlJsCode( 'function($,jQuery,require,module){'. $scripts->value . '}' );
$scripts = new XmlJsCode( 'function($,jQuery,require,module){' . $scripts->value . '}' );
}
} elseif ( !is_string( $scripts ) && !is_array( $scripts ) ) {
throw new MWException( 'Invalid scripts error. Array of URLs or string of code expected.' );

View file

@ -117,7 +117,7 @@ class ResourceLoaderSkinModule extends ResourceLoaderFileModule {
}
// Because PHP can't have floats as array keys
uksort( $logosPerDppx, function ( $a , $b ) {
uksort( $logosPerDppx, function ( $a, $b ) {
$a = floatval( $a );
$b = floatval( $b );
// Sort from smallest to largest (e.g. 1x, 1.5x, 2x)

View file

@ -1127,7 +1127,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
if ( !$signupendMsg->isDisabled() ) {
$usingHTTPS = $this->getRequest()->getProtocol() === 'https';
$signupendText = ( $usingHTTPS && !$signupendHttpsMsg->isBlank() )
? $signupendHttpsMsg ->parse() : $signupendMsg->parse();
? $signupendHttpsMsg->parse() : $signupendMsg->parse();
$fieldDefinitions['signupend'] = [
'type' => 'info',
'raw' => true,

View file

@ -172,7 +172,7 @@ class PreferencesFormOOUI extends OOUIHTMLForm {
'div',
[
'class' =>
'oo-ui-widget oo-ui-widget-enabled oo-ui-optionWidget '.
'oo-ui-widget oo-ui-widget-enabled oo-ui-optionWidget ' .
'oo-ui-tabOptionWidget oo-ui-labelElement' .
( $i === 0 ? ' oo-ui-optionWidget-selected' : '' )
],
@ -193,7 +193,7 @@ class PreferencesFormOOUI extends OOUIHTMLForm {
[ 'class' => 'oo-ui-layout oo-ui-panelLayout oo-ui-indexLayout-tabPanel' ],
Html::rawElement(
'div',
[ 'class' => 'oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget '.
[ 'class' => 'oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget ' .
'oo-ui-selectWidget-depressed oo-ui-tabSelectWidget' ],
implode( $fakeTabs )
)

View file

@ -1010,10 +1010,10 @@ class User implements IDBAccessObject, UserIdentity {
// Should these be merged into the title char list?
$unicodeBlacklist = '/[' .
'\x{0080}-\x{009f}' . # iso-8859-1 control chars
'\x{00a0}' . # non-breaking space
'\x{00a0}' . # non-breaking space
'\x{2000}-\x{200f}' . # various whitespace
'\x{2028}-\x{202f}' . # breaks and control chars
'\x{3000}' . # ideographic space
'\x{3000}' . # ideographic space
'\x{e000}-\x{f8ff}' . # private use
']/u';
if ( preg_match( $unicodeBlacklist, $name ) ) {

View file

@ -329,21 +329,18 @@ class KkConverter extends LanguageConverter {
$text = preg_replace( $pat, $rep, $text );
}
return $text;
break;
case 'kk-latn':
case 'kk-tr':
foreach ( $this->mCyrl2Latn as $pat => $rep ) {
$text = preg_replace( $pat, $rep, $text );
}
return $text;
break;
case 'kk-cyrl':
case 'kk-kz':
foreach ( $this->mLatn2Cyrl as $pat => $rep ) {
$text = preg_replace( $pat, $rep, $text );
}
return $text;
break;
default:
return $text;
}

View file

@ -104,9 +104,9 @@ class CrhExceptions {
# load C2L and L2C bidirectional affix mappings
$this->addMappings( $this->prefixMapping,
$this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/'.self::WB, '/u' );
$this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/' . self::WB, '/u' );
$this->addMappings( $this->suffixMapping,
$this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/', self::WB.'/u' );
$this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/', self::WB . '/u' );
# tack on one-way mappings to the ends of the prefix and suffix patterns
$this->Cyrl2LatnPatterns += $this->Cyrl2LatnRegexes;
@ -388,8 +388,8 @@ class CrhExceptions {
'му([иэИЭ])' => 'mü$1',
# originally L2C, here swapped
'роль$1' => 'rol([^ü]|'.self::WB.')',
'усть$1' => 'üst([^ü]|'.self::WB.')',
'роль$1' => 'rol([^ü]|' . self::WB . ')',
'усть$1' => 'üst([^ü]|' . self::WB . ')',
# more prefixes
'ком-кок' => 'köm-kök',
@ -410,80 +410,80 @@ class CrhExceptions {
// TODO: refactor upper/lower/first capital whole words without
// regexes into simpler list
'/'.self::WB.'КъЮШ'.self::WB.'/u' => 'QYŞ',
'/'.self::WB.'ЮШ'.self::WB.'/u' => 'YŞ',
'/' . self::WB . 'КъЮШ' . self::WB . '/u' => 'QYŞ',
'/' . self::WB . 'ЮШ' . self::WB . '/u' => 'YŞ',
'/'.self::WB.'кок'.self::WB.'/u' => 'kök',
'/'.self::WB.'Кок'.self::WB.'/u' => 'Kök',
'/'.self::WB.'КОК'.self::WB.'/u' => 'KÖK',
'/'.self::WB.'ком-кок'.self::WB.'/u' => 'köm-kök',
'/'.self::WB.'Ком-кок'.self::WB.'/u' => 'Köm-kök',
'/'.self::WB.'КОМ-КОК'.self::WB.'/u' => 'KÖM-KÖK',
'/' . self::WB . 'кок' . self::WB . '/u' => 'kök',
'/' . self::WB . 'Кок' . self::WB . '/u' => 'Kök',
'/' . self::WB . 'КОК' . self::WB . '/u' => 'KÖK',
'/' . self::WB . 'ком-кок' . self::WB . '/u' => 'köm-kök',
'/' . self::WB . 'Ком-кок' . self::WB . '/u' => 'Köm-kök',
'/' . self::WB . 'КОМ-КОК' . self::WB . '/u' => 'KÖM-KÖK',
'/'.self::WB.'коп'.self::WB.'/u' => 'köp',
'/'.self::WB.'Коп'.self::WB.'/u' => 'Köp',
'/'.self::WB.'КОП'.self::WB.'/u' => 'KÖP',
'/' . self::WB . 'коп' . self::WB . '/u' => 'köp',
'/' . self::WB . 'Коп' . self::WB . '/u' => 'Köp',
'/' . self::WB . 'КОП' . self::WB . '/u' => 'KÖP',
'/'.self::WB.'курк'.self::WB.'/u' => 'kürk',
'/'.self::WB.'Курк'.self::WB.'/u' => 'Kürk',
'/'.self::WB.'КУРК'.self::WB.'/u' => 'KÜRK',
'/' . self::WB . 'курк' . self::WB . '/u' => 'kürk',
'/' . self::WB . 'Курк' . self::WB . '/u' => 'Kürk',
'/' . self::WB . 'КУРК' . self::WB . '/u' => 'KÜRK',
'/'.self::WB.'ог'.self::WB.'/u' => 'ög',
'/'.self::WB.'Ог'.self::WB.'/u' => 'Ög',
'/'.self::WB.'ОГ'.self::WB.'/u' => 'ÖG',
'/' . self::WB . 'ог' . self::WB . '/u' => 'ög',
'/' . self::WB . 'Ог' . self::WB . '/u' => 'Ög',
'/' . self::WB . 'ОГ' . self::WB . '/u' => 'ÖG',
'/'.self::WB.'юрип'.self::WB.'/u' => 'yürip',
'/'.self::WB.'Юрип'.self::WB.'/u' => 'Yürip',
'/'.self::WB.'ЮРИП'.self::WB.'/u' => 'YÜRİP',
'/' . self::WB . 'юрип' . self::WB . '/u' => 'yürip',
'/' . self::WB . 'Юрип' . self::WB . '/u' => 'Yürip',
'/' . self::WB . 'ЮРИП' . self::WB . '/u' => 'YÜRİP',
'/'.self::WB.'юз'.self::WB.'/u' => 'yüz',
'/'.self::WB.'Юз'.self::WB.'/u' => 'Yüz',
'/'.self::WB.'ЮЗ'.self::WB.'/u' => 'YÜZ',
'/' . self::WB . 'юз' . self::WB . '/u' => 'yüz',
'/' . self::WB . 'Юз' . self::WB . '/u' => 'Yüz',
'/' . self::WB . 'ЮЗ' . self::WB . '/u' => 'YÜZ',
'/'.self::WB.'юк'.self::WB.'/u' => 'yük',
'/'.self::WB.'Юк'.self::WB.'/u' => 'Yük',
'/'.self::WB.'ЮК'.self::WB.'/u' => 'YÜK',
'/' . self::WB . 'юк' . self::WB . '/u' => 'yük',
'/' . self::WB . 'Юк' . self::WB . '/u' => 'Yük',
'/' . self::WB . 'ЮК' . self::WB . '/u' => 'YÜK',
'/'.self::WB.'буюп'.self::WB.'/u' => 'büyüp',
'/'.self::WB.'Буюп'.self::WB.'/u' => 'Büyüp',
'/'.self::WB.'БУЮП'.self::WB.'/u' => 'BÜYÜP',
'/' . self::WB . 'буюп' . self::WB . '/u' => 'büyüp',
'/' . self::WB . 'Буюп' . self::WB . '/u' => 'Büyüp',
'/' . self::WB . 'БУЮП' . self::WB . '/u' => 'BÜYÜP',
'/'.self::WB.'буюк'.self::WB.'/u' => 'büyük',
'/'.self::WB.'Буюк'.self::WB.'/u' => 'Büyük',
'/'.self::WB.'БУЮК'.self::WB.'/u' => 'BÜYÜK',
'/' . self::WB . 'буюк' . self::WB . '/u' => 'büyük',
'/' . self::WB . 'Буюк' . self::WB . '/u' => 'Büyük',
'/' . self::WB . 'БУЮК' . self::WB . '/u' => 'BÜYÜK',
'/'.self::WB.'джонк'.self::WB.'/u' => 'cönk',
'/'.self::WB.'Джонк'.self::WB.'/u' => 'Cönk',
'/'.self::WB.'ДЖОНК'.self::WB.'/u' => 'CÖNK',
'/'.self::WB.'джонкю'.self::WB.'/u' => 'cönkü',
'/'.self::WB.'Джонкю'.self::WB.'/u' => 'Cönkü',
'/'.self::WB.'ДЖОНКЮ'.self::WB.'/u' => 'CÖNKÜ',
'/' . self::WB . 'джонк' . self::WB . '/u' => 'cönk',
'/' . self::WB . 'Джонк' . self::WB . '/u' => 'Cönk',
'/' . self::WB . 'ДЖОНК' . self::WB . '/u' => 'CÖNK',
'/' . self::WB . 'джонкю' . self::WB . '/u' => 'cönkü',
'/' . self::WB . 'Джонкю' . self::WB . '/u' => 'Cönkü',
'/' . self::WB . 'ДЖОНКЮ' . self::WB . '/u' => 'CÖNKÜ',
'/'.self::WB.'куркчи/u' => 'kürkçi',
'/'.self::WB.'Куркчи/u' => 'Kürkçi',
'/'.self::WB.'КУРКЧИ/u' => 'KÜRKÇI',
'/' . self::WB . 'куркчи/u' => 'kürkçi',
'/' . self::WB . 'Куркчи/u' => 'Kürkçi',
'/' . self::WB . 'КУРКЧИ/u' => 'KÜRKÇI',
'/'.self::WB.'устке'.self::WB.'/u' => 'üstke',
'/'.self::WB.'Устке'.self::WB.'/u' => 'Üstke',
'/'.self::WB.'УСТКЕ'.self::WB.'/u' => 'ÜSTKE',
'/'.self::WB.'устте'.self::WB.'/u' => 'üstte',
'/'.self::WB.'Устте'.self::WB.'/u' => 'Üstte',
'/'.self::WB.'УСТТЕ'.self::WB.'/u' => 'ÜSTTE',
'/'.self::WB.'усттен'.self::WB.'/u' => 'üstten',
'/'.self::WB.'Усттен'.self::WB.'/u' => 'Üstten',
'/'.self::WB.'УСТТЕН'.self::WB.'/u' => 'ÜSTTEN',
'/' . self::WB . 'устке' . self::WB . '/u' => 'üstke',
'/' . self::WB . 'Устке' . self::WB . '/u' => 'Üstke',
'/' . self::WB . 'УСТКЕ' . self::WB . '/u' => 'ÜSTKE',
'/' . self::WB . 'устте' . self::WB . '/u' => 'üstte',
'/' . self::WB . 'Устте' . self::WB . '/u' => 'Üstte',
'/' . self::WB . 'УСТТЕ' . self::WB . '/u' => 'ÜSTTE',
'/' . self::WB . 'усттен' . self::WB . '/u' => 'üstten',
'/' . self::WB . 'Усттен' . self::WB . '/u' => 'Üstten',
'/' . self::WB . 'УСТТЕН' . self::WB . '/u' => 'ÜSTTEN',
# отдельно стоящие Ё и Я
# stand-alone Ё and Я
'/'.self::WB.'Я'.self::WB.'/u' => 'Ya',
'/'.self::WB.'Ё'.self::WB.'/u' => 'Yo',
'/' . self::WB . 'Я' . self::WB . '/u' => 'Ya',
'/' . self::WB . 'Ё' . self::WB . '/u' => 'Yo',
############################
# относятся к началу слова #
# word prefixes #
############################
'/'.self::WB.'КъЮШн/u' => 'QYŞn',
'/'.self::WB.'ЮШн/u' => 'YŞn',
'/' . self::WB . 'КъЮШн/u' => 'QYŞn',
'/' . self::WB . 'ЮШн/u' => 'YŞn',
# need to convert digraphs (гъ, къ, нъ, дж) now to match patterns
'/гъ/u' => 'ğ',
@ -496,69 +496,73 @@ class CrhExceptions {
'/Д[жЖ]/u' => 'C',
# о => ö
'/'.self::WB.'(['.Crh::C_M_CONS.'])о(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u'
=> '$1ö$2$3$4',
'/'.self::WB.'о(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ö$1$2$3',
'/'.self::WB.'(['.Crh::C_M_CONS.'])О(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u'
=> '$1Ö$2$3$4',
'/'.self::WB.'О(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ö$1$2$3',
'/' . self::WB . '([' . Crh::C_M_CONS . '])о([' . Crh::C_CONS . '])([' . Crh::C_CONS .
'])([еиэюьü])/u' => '$1ö$2$3$4',
'/' . self::WB . 'о([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ö$1$2$3',
'/' . self::WB . '([' . Crh::C_M_CONS . '])О([' . Crh::C_CONS . '])([' . Crh::C_CONS .
'])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ö$2$3$4',
'/' . self::WB . 'О([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
=> 'Ö$1$2$3',
'/'.self::WB.'(['.Crh::C_M_CONS.'])о(['.Crh::C_CONS.'])([еиэюьü])/u' => '$1ö$2$3',
'/'.self::WB.'о(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ö$1$2',
'/'.self::WB.'(['.Crh::C_M_CONS.'])О(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ö$2$3',
'/'.self::WB.'О(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ö$1$2',
'/' . self::WB . '([' . Crh::C_M_CONS . '])о([' . Crh::C_CONS . '])([еиэюьü])/u' => '$1ö$2$3',
'/' . self::WB . 'о([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ö$1$2',
'/' . self::WB . '([' . Crh::C_M_CONS . '])О([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
=> '$1Ö$2$3',
'/' . self::WB . 'О([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u' => 'Ö$1$2',
# ё => yö
'/'.self::WB.'ё(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([ьеюü])/u' => 'yö$1$2$3',
'/'.self::WB.'Ё(['.Crh::C_CONS_LC.'])(['.Crh::C_CONS_LC.'])([ьеюü])/u' => 'Yö$1$2$3',
'/'.self::WB.'Ё(['.Crh::C_CONS_UC.'])(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u' => 'YÖ$1$2$3',
'/'.self::WB.'ё(['.Crh::C_CONS.'])([ьеюü])/u' => 'yö$1$2',
'/'.self::WB.'Ё(['.Crh::C_CONS_LC.'])([ьеюü])/u' => 'Yö$1$2',
'/'.self::WB.'Ё(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u' => 'YÖ$1$2',
'/' . self::WB . 'ё([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([ьеюü])/u' => 'yö$1$2$3',
'/' . self::WB . 'Ё([' . Crh::C_CONS_LC . '])([' . Crh::C_CONS_LC . '])([ьеюü])/u' => 'Yö$1$2$3',
'/' . self::WB . 'Ё([' . Crh::C_CONS_UC . '])([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u' => 'YÖ$1$2$3',
'/' . self::WB . 'ё([' . Crh::C_CONS . '])([ьеюü])/u' => 'yö$1$2',
'/' . self::WB . 'Ё([' . Crh::C_CONS_LC . '])([ьеюü])/u' => 'Yö$1$2',
'/' . self::WB . 'Ё([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u' => 'YÖ$1$2',
# у => ü, ую => üyü
'/'.self::WB.'(['.Crh::C_M_CONS.'])у(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u'
=> '$1ü$2$3$4',
'/'.self::WB.'у(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ü$1$2$3',
'/'.self::WB.'ую(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'üyü$1$2$3',
'/'.self::WB.'(['.Crh::C_M_CONS.'])У(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u'
=> '$1Ü$2$3$4',
'/'.self::WB.'У(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ü$1$2$3',
'/'.self::WB.'Ую(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'Üyü$1$2$3',
'/'.self::WB.'УЮ(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ÜYÜ$1$2$3',
'/' . self::WB . '([' . Crh::C_M_CONS . '])у([' . Crh::C_CONS . '])([' . Crh::C_CONS .
'])([еиэюьü])/u' => '$1ü$2$3$4',
'/' . self::WB . 'у([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ü$1$2$3',
'/' . self::WB . 'ую([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'üyü$1$2$3',
'/' . self::WB . '([' . Crh::C_M_CONS . '])У([' . Crh::C_CONS . '])([' . Crh::C_CONS .
'])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ü$2$3$4',
'/' . self::WB . 'У([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
=> 'Ü$1$2$3',
'/' . self::WB . 'Ую([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'Üyü$1$2$3',
'/' . self::WB . 'УЮ([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ÜYÜ$1$2$3',
'/'.self::WB.'(['.Crh::C_M_CONS.'])у(['.Crh::C_CONS.'])([еиэюьü])/u' => '$1ü$2$3',
'/'.self::WB.'у(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ü$1$2',
'/'.self::WB.'ую(['.Crh::C_CONS.'])([еиэюьü])/u' => 'üyü$1$2',
'/'.self::WB.'(['.Crh::C_M_CONS.'])У(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ü$2$3',
'/'.self::WB.'У(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ü$1$2',
'/'.self::WB.'Ую(['.Crh::C_CONS.'])([еиэюьü])/u' => 'Üyü$1$2',
'/'.self::WB.'УЮ(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ÜYÜ$1$2',
'/' . self::WB . '([' . Crh::C_M_CONS . '])у([' . Crh::C_CONS . '])([еиэюьü])/u' => '$1ü$2$3',
'/' . self::WB . 'у([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ü$1$2',
'/' . self::WB . 'ую([' . Crh::C_CONS . '])([еиэюьü])/u' => 'üyü$1$2',
'/' . self::WB . '([' . Crh::C_M_CONS . '])У([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
=> '$1Ü$2$3',
'/' . self::WB . 'У([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u' => 'Ü$1$2',
'/' . self::WB . 'Ую([' . Crh::C_CONS . '])([еиэюьü])/u' => 'Üyü$1$2',
'/' . self::WB . 'УЮ([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ÜYÜ$1$2',
# ю => yü
'/'.self::WB.'([аыоуеиёюАЫОУЕИЁЮ]?)ю(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([ьеюü])/u'
'/' . self::WB . '([аыоуеиёюАЫОУЕИЁЮ]?)ю([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([ьеюü])/u'
=> '$1yü$2$3$4',
'/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_LC.'])(['.Crh::C_CONS_LC.'])([ьеюü])/u'
'/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_LC . '])([' . Crh::C_CONS_LC . '])([ьеюü])/u'
=> '$1Yü$2$3$4',
'/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_UC.'])(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u'
'/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_UC . '])([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u'
=> '$1YÜ$2$3$4',
'/'.self::WB.'([аыоуеиёюАЫОУЕИЁЮ]?)ю(['.Crh::C_CONS.'])([ьеюü])/u' => '$1yü$2$3',
'/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_LC.'])([ьеюü])/u' => '$1Yü$2$3',
'/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u' => '$1YÜ$2$3',
'/' . self::WB . '([аыоуеиёюАЫОУЕИЁЮ]?)ю([' . Crh::C_CONS . '])([ьеюü])/u' => '$1yü$2$3',
'/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_LC . '])([ьеюü])/u' => '$1Yü$2$3',
'/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u' => '$1YÜ$2$3',
# e => ye, я => ya
'/'.self::WB.'е/u' => 'ye',
'/'.self::WB.'Е(['.Crh::C_LC.'cğñqöü])/u' => 'Ye$1',
'/'.self::WB.'Е(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YE$1',
'/'.self::WB.'я/u' => 'ya',
'/'.self::WB.'Я(['.Crh::C_LC.'cğñqöü])/u' => 'Ya$1',
'/'.self::WB.'Я(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YA$1',
'/' . self::WB . 'е/u' => 'ye',
'/' . self::WB . 'Е([' . Crh::C_LC . 'cğñqöü])/u' => 'Ye$1',
'/' . self::WB . 'Е([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YE$1',
'/' . self::WB . 'я/u' => 'ya',
'/' . self::WB . 'Я([' . Crh::C_LC . 'cğñqöü])/u' => 'Ya$1',
'/' . self::WB . 'Я([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YA$1',
'/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])е/u' => '$1ye',
'/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е(['.Crh::C_LC.'cğñqöü])/u' => '$1Ye$2',
'/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е(['.Crh::C_UC.'CĞÑQÖÜ])/u' => '$1YE$2',
'/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е([' . Crh::C_LC . 'cğñqöü])/u' => '$1Ye$2',
'/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => '$1YE$2',
'/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])я/u' => '$1ya',
'/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я(['.Crh::C_LC.'cğñqöü])/u' => '$1Ya$2',
'/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я(['.Crh::C_UC.'CĞÑQÖÜ])/u' => '$1YA$2',
'/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я([' . Crh::C_LC . 'cğñqöü])/u' => '$1Ya$2',
'/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => '$1YA$2',
###############################
# не зависят от места в слове #
@ -576,19 +580,19 @@ class CrhExceptions {
# Ö, Ü 1-й заход: ё, ю после согласных > ö, ü
# Ö, Ü 1st instance: ё, ю after consonants > ö, ü
'/(['.Crh::C_CONS.'])ю/u' => '$1ü',
'/(['.Crh::C_CONS.'])Ю/u' => '$1Ü',
'/(['.Crh::C_CONS.'])ё/u' => '$1ö',
'/(['.Crh::C_CONS.'])Ё/u' => '$1Ö',
'/([' . Crh::C_CONS . '])ю/u' => '$1ü',
'/([' . Crh::C_CONS . '])Ю/u' => '$1Ü',
'/([' . Crh::C_CONS . '])ё/u' => '$1ö',
'/([' . Crh::C_CONS . '])Ё/u' => '$1Ö',
# остальные вхождения о, у, ё, ю
# other occurences of о, у, ё, ю
'/Ё(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YO$1',
'/Ю(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YU$1',
'/Ё([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YO$1',
'/Ю([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YU$1',
# Ц & Щ
'/Ц(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'TS$1',
'/Щ(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'ŞÇ$1',
'/Ц([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'TS$1',
'/Щ([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'ŞÇ$1',
];
$this->Latn2CyrlRegexes = [
@ -596,31 +600,31 @@ class CrhExceptions {
// TODO: refactor upper/lower/first capital whole words without
// regexes into simpler list
'/'.self::WB.'an'.self::WB.'/u' => 'ань',
'/'.self::WB.'An'.self::WB.'/u' => 'Ань',
'/'.self::WB.'AN'.self::WB.'/u' => 'АНЬ',
'/'.self::WB.'ange'.self::WB.'/u' => 'аньге',
'/'.self::WB.'Ange'.self::WB.'/u' => 'Аньге',
'/'.self::WB.'ANGE'.self::WB.'/u' => 'АНЬГЕ',
'/'.self::WB.'ande'.self::WB.'/u' => 'аньде',
'/'.self::WB.'Ande'.self::WB.'/u' => 'Аньде',
'/'.self::WB.'ANDE'.self::WB.'/u' => 'АНЬДЕ',
'/'.self::WB.'anki'.self::WB.'/u' => 'аньки',
'/'.self::WB.'Anki'.self::WB.'/u' => 'Аньки',
'/'.self::WB.'ANKİ'.self::WB.'/u' => 'АНЬКИ',
'/'.self::WB.'deral'.self::WB.'/u' => 'деръал',
'/'.self::WB.'Deral'.self::WB.'/u' => 'Деръал',
'/'.self::WB.'DERAL'.self::WB.'/u' => 'ДЕРЪАЛ',
'/'.self::WB.'kör'.self::WB.'/u' => 'кёр',
'/'.self::WB.'Kör'.self::WB.'/u' => 'Кёр',
'/'.self::WB.'KÖR'.self::WB.'/u' => 'КЁР',
'/'.self::WB.'mer'.self::WB.'/u' => 'мэр',
'/'.self::WB.'Mer'.self::WB.'/u' => 'Мэр',
'/'.self::WB.'MER'.self::WB.'/u' => 'МЭР',
'/' . self::WB . 'an' . self::WB . '/u' => 'ань',
'/' . self::WB . 'An' . self::WB . '/u' => 'Ань',
'/' . self::WB . 'AN' . self::WB . '/u' => 'АНЬ',
'/' . self::WB . 'ange' . self::WB . '/u' => 'аньге',
'/' . self::WB . 'Ange' . self::WB . '/u' => 'Аньге',
'/' . self::WB . 'ANGE' . self::WB . '/u' => 'АНЬГЕ',
'/' . self::WB . 'ande' . self::WB . '/u' => 'аньде',
'/' . self::WB . 'Ande' . self::WB . '/u' => 'Аньде',
'/' . self::WB . 'ANDE' . self::WB . '/u' => 'АНЬДЕ',
'/' . self::WB . 'anki' . self::WB . '/u' => 'аньки',
'/' . self::WB . 'Anki' . self::WB . '/u' => 'Аньки',
'/' . self::WB . 'ANKİ' . self::WB . '/u' => 'АНЬКИ',
'/' . self::WB . 'deral' . self::WB . '/u' => 'деръал',
'/' . self::WB . 'Deral' . self::WB . '/u' => 'Деръал',
'/' . self::WB . 'DERAL' . self::WB . '/u' => 'ДЕРЪАЛ',
'/' . self::WB . 'kör' . self::WB . '/u' => 'кёр',
'/' . self::WB . 'Kör' . self::WB . '/u' => 'Кёр',
'/' . self::WB . 'KÖR' . self::WB . '/u' => 'КЁР',
'/' . self::WB . 'mer' . self::WB . '/u' => 'мэр',
'/' . self::WB . 'Mer' . self::WB . '/u' => 'Мэр',
'/' . self::WB . 'MER' . self::WB . '/u' => 'МЭР',
'/'.self::WB.'cönk/u' => 'джонк',
'/'.self::WB.'Cönk/u' => 'Джонк',
'/'.self::WB.'CÖNK/u' => 'ДЖОНК',
'/' . self::WB . 'cönk/u' => 'джонк',
'/' . self::WB . 'Cönk/u' => 'Джонк',
'/' . self::WB . 'CÖNK/u' => 'ДЖОНК',
# (y)etsin -> етсин/этсин
# note that target starts with CYRILLIC е/Е!
@ -636,67 +640,77 @@ class CrhExceptions {
# буква Ё - первый заход
# расставляем Ь после согласных
'/'.self::WB.'([yY])ö(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1ö$2ь$3',
'/'.self::WB.'([yY])Ö(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1Ö$2Ь$3',
'/'.self::WB.'AQŞ([^AEI]|'.self::WB.')/u' => 'АКъШ$1',
'/' . self::WB . '([yY])ö([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> '$1ö$2ь$3',
'/' . self::WB . '([yY])Ö([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> '$1Ö$2Ь$3',
'/' . self::WB . 'AQŞ([^AEI]|' . self::WB . ')/u' => 'АКъШ$1',
# буква Ю - первый заход
# расставляем Ь после согласных
'/'.self::WB.'([yY])ü(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1ü$2ь$3',
'/'.self::WB.'([yY])Ü(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1Ü$2Ь$3',
'/'.self::WB.'([bcgkpşBCGKPŞ])ö(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
=> '$1ö$2ь$3',
'/'.self::WB.'([bcgkpşBCGKPŞ])Ö(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
=> '$1Ö$2Ь$3',
'/'.self::WB.'([bcgkpşBCGKPŞ])Ö(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
=> '$1Ö$2Ь$3',
'/'.self::WB.'([bcgkpşBCGKPŞ])ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
'/' . self::WB . '([yY])ü([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> '$1ü$2ь$3',
'/'.self::WB.'([bcgkpşBCGKPŞ])Ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
=> '$1Ü$2Ь$3',
'/'.self::WB.'([bcgkpşBCGKPŞ])Ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
'/' . self::WB . '([yY])Ü([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> '$1Ü$2Ь$3',
'/' . self::WB . '([bcgkpşBCGKPŞ])ö([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
self::WB . ')/u' => '$1ö$2ь$3',
'/' . self::WB . '([bcgkpşBCGKPŞ])Ö([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
self::WB . ')/u' => '$1Ö$2Ь$3',
'/' . self::WB . '([bcgkpşBCGKPŞ])Ö([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
self::WB . ')/u' => '$1Ö$2Ь$3',
'/' . self::WB . '([bcgkpşBCGKPŞ])ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
self::WB . ')/u' => '$1ü$2ь$3',
'/' . self::WB . '([bcgkpşBCGKPŞ])Ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
self::WB . ')/u' => '$1Ü$2Ь$3',
'/' . self::WB . '([bcgkpşBCGKPŞ])Ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
self::WB . ')/u' => '$1Ü$2Ь$3',
# ö и ü в начале слова
# случаи, когда нужен Ь
'/'.self::WB.'ö(['.Crh::L_N_CONS.'pP])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'ö$1ь$2',
'/'.self::WB.'Ö(['.Crh::L_N_CONS_LC.'p])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ö$1ь$2',
'/'.self::WB.'Ö(['.Crh::L_N_CONS_UC.'P])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ö$1Ь$2',
'/'.self::WB.'ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'ü$1ь$2',
'/'.self::WB.'Ü(['.Crh::L_N_CONS_LC.'])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ü$1ь$2',
'/'.self::WB.'Ü(['.Crh::L_N_CONS_UC.'])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ü$1Ь$2',
'/' . self::WB . 'ö([' . Crh::L_N_CONS . 'pP])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> 'ö$1ь$2',
'/' . self::WB . 'Ö([' . Crh::L_N_CONS_LC . 'p])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> 'Ö$1ь$2',
'/' . self::WB . 'Ö([' . Crh::L_N_CONS_UC . 'P])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> 'Ö$1Ь$2',
'/' . self::WB . 'ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> 'ü$1ь$2',
'/' . self::WB . 'Ü([' . Crh::L_N_CONS_LC . '])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> 'Ü$1ь$2',
'/' . self::WB . 'Ü([' . Crh::L_N_CONS_UC . '])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> 'Ü$1Ь$2',
'/ts'.self::WB.'/u' => 'ц',
'/şç'.self::WB.'/u' => 'щ',
'/Ş[çÇ]'.self::WB.'/u' => 'Щ',
'/T[sS]'.self::WB.'/u' => 'Ц',
'/ts' . self::WB . '/u' => 'ц',
'/şç' . self::WB . '/u' => 'щ',
'/Ş[çÇ]' . self::WB . '/u' => 'Щ',
'/T[sS]' . self::WB . '/u' => 'Ц',
# Ь после Л
# add Ь after Л
'/(['.Crh::L_F.'])l(['.Crh::L_CONS_LC.']|'.self::WB.')/u' => '$1ль$2',
'/(['.Crh::L_F_UC.'])L(['.Crh::L_CONS.']|'.self::WB.')/u' => '$1ЛЬ$2',
'/([' . Crh::L_F . '])l([' . Crh::L_CONS_LC . ']|' . self::WB . ')/u' => '$1ль$2',
'/([' . Crh::L_F_UC . '])L([' . Crh::L_CONS . ']|' . self::WB . ')/u' => '$1ЛЬ$2',
# относятся к началу слова
'/'.self::WB.'ts/u' => 'ц',
'/'.self::WB.'T[sS]/u' => 'Ц',
'/' . self::WB . 'ts/u' => 'ц',
'/' . self::WB . 'T[sS]/u' => 'Ц',
'/'.self::WB.'şç/u' => 'щ',
'/'.self::WB.'Ş[çÇ]/u' => 'Щ',
'/' . self::WB . 'şç/u' => 'щ',
'/' . self::WB . 'Ş[çÇ]/u' => 'Щ',
# Э
'/('.self::WB.'|['.Crh::L_VOW.'аеэяАЕЭЯ])e/u' => '$1э',
'/('.self::WB.'|['.Crh::L_VOW_UC.'АЕЭЯ])E/u' => '$1Э',
'/(' . self::WB . '|[' . Crh::L_VOW . 'аеэяАЕЭЯ])e/u' => '$1э',
'/(' . self::WB . '|[' . Crh::L_VOW_UC . 'АЕЭЯ])E/u' => '$1Э',
'/'.self::WB.'(['.Crh::L_M_CONS.'])ö/u' => '$1о',
'/'.self::WB.'(['.Crh::L_M_CONS.'])Ö/u' => '$1О',
'/'.self::WB.'(['.Crh::L_M_CONS.'])ü/u' => '$1у',
'/'.self::WB.'(['.Crh::L_M_CONS.'])Ü/u' => '$1У',
'/' . self::WB . '([' . Crh::L_M_CONS . '])ö/u' => '$1о',
'/' . self::WB . '([' . Crh::L_M_CONS . '])Ö/u' => '$1О',
'/' . self::WB . '([' . Crh::L_M_CONS . '])ü/u' => '$1у',
'/' . self::WB . '([' . Crh::L_M_CONS . '])Ü/u' => '$1У',
'/'.self::WB.'ö/u' => 'о',
'/'.self::WB.'Ö/u' => 'О',
'/'.self::WB.'ü/u' => 'у',
'/'.self::WB.'Ü/u' => 'У',
'/' . self::WB . 'ö/u' => 'о',
'/' . self::WB . 'Ö/u' => 'О',
'/' . self::WB . 'ü/u' => 'у',
'/' . self::WB . 'Ü/u' => 'У',
# некоторые исключения
# some exceptions
@ -718,10 +732,10 @@ class CrhExceptions {
'/T[sS][iİ]([^zZñÑ])/u' => 'ЦИ$1',
'/ts([ou])/u' => 'ц$1',
'/T[sS]([oOuU])/u' => 'Ц$1',
'/ts(['.Crh::L_CONS.'])/u' => 'ц$1',
'/T[sS](['.Crh::L_CONS.'])/u' => 'Ц$1',
'/(['.Crh::L_CONS.'])ts/u' => '$1ц',
'/(['.Crh::L_CONS.'])T[sS]/u' => '$1Ц',
'/ts([' . Crh::L_CONS . '])/u' => 'ц$1',
'/T[sS]([' . Crh::L_CONS . '])/u' => 'Ц$1',
'/([' . Crh::L_CONS . '])ts/u' => '$1ц',
'/([' . Crh::L_CONS . '])T[sS]/u' => '$1Ц',
'/tsиал/u' => 'циал',
'/TSИАЛ/u' => 'ЦИАЛ',
@ -730,15 +744,15 @@ class CrhExceptions {
'/[ьЬ]([iİ])/u' => '$1',
# ya & ye
'/(['.Crh::L_CONS.'])ya/u' => '$1ья',
'/(['.Crh::L_CONS.'])Y[aA]/u' => '$1ЬЯ',
'/(['.Crh::L_CONS.'])ye/u' => '$1ье',
'/(['.Crh::L_CONS.'])Y[eE]/u' => '$1ЬЕ',
'/([' . Crh::L_CONS . '])ya/u' => '$1ья',
'/([' . Crh::L_CONS . '])Y[aA]/u' => '$1ЬЯ',
'/([' . Crh::L_CONS . '])ye/u' => '$1ье',
'/([' . Crh::L_CONS . '])Y[eE]/u' => '$1ЬЕ',
# расставляем Ь перед Ё
# place Ь in front of Ё
'/(['.Crh::L_CONS.'])y[oö]/u' => '$1ьё',
'/(['.Crh::L_CONS.'])Y[oOöÖ]/u' => '$1ЬЁ',
'/([' . Crh::L_CONS . '])y[oö]/u' => '$1ьё',
'/([' . Crh::L_CONS . '])Y[oOöÖ]/u' => '$1ЬЁ',
# оставшиеся вхождения yo и yö
# remaining occurrences of yo and yö
'/y[oö]/u' => 'ё',
@ -746,8 +760,8 @@ class CrhExceptions {
# расставляем Ь перед Ю
# place Ь in front of Ю
'/(['.Crh::L_CONS.'])y[uü]/u' => '$1ью',
'/(['.Crh::L_CONS.'])Y[uUüÜ]/u' => '$1ЬЮ',
'/([' . Crh::L_CONS . '])y[uü]/u' => '$1ью',
'/([' . Crh::L_CONS . '])Y[uUüÜ]/u' => '$1ЬЮ',
# оставшиеся вхождения yu и yü
# remaining occurrences of yu and yü
'/y[uü]/u' => 'ю',
@ -758,18 +772,18 @@ class CrhExceptions {
'/[ьЬ]([aA])/u' => '$1',
# дж
'/C(['.Crh::L_UC.Crh::C_UC.'АЕЁЙОУЭЮЯ])/u' => 'ДЖ$1',
'/(['.Crh::L_UC.Crh::C_UC.'АЕЁЙОУЭЮЯ])C/u' => '$1ДЖ',
'/C([' . Crh::L_UC . Crh::C_UC . 'АЕЁЙОУЭЮЯ])/u' => 'ДЖ$1',
'/([' . Crh::L_UC . Crh::C_UC . 'АЕЁЙОУЭЮЯ])C/u' => '$1ДЖ',
# гъ, къ, нъ
'/Ğ(['.Crh::L_UC.Crh::C_UC.'])/u' => 'ГЪ$1',
'/(['.Crh::L_UC.Crh::C_UC.'Ъ])Ğ/u' => '$1ГЪ',
'/Ğ([' . Crh::L_UC . Crh::C_UC . '])/u' => 'ГЪ$1',
'/([' . Crh::L_UC . Crh::C_UC . 'Ъ])Ğ/u' => '$1ГЪ',
'/Q(['.Crh::L_UC.Crh::C_UC.'])/u' => 'КЪ$1',
'/(['.Crh::L_UC.Crh::C_UC.'Ъ])Q/u' => '$1КЪ',
'/Q([' . Crh::L_UC . Crh::C_UC . '])/u' => 'КЪ$1',
'/([' . Crh::L_UC . Crh::C_UC . 'Ъ])Q/u' => '$1КЪ',
'/Ñ(['.Crh::L_UC.Crh::C_UC.'])/u' => 'НЪ$1',
'/(['.Crh::L_UC.Crh::C_UC.'Ъ])Ñ/u' => '$1НЪ',
'/Ñ([' . Crh::L_UC . Crh::C_UC . '])/u' => 'НЪ$1',
'/([' . Crh::L_UC . Crh::C_UC . 'Ъ])Ñ/u' => '$1НЪ',
];
}

View file

@ -1669,7 +1669,6 @@ class FakeMaintenance extends Maintenance {
protected $mSelf = "FakeMaintenanceScript";
public function execute() {
return;
}
}

View file

@ -69,7 +69,7 @@ class BenchmarkTidy extends Benchmarker {
print "Median: $median ms\n";
print "Mean: $mean ms\n";
print "Maximum: $max ms\n";
print "Memory usage: " . $contLang->formatSize( memory_get_usage( true ) ) . "\n";
print "Memory usage: " . $contLang->formatSize( memory_get_usage( true ) ) . "\n";
print "Peak memory usage: " .
$contLang->formatSize( memory_get_peak_usage( true ) ) . "\n";
}

View file

@ -286,7 +286,6 @@ TEXT
}
$this->outputStatus( "\n" );
return;
}
/**

View file

@ -94,7 +94,7 @@ class CreateCommonPasswordCdb extends Maintenance {
continue;
}
if ( isset( $alreadyWritten[$line] ) ) {
$this->output( "Password '$line' already written (line " . ( $i + 1 ) .")\n" );
$this->output( "Password '$line' already written (line " . ( $i + 1 ) . ")\n" );
$skipped++;
continue;
}

View file

@ -146,12 +146,10 @@ abstract class DumpIterator extends Maintenance {
/* Stub function for processing additional options */
public function checkOptions() {
return;
}
/* Stub function for giving data about what was computed */
public function conclusions() {
return;
}
/* Core function which does whatever the maintenance script is designed to do */

View file

@ -169,7 +169,7 @@ ERROR
'user',
'user_name',
[
'user_name > ' .$dbw->addQuotes( $lastUsername ),
'user_name > ' . $dbw->addQuotes( $lastUsername ),
],
__METHOD__,
[

View file

@ -105,17 +105,16 @@ abstract class MWHttpRequestTestCase extends PHPUnit\Framework\TestCase {
$this->assertHasCookie( 'foo', 'bar', $request->getCookieJar() );
$this->markTestIncomplete( 'CookieJar does not handle deletion' );
return;
$request = MWHttpRequest::factory( 'http://httpbin.org/cookies/delete?foo' );
$cookieJar = new CookieJar();
$cookieJar->setCookie( 'foo', 'bar', [ 'domain' => 'httpbin.org' ] );
$cookieJar->setCookie( 'foo2', 'bar2', [ 'domain' => 'httpbin.org' ] );
$request->setCookieJar( $cookieJar );
$status = $request->execute();
$this->assertTrue( $status->isGood() );
$this->assertNotHasCookie( 'foo', $request->getCookieJar() );
$this->assertHasCookie( 'foo2', 'bar2', $request->getCookieJar() );
// $request = MWHttpRequest::factory( 'http://httpbin.org/cookies/delete?foo' );
// $cookieJar = new CookieJar();
// $cookieJar->setCookie( 'foo', 'bar', [ 'domain' => 'httpbin.org' ] );
// $cookieJar->setCookie( 'foo2', 'bar2', [ 'domain' => 'httpbin.org' ] );
// $request->setCookieJar( $cookieJar );
// $status = $request->execute();
// $this->assertTrue( $status->isGood() );
// $this->assertNotHasCookie( 'foo', $request->getCookieJar() );
// $this->assertHasCookie( 'foo2', 'bar2', $request->getCookieJar() );
}
public function testGetResponseHeaders() {

View file

@ -830,7 +830,7 @@ class ParserTestRunner {
* @return ParserTestResult|false false if skipped
*/
public function runTest( $test ) {
wfDebug( __METHOD__.": running {$test['desc']}" );
wfDebug( __METHOD__ . ": running {$test['desc']}" );
$opts = $this->parseOptions( $test['options'] );
$teardownGuard = $this->perTestSetup( $test );

View file

@ -1,6 +1,6 @@
<?php
require __DIR__.'/../../maintenance/Maintenance.php';
require __DIR__ . '/../../maintenance/Maintenance.php';
define( 'MW_PARSER_TEST', true );

View file

@ -1,5 +1,7 @@
<?php
// phpcs:disable MediaWiki.Commenting.PhpunitAnnotations.NotClassTrait
namespace MediaWiki\Tests\Storage;
use CommentStoreComment;

View file

@ -949,7 +949,7 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase {
/** @var Revision $rev */
$rev = $page->doEditContent(
new WikitextContent( $text ),
__METHOD__. 'a'
__METHOD__ . 'a'
)->value['revision'];
$store = MediaWikiServices::getInstance()->getRevisionStore();

View file

@ -31,7 +31,7 @@ class ComposerLockTest extends MediaWikiTestCase {
'email' => 'chad@wikimedia.org',
],
],
'description' => 'Constant Database (CDB) wrapper library for PHP. '.
'description' => 'Constant Database (CDB) wrapper library for PHP. ' .
'Provides pure-PHP fallback when dba_* functions are absent.',
],
'cssjanus/cssjanus' => [

View file

@ -51,7 +51,7 @@ class LinkRendererTest extends MediaWikiLangTestCase {
// Query added
$this->assertEquals(
'<a href="/w/index.php?title=Foobar&amp;foo=bar" '. 'title="Foobar">Foobar</a>',
'<a href="/w/index.php?title=Foobar&amp;foo=bar" ' . 'title="Foobar">Foobar</a>',
$linkRenderer->makeKnownLink( $target, null, [], [ 'foo' => 'bar' ] )
);

View file

@ -126,10 +126,10 @@ class FormatMetadataTest extends MediaWikiMediaTestCase {
],
[
[ 'Software' => [ 'x-default' => 'paint.net 4.0.12', '_type' => 'lang' ] ],
[ 'Software' => '<ul class="metadata-langlist">'.
'<li class="mw-metadata-lang-default">'.
'<span class="mw-metadata-lang-value">paint.net 4.0.12</span>'.
"</li>\n".
[ 'Software' => '<ul class="metadata-langlist">' .
'<li class="mw-metadata-lang-default">' .
'<span class="mw-metadata-lang-value">paint.net 4.0.12</span>' .
"</li>\n" .
'</ul>'
],
],

View file

@ -262,7 +262,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
// Set up objects
$module = $this->getMockBuilder( TestResourceLoaderWikiModule::class )
->setMethods( [ 'getPages' ] ) ->getMock();
->setMethods( [ 'getPages' ] )->getMock();
$module->method( 'getPages' )->willReturn( $pages );
$module::$returnFetchTitleInfo = $titleInfo;
$rl = new EmptyResourceLoader();
@ -330,7 +330,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
public function testGetContent( $expected, $title ) {
$context = $this->getResourceLoaderContext( [], new EmptyResourceLoader );
$module = $this->getMockBuilder( ResourceLoaderWikiModule::class )
->setMethods( [ 'getContentObj' ] ) ->getMock();
->setMethods( [ 'getContentObj' ] )->getMock();
$module->expects( $this->any() )
->method( 'getContentObj' )->willReturn( null );

View file

@ -105,7 +105,7 @@ JSON;
],
[
'method' => 'GET',
'userAgent' => Http::userAgent() ." SparqlClient",
'userAgent' => Http::userAgent() . " SparqlClient",
'timeout' => 30
]
],

View file

@ -461,7 +461,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
"(wl_notificationtimestamp >= 'TS111TS') OR (wl_notificationtimestamp IS NULL)" .
'))))' .
') OR ((wl_namespace = 1) AND (' .
"(((wl_title = 'AnotherDbKey') AND (".
"(((wl_title = 'AnotherDbKey') AND (" .
"(wl_notificationtimestamp >= 'TS123TS') OR (wl_notificationtimestamp IS NULL)" .
')))))';
$mockDb->expects( $this->once() )
@ -564,7 +564,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
"(wl_notificationtimestamp >= 'TS111TS') OR (wl_notificationtimestamp IS NULL)" .
'))))' .
') OR ((wl_namespace = 1) AND (' .
"(((wl_title = 'AnotherDbKey') AND (".
"(((wl_title = 'AnotherDbKey') AND (" .
"(wl_notificationtimestamp >= 'TS123TS') OR (wl_notificationtimestamp IS NULL)" .
'))))' .
') OR ' .