Reverse the dependency for mediawiki.language.data

* Previously mediawiki.language.data depended on mediawiki.language,
  making any module using langauge data having to explicitly define
  it as a dependency. This is not good. We should abstract the data
  generation part and for the users of the module.
  mediawiki.language should take care of having the required data.

* So, reversing the dependency so that mediawiki.language depends on
  mediawiki.language.data. Then a simple dependency declaration with
  "mediawiki.language" is enough to have associated data available.

This supersedes change set I810fb0a5

Change-Id: Iede836bb3e2fd700cb7c58caeebe9ec2e0043dfb
This commit is contained in:
Santhosh Thottingal 2012-05-28 17:15:43 +05:30 committed by Timo Tijhof
parent cbe1f58fb2
commit 4c6c50f206
4 changed files with 66 additions and 51 deletions

View file

@ -76,6 +76,6 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
* @return array
*/
public function getDependencies() {
return array( 'mediawiki.language' );
return array( 'mediawiki.language.init' );
}
}

View file

@ -724,6 +724,11 @@ return array(
'uk' => 'resources/mediawiki.language/languages/uk.js',
'wa' => 'resources/mediawiki.language/languages/wa.js',
),
'dependencies' => array( 'mediawiki.language.data' ),
),
'mediawiki.language.init' => array(
'scripts' => 'resources/mediawiki.language/mediawiki.language.init.js'
),
'mediawiki.jqueryMsg' => array(

View file

@ -0,0 +1,56 @@
/**
* Base language object with methods for storing and getting
* language data.
*/
( function( $, mw ) {
var language = {
/**
* @var data {Object} Language related data (keyed by language,
* contains instances of mw.Map).
* @example Set data
* <code>
* // Override, extend or create the language data object of 'nl'
* mw.language.setData( 'nl', 'myKey', 'My value' );
* </code>
* @example Get GrammarForms data for language 'nl':
* <code>
* var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
* </code>
*/
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).
*/
getData: function ( langCode, dataKey ) {
var langData = language.data;
if ( langData[langCode] instanceof mw.Map ) {
return langData[langCode].get( dataKey );
}
return undefined;
},
/**
* Convenience method for setting language data by language code and data key.
* Creates a data object if there isn't one for the specified language already.
* @param langCode {String}
* @param dataKey {String}
* @param value {mixed}
*/
setData: function ( langCode, dataKey, value ) {
var langData = language.data;
if ( !( langData[langCode] instanceof mw.Map ) ) {
langData[langCode] = new mw.Map();
}
langData[langCode].set( dataKey, value );
}
}
mw.language = language;
} )( jQuery, mediaWiki );

View file

@ -1,58 +1,12 @@
/**
* Base language object
*
* Localized Language support attempts to mirror some of the functionality of
* Language.php in MediaWiki. This object contains methods for loading and
* transforming message text.
* Language.php in MediaWiki.
* This adds methods for transforming message text.
*/
( function( $, mw ) {
var language = {
/**
* @var data {Object} Language related data (keyed by language,
* contains instances of mw.Map).
* @example Set data
* <code>
* // Override, extend or create the language data object of 'nl'
* mw.language.setData( 'nl', 'myKey', 'My value' );
* </code>
* @example Get GrammarForms data for language 'nl':
* <code>
* var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
* </code>
*/
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).
*/
getData: function ( langCode, dataKey ) {
var langData = language.data;
if ( langData[langCode] instanceof mw.Map ) {
return langData[langCode].get( dataKey );
}
return undefined;
},
/**
* Convenience method for setting language data by language code and data key.
* Creates a data object if there isn't one for the specified language already.
* @param langCode {String}
* @param dataKey {String}
* @param value {mixed}
*/
setData: function ( langCode, dataKey, value ) {
var langData = language.data;
if ( !( langData[langCode] instanceof mw.Map ) ) {
langData[langCode] = new mw.Map();
}
langData[langCode].set( dataKey, value );
},
/**
* Process the PLURAL template substitution
*
@ -178,7 +132,7 @@ var language = {
* @return {String}
*/
convertGrammar: function ( word, form ) {
var grammarForms = language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
var grammarForms = mw.language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
if ( grammarForms && grammarForms[form] ) {
return grammarForms[form][word] || word;
}
@ -189,6 +143,6 @@ var language = {
'digitTransformTable': null
};
mw.language = language;
$.extend( mw.language, language );
} )( jQuery, mediaWiki );