Reverse the dependency for mediawiki.language.data
authorSanthosh Thottingal <santhosh.thottingal@gmail.com>
Mon, 28 May 2012 11:45:43 +0000 (17:15 +0530)
committerTimo Tijhof <ttijhof@wikimedia.org>
Tue, 5 Jun 2012 13:54:27 +0000 (15:54 +0200)
* 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

includes/resourceloader/ResourceLoaderLanguageDataModule.php
resources/Resources.php
resources/mediawiki.language/mediawiki.language.init.js [new file with mode: 0644]
resources/mediawiki.language/mediawiki.language.js

index 4eb38f6..aeeb291 100644 (file)
@@ -76,6 +76,6 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
         * @return array
         */
        public function getDependencies() {
-               return array( 'mediawiki.language' );
+               return array( 'mediawiki.language.init' );
        }
 }
index 34b9be6..4351758 100644 (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(
diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js
new file mode 100644 (file)
index 0000000..20ed711
--- /dev/null
@@ -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 );
index 67b605c..87a6a8f 100644 (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 );