Bartosz Dziewoński has uploaded a new change for review. https://gerrit.wikimedia.org/r/98380
Change subject: JSDuck-ify /resources/mediawiki.language/* ...................................................................... JSDuck-ify /resources/mediawiki.language/* * Removed some pieces of "documentation" I couldn't make any sense of. :) * Marked some methods which looked internal as @private. * Empirically tested and added some @return value types. * Fixed format of doc comments to conform to JSDuck standards. * Added entries to categories.json and config.json. Change-Id: Ie60f72a5f277d846c09226d5af3da16b07f038c3 --- M maintenance/jsduck/categories.json M maintenance/jsduck/config.json M resources/mediawiki.language/mediawiki.cldr.js M resources/mediawiki.language/mediawiki.language.init.js M resources/mediawiki.language/mediawiki.language.js M resources/mediawiki.language/mediawiki.language.months.js M resources/mediawiki.language/mediawiki.language.numbers.js 7 files changed, 161 insertions(+), 117 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/80/98380/1 diff --git a/maintenance/jsduck/categories.json b/maintenance/jsduck/categories.json index c595980..fb38eab 100644 --- a/maintenance/jsduck/categories.json +++ b/maintenance/jsduck/categories.json @@ -36,6 +36,13 @@ { "name": "API", "classes": ["mw.Api*"] + }, + { + "name": "Language", + "classes": [ + "mw.language*", + "mw.cldr" + ] } ] }, diff --git a/maintenance/jsduck/config.json b/maintenance/jsduck/config.json index e6e0f65..cf0190f 100644 --- a/maintenance/jsduck/config.json +++ b/maintenance/jsduck/config.json @@ -21,6 +21,11 @@ "../../resources/mediawiki.action/mediawiki.action.view.postEdit.js", "../../resources/mediawiki.page/mediawiki.page.startup.js", "../../resources/mediawiki.api", + "../../resources/mediawiki.language/mediawiki.cldr.js", + "../../resources/mediawiki.language/mediawiki.language.init.js", + "../../resources/mediawiki.language/mediawiki.language.js", + "../../resources/mediawiki.language/mediawiki.language.months.js", + "../../resources/mediawiki.language/mediawiki.language.numbers.js", "../../resources/jquery/jquery.localize.js", "../../resources/jquery/jquery.spinner.js" ] diff --git a/resources/mediawiki.language/mediawiki.cldr.js b/resources/mediawiki.language/mediawiki.cldr.js index c3023cd..ecd62c5 100644 --- a/resources/mediawiki.language/mediawiki.cldr.js +++ b/resources/mediawiki.language/mediawiki.cldr.js @@ -1,15 +1,20 @@ -/** - * CLDR related utility methods. - */ ( function ( mw ) { 'use strict'; - var cldr = { + /** + * Namespace for CLDR-related utility methods. + * + * @class + * @static + */ + mw.cldr = { /** - * For the number, get the plural for index - * In case none of the rules passed, we return pluralRules.length - * That means it is the "other" form. - * @param number + * Get the plural form index for the number. + * + * In case none of the rules passed, we return `pluralRules.length` - + * that means it is the "other" form. + * + * @param {number} number * @param {Array} pluralRules * @return {number} plural form index */ @@ -23,7 +28,5 @@ return i; } }; - - mw.cldr = cldr; }( mediaWiki ) ); diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js index 937b89b..d88b6e2 100644 --- a/resources/mediawiki.language/mediawiki.language.init.js +++ b/resources/mediawiki.language/mediawiki.language.init.js @@ -1,35 +1,47 @@ -/** - * Base language object with methods for storing and getting - * language data. - */ ( function ( mw ) { - - var language = { + /** + * Base language object with methods for storing and getting + * language data. + * + * @class mw.language + */ + var language = mw.language = { /** - * @var data {Object} Language related data (keyed by language, - * contains instances of mw.Map). - * @example Set data - * <code> + * Language-related data (keyed by language, contains instances of mw.Map). Loaded dynamically + * (see ResourceLoaderLanguageDataModule in PHP docs, aka mediawiki.language.data module). + * + * To set data: + * * // Override, extend or create the language data object of 'nl' * mw.language.setData( 'nl', 'myKey', 'My value' ); * * // Set multiple values at once - * mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } ); - * </code> - * @example Get GrammarForms data for language 'nl': - * <code> + * mw.language.setData( 'nl', { foo: 'X', bar: 'Y' } ); + * + * To get GrammarForms data for language 'nl': + * * var grammarForms = mw.language.getData( 'nl', 'grammarForms' ); - * </code> + * + * Possible data keys: + * + * - `digitTransformTable` + * - `separatorTransformTable` + * - `grammarForms` + * - `pluralRules` + * - `digitGroupingPattern` + * + * @property {Object} data */ data: {}, /** - * Convenience method for retreiving language data by language code and data key, - * covering for the potential inexistance of a data object for this langiage. - * @param langCode {String} - * @param dataKey {String} - * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for - the specified langCode). + * Convenience method for retrieving language data by language code and data key, + * covering for the potential inexistence of a data object for this language. + * + * @param {string} langCode + * @param {string} dataKey + * @return Value stored in the mw.Map (or `undefined` if there is no map for the specified + * langCode). */ getData: function ( langCode, dataKey ) { var langData = language.data; @@ -43,9 +55,9 @@ * Convenience method for setting language data by language code and data key. * Creates the data mw.Map if there isn't one for the specified language already. * - * @param langCode {String} - * @param dataKey {String|Object} Key or object of key/values. - * @param value {mixed} Value for dataKey, ignored if dataKey is an object. + * @param {string} langCode + * @param {string|Object} dataKey Key or object of key/values. + * @param value Value for dataKey, ignored if dataKey is an object. */ setData: function ( langCode, dataKey, value ) { var langData = language.data; @@ -55,7 +67,5 @@ langData[langCode].set( dataKey, value ); } }; - - mw.language = language; }( mediaWiki ) ); diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js index 631d13d..971ca9e 100644 --- a/resources/mediawiki.language/mediawiki.language.js +++ b/resources/mediawiki.language/mediawiki.language.js @@ -1,22 +1,23 @@ +( function ( mw, $ ) { + /** * Localized Language support attempts to mirror some of the functionality of * Language.php in MediaWiki. + * * This adds methods for transforming message text. + * + * @class mw.language */ -( function ( mw, $ ) { - -var language = { +$.extend( mw.language, { /** * Process the PLURAL template substitution * - * @param {object} template Template object - * @format template - * { - * 'title': [title of template], - * 'parameters': [template parameters] - * } - * @example {{Template:title|params}} + * @param {Object} template Template object + * @param {string} template.title + * @param {Array} template.parameters + * @return {string} + * @private */ procPLURAL: function ( template ) { if ( template.title && template.parameters && mw.language.convertPlural ) { @@ -39,9 +40,9 @@ /** * Plural form transformations, needed for some languages. * - * @param count integer Non-localized quantifier - * @param forms array List of plural forms - * @return string Correct form for quantifier in this language + * @param {number} count Non-localized quantifier + * @param {Array} forms List of plural forms + * @return {string} Correct form for quantifier in this language */ convertPlural: function ( count, forms ) { var pluralRules, @@ -86,9 +87,10 @@ /** * Pads an array to a specific length by copying the last one element. * - * @param forms array Number of forms given to convertPlural - * @param count integer Number of forms required - * @return array Padded array of forms + * @param {Array} forms Number of forms given to convertPlural + * @param {number} count Number of forms required + * @return {Array} Padded array of forms + * @private */ preConvertPlural: function ( forms, count ) { while ( forms.length < count ) { @@ -99,14 +101,13 @@ /** * Provides an alternative text depending on specified gender. - * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}. + * Usage in message text: `{{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 male, female, or anything else for neutral. - * @param forms array List of gender forms - * + * @param {string} gender 'male', 'female', or anything else for neutral. + * @param {Array} forms List of gender forms * @return string */ gender: function ( gender, forms ) { @@ -125,13 +126,14 @@ /** * Grammatical transformations, needed for inflected languages. - * Invoked by putting {{grammar:form|word}} in a message. - * The rules can be defined in $wgGrammarForms global or grammar - * forms can be computed dynamically by overriding this method per language + * Invoked by putting `{{grammar:form|word}}` in a message. * - * @param word {String} - * @param form {String} - * @return {String} + * The rules can be defined in $wgGrammarForms global or computed + * dynamically by overriding this method per language. + * + * @param {string} word + * @param {string} form + * @return {string} */ convertGrammar: function ( word, form ) { var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' ); @@ -141,8 +143,6 @@ return word; } -}; - -$.extend( mw.language, language ); +} ); }( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.language/mediawiki.language.months.js b/resources/mediawiki.language/mediawiki.language.months.js index 3d4b7ee..bdeebc5 100644 --- a/resources/mediawiki.language/mediawiki.language.months.js +++ b/resources/mediawiki.language/mediawiki.language.months.js @@ -1,8 +1,3 @@ -/** - * Transfer of month names from messages into mw.language. - * - * Loading this module also ensures the availability of appropriate messages via mw.msg. - */ ( function ( mw, $ ) { var monthMessages = [ @@ -28,27 +23,37 @@ } /** - * Information about month names in current UI language. + * Transfer of month names from messages into mw.language. * - * Object keys: - * - `names`: array of month names (in nominative case in languages which have the distinction), - * zero-indexed - * - `genitive`: array of month names in genitive case, zero-indexed - * - `abbrev`: array of three-letter-long abbreviated month names, zero-indexed - * - `keys`: object with three keys like the above, containing zero-indexed arrays of message keys - * for appropriate messages which can be passed to mw.msg. + * Loading this module also ensures the availability of appropriate messages via mw.msg. * - * @property + * @class mw.language */ - mw.language.months = { - keys: { - names: monthMessages, - genitive: monthGenMessages, - abbrev: monthAbbrevMessages - }, - names: $.map( monthMessages, mwMsgMapper ), - genitive: $.map( monthGenMessages, mwMsgMapper ), - abbrev: $.map( monthAbbrevMessages, mwMsgMapper ) - }; + $.extend( mw.language, { + /** + * Information about month names in current UI language. + * + * Object keys: + * + * - `names`: array of month names (in nominative case in languages which have the distinction), + * zero-indexed + * - `genitive`: array of month names in genitive case, zero-indexed + * - `abbrev`: array of three-letter-long abbreviated month names, zero-indexed + * - `keys`: object with three keys like the above, containing zero-indexed arrays of message keys + * for appropriate messages which can be passed to mw.msg. + * + * @property + */ + months: { + keys: { + names: monthMessages, + genitive: monthGenMessages, + abbrev: monthAbbrevMessages + }, + names: $.map( monthMessages, mwMsgMapper ), + genitive: $.map( monthGenMessages, mwMsgMapper ), + abbrev: $.map( monthAbbrevMessages, mwMsgMapper ) + } + } ); }( mediaWiki, jQuery ) ); diff --git a/resources/mediawiki.language/mediawiki.language.numbers.js b/resources/mediawiki.language/mediawiki.language.numbers.js index fada6ce..62fab34 100644 --- a/resources/mediawiki.language/mediawiki.language.numbers.js +++ b/resources/mediawiki.language/mediawiki.language.numbers.js @@ -1,23 +1,22 @@ -/* - * Number related utilities for mediawiki.language - */ ( function ( mw, $ ) { - /** + /* * Pad a string to guarantee that it is at least `size` length by * filling with the character `ch` at either the start or end of the * string. Pads at the start, by default. - * example: - * Fill the string to length 10 with '+' characters on the right. Yields 'blah++++++'. - * pad('blah', 10, '+', true); + * + * Example: Fill the string to length 10 with '+' characters on the right. + * + * pad('blah', 10, '+', true); // => 'blah++++++' * * @param {string} text The string to pad - * @param {Number} size To provide padding - * @param {string} ch Character to pad, defaults to '0' - * @param {Boolean} end Adds padding at the end if true, otherwise pads at start + * @param {number} size The length to pad to + * @param {string} [ch='0'] Character to pad with + * @param {boolean} [end=false] Adds padding at the end if true, otherwise pads at start * @return {string} + * @private */ - function pad ( text, size, ch, end ) { + function pad( text, size, ch, end ) { if ( !ch ) { ch = '0'; } @@ -28,14 +27,15 @@ return end ? out + padStr : padStr + out; } - /** - * Efficiently replicate a string n times. + /* + * Efficiently replicate a string `n` times. * * @param {string} str The string to replicate - * @param {Number} num Number of times to replicate the string + * @param {number} num Number of times to replicate the string * @return {string} + * @private */ - function replicate ( str, num ) { + function replicate( str, num ) { if ( num <= 0 || !str ) { return ''; } @@ -48,19 +48,20 @@ return buf.join( '' ); } - /** + /* * Apply numeric pattern to absolute value using options. Gives no * consideration to local customs. * * Adapted from dojo/number library with thanks * http://dojotoolkit.org/reference-guide/1.8/dojo/number.html * - * @param {Number} value the number to be formatted, ignores sign + * @param {number} value the number to be formatted, ignores sign * @param {string} pattern the number portion of a pattern (e.g. `#,##0.00`) - * @param {string} options.decimalThe decimal separator + * @param {Object} [options] + * @param {string} options.decimal The decimal separator * @param {string} options.group The group separator - * * @return {string} + * @private */ function commafyNumber( value, pattern, options ) { options = options || { @@ -149,14 +150,19 @@ return valueParts.join( options.decimal ); } + /** + * Number-related utilities for mediawiki.language. + * + * @class mw.language + */ $.extend( mw.language, { /** - * Converts a number using digitTransformTable. + * Converts a number using #getDigitTransformTable. * - * @param {Number} num Value to be converted - * @param {boolean} integer Convert the return value to an integer - * @return {Number|string} Formatted number + * @param {number} num Value to be converted + * @param {boolean} [integer=false] Whether to convert the return value to an integer + * @return {number|string} Formatted number */ convertNumber: function ( num, integer ) { var i, tmp, transformTable, numberString, convertedNumber, pattern; @@ -197,24 +203,32 @@ return integer ? parseInt( convertedNumber, 10 ) : convertedNumber; }, + /** + * Returns a digit transform table for current UI language. + * @return {Object|Array|undefined} + */ getDigitTransformTable: function () { return mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'digitTransformTable' ) || []; }, + /** + * Returns a separator transform table for current UI language. + * @return {Object|Array|undefined} + */ getSeparatorTransformTable: function () { return mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'separatorTransformTable' ) || []; }, /** - * Apply pattern to format value as a string using as per - * unicode.org TR35 - http://www.unicode.org/reports/tr35/#Number_Format_Patterns. + * Apply pattern to format value as a string using as per Unicode TR35 + * (http://www.unicode.org/reports/tr35/#Number_Format_Patterns). * - * @param {Number} value + * @param {number} value * @param {string} pattern Pattern string as described by Unicode TR35 - * @throws Error - * @returns {String} + * @throws {Error} + * @return {string} */ commafy: function ( value, pattern ) { var numberPattern, -- To view, visit https://gerrit.wikimedia.org/r/98380 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie60f72a5f277d846c09226d5af3da16b07f038c3 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Bartosz Dziewoński <matma....@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits