},
/**
* 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
/**
* 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 );
}
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' );