From: Santhosh Thottingal Date: Mon, 2 Jan 2012 12:21:34 +0000 (+0000) Subject: Parser can take mw.user too along with male, female for {{gender:$1|..}} X-Git-Tag: 1.31.0-rc.0~25617 X-Git-Url: http://git.heureux-cyclage.org/?a=commitdiff_plain;h=7739f06b97e2fba23310ed65642d550d17b56ed8;p=lhc%2Fweb%2Fwiklou.git Parser can take mw.user too along with male, female for {{gender:$1|..}} If the parameter passed is mw.user, use the gender from mw.user.options. If not, use the passed gender. Update the qunit tests. Update the documentation. Followup r107811 --- diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js index ee57a824e6..4abfa4ba28 100644 --- a/resources/mediawiki.language/mediawiki.language.js +++ b/resources/mediawiki.language/mediawiki.language.js @@ -98,12 +98,12 @@ mw.language = { }, /** * Provides an alternative text depending on specified gender. - * Usage {{gender:username|masculine|feminine|neutral}}. + * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}. * If second or third parameter are not specified, masculine is used. * * These details may be overriden per language. * - * @param gender string + * @param gender string male, female, or anything else for neutral. * @param forms array List of gender forms * * @return string diff --git a/resources/mediawiki/mediawiki.jqueryMsg.js b/resources/mediawiki/mediawiki.jqueryMsg.js index 1866352772..7a7c12b40f 100644 --- a/resources/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/mediawiki/mediawiki.jqueryMsg.js @@ -635,11 +635,17 @@ /** * Transform parsed structure into gender - * @param {Array} of nodes, [ {String}, {String}, {String} ... ] + * Usage {{gender:[gender| mw.user object ] | masculine|feminine|neutral}}. + * @param {Array} of nodes, [ {String|mw.User}, {String}, {String} , {String} ] * @return {String} selected gender form according to current language */ gender: function( nodes ) { - var gender = nodes[0]; + var gender; + if ( nodes[0] && nodes[0].options instanceof mw.Map ){ + gender = nodes[0].options.get( 'gender' ) + } else { + gender = nodes[0]; + } var forms = nodes.slice(1); return this.language.gender( gender, forms ); } diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index bc328b4dd6..1732d055e5 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -17,13 +17,18 @@ test( 'mw.jqueryMsg Plural', function() { test( 'mw.jqueryMsg Gender', function() { - expect( 14 ); + expect( 16 ); //TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg + var user = mw.user; + user.options.set( 'gender', 'male' ); var parser = mw.jqueryMsg.getMessageFunction(); ok( parser, 'Parser Function initialized' ); //TODO: English may not be the best language for these tests. Use a language like Arabic or Russian ok( mw.messages.set( 'gender-msg', '$1 reverted {{GENDER:$2|his|her|their}} last edit' ), 'mw.messages.set: Register' ); equal( parser( 'gender-msg', 'Bob', 'male' ) , 'Bob reverted his last edit', 'Gender masculine' ); + equal( parser( 'gender-msg', 'Bob', user ) , 'Bob reverted his last edit', 'Gender masculine' ); + user.options.set( 'gender', 'unknown' ); + equal( parser( 'gender-msg', 'They', user ) , 'They reverted their last edit', 'Gender masculine' ); equal( parser( 'gender-msg', 'Alice', 'female' ) , 'Alice reverted her last edit', 'Gender feminine' ); equal( parser( 'gender-msg', 'User' ) , 'User reverted their last edit', 'Gender neutral' ); equal( parser( 'gender-msg', 'User', 'unknown' ) , 'User reverted their last edit', 'Gender neutral' );