From ea6e1c932efe03f2b682d28c505a56788e4e413f Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Tue, 23 Jul 2013 20:33:04 +0530 Subject: [PATCH] Correct the regular expression for explicit plural forms /\d+=/ will match a12=abc. That is wrong. The plural form must start with digits. Changing it to /^\d+=/ Also avoid Regex instance creation in mediawiki.language.js, use literal regex. Follow up: I82b9067 and I50eb0c6 Bug: 51284 Change-Id: I70ad3f99ad0a2600773c005d9e9cc8238e6e6d09 --- languages/Language.php | 2 +- resources/mediawiki.language/mediawiki.language.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/languages/Language.php b/languages/Language.php index e5cab05a28..262d86fa3e 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -3616,7 +3616,7 @@ class Language { function convertPlural( $count, $forms ) { // Handle explicit n=pluralform cases foreach ( $forms as $index => $form ) { - if ( preg_match( '/\d+=/i', $form ) ) { + if ( preg_match( '/^\d+=/i', $form ) ) { $pos = strpos( $form, '=' ); if ( substr( $form, 0, $pos ) === (string) $count ) { return substr( $form, $pos + 1 ); diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js index 8cf358b8be..631d13dfb4 100644 --- a/resources/mediawiki.language/mediawiki.language.js +++ b/resources/mediawiki.language/mediawiki.language.js @@ -46,7 +46,6 @@ var language = { convertPlural: function ( count, forms ) { var pluralRules, formCount, - explicitPluralPattern = new RegExp( '\\d+=', 'i' ), form, index, equalsPosition, @@ -59,7 +58,7 @@ var language = { // Handle for explicit n= forms for ( index = 0; index < forms.length; index++ ) { form = forms[index]; - if ( explicitPluralPattern.test( form ) ) { + if ( /^\d+=/.test( form ) ) { equalsPosition = form.indexOf( '=' ); formCount = parseInt( form.substring( 0, equalsPosition ), 10 ); if ( formCount === count ) { -- 2.20.1