[MediaWiki-commits] [Gerrit] Add support to deprecate a module - change (mediawiki...MobileFrontend)

2015-04-17 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Add support to deprecate a module
..


Add support to deprecate a module

If a module is deprecated (or it has a new name and the old one is kept
for compatibility), you can deprecate the module and a deprecation warning
will appear in the browser console.

Usage:
// For defining a module
M.define( 'moduleName', ModuleName );

// I want to deprecate a module name, so I define the module with the new path,
// and mark the old one as deprecated.
M.define( 'newModuleName', ModuleName ).deprecate( 'moduleName' );

// Now moduleName shows a deprecation message on the console
M.require( 'moduleName' );

// But newModuleName doesn't show anything
M.require( 'newModuleName' );

// When we are ready for removing the deprecated module, then we just remove
// .deprecate( 'moduleName' );
// leaving:
M.define( 'newModuleName', ModuleName );

// If I want to deprecate a module without providing an alternative then I just
// do a deprecate insted of a define:
M.deprecate( 'moduleName', ModuleName );

Change-Id: I5ddc099ba2d215137c385a27d36aff5f6f35cbb3
---
M javascripts/modules.js
1 file changed, 39 insertions(+), 1 deletion(-)

Approvals:
  Jhernandez: Looks good to me, approved
  jenkins-bot: Verified

Objections:
  Bmansurov: There's a problem with this change, please improve



diff --git a/javascripts/modules.js b/javascripts/modules.js
index c80b414..edb10b7 100644
--- a/javascripts/modules.js
+++ b/javascripts/modules.js
@@ -36,12 +36,43 @@
 *
 * @param {String} id Defined module id.
 * @param {Object} obj Defined module body, can be any 
JavaScript object.
+* @return {Object}
 */
define: function ( id, obj ) {
+   var self = this;
+
if ( this._register.hasOwnProperty( id ) ) {
throw new Error( 'Module already exists: ' + id 
);
}
this._register[ id ] = obj;
+   // return an object of additionally functions to do 
with the registered module
+   return {
+   /**
+* @see ModuleLoader#deprecate
+* @param {Number} deprecatedId Defined module 
id, which is deprecated.
+*/
+   deprecate: function ( deprecatedId ) {
+   self.deprecate( deprecatedId, obj, id );
+   }
+   };
+   },
+
+   /**
+* Deprecate a module and give an replacement (if there is any).
+*
+* @param {String} id Defined module id, which is deprecated.
+* @param {Object} obj Defined module body, can be any 
JavaScript object.
+* @param {String} [replacement] Give an optional replacement 
for this module (which
+* needs to be already defined!)
+*/
+   deprecate: function ( id, obj, replacement ) {
+   var depreacteMsg;
+   if ( replacement ) {
+   // add an alternative for this module, if any 
given
+   depreacteMsg = 'Use ' + replacement + ' 
instead.';
+   }
+   // register it as a deprecated one
+   mw.log.deprecate( this._register, id, obj, depreacteMsg 
);
}
};
 
@@ -57,15 +88,22 @@
mw.mobileFrontend = {
/**
 * @see ModuleLoader#define
+* @return {Object}
 */
define: function () {
-   loader.define.apply( loader, arguments );
+   return loader.define.apply( loader, arguments );
},
/**
 * @see ModuleLoader#require
 */
require: function () {
return loader.require.apply( loader, arguments );
+   },
+   /**
+* @see ModuleLoader#deprecate
+*/
+   deprecate: function () {
+   return loader.deprecate.apply( loader, arguments );
}
};
 

-- 
To view, visit https://gerrit.wikimedia.org/r/202069
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I5ddc099ba2d215137c385a27d36aff5f6f35cbb3
Gerrit-PatchSet: 7
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow florian.schmidt.wel...@t-online.de
Gerrit-Reviewer: Bmansurov bmansu...@wikimedia.org
Gerrit-Reviewer: 

[MediaWiki-commits] [Gerrit] Add support to deprecate a module - change (mediawiki...MobileFrontend)

2015-04-06 Thread Florianschmidtwelzow (Code Review)
Florianschmidtwelzow has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/202069

Change subject: Add support to deprecate a module
..

Add support to deprecate a module

If a module is depreacted (or it has a new name and the old on eis kept
for compatibility), you can depreacte the module and a depreaction warning
will appear in the browser console.

Usage:
Instead of registering a module with:
M.define( 'context', context, );

use:
M.define( 'context', context, true, 'contextNew' );

(e.g. to deprecate the module context and replacing it with contextNew).

Change-Id: I5ddc099ba2d215137c385a27d36aff5f6f35cbb3
---
M javascripts/modules.js
1 file changed, 17 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MobileFrontend 
refs/changes/69/202069/1

diff --git a/javascripts/modules.js b/javascripts/modules.js
index c80b414..00d4729 100644
--- a/javascripts/modules.js
+++ b/javascripts/modules.js
@@ -36,12 +36,27 @@
 *
 * @param {String} id Defined module id.
 * @param {Object} obj Defined module body, can be any 
JavaScript object.
+* @param {Boolean} deprecated If true, this module is 
depreacted and shouldn't be used anymore
+* (logs an depreacted error in the browser console when 
required)
+* @param {String} replacement Module to use instead, if this 
is depreacted.
 */
-   define: function ( id, obj ) {
+   define: function ( id, obj, deprecated, replacement ) {
+   var depreacteMsg;
+
if ( this._register.hasOwnProperty( id ) ) {
throw new Error( 'Module already exists: ' + id 
);
}
-   this._register[ id ] = obj;
+   // if this module is depreacted and shouldn't be used 
anymore, use mw.log.depreacte to log the error in
+   // the browser console
+   if ( deprecated ) {
+   depreacteMsg = 'Module ' + id + ' is 
depreacted.';
+   if ( replacement ) {
+   depreacteMsg += ' Use ' + replacement + 
' instead.';
+   }
+   mw.log.deprecate( this._register, id, obj, 
depreacteMsg );
+   } else {
+   this._register[ id ] = obj;
+   }
}
};
 

-- 
To view, visit https://gerrit.wikimedia.org/r/202069
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5ddc099ba2d215137c385a27d36aff5f6f35cbb3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow florian.schmidt.wel...@t-online.de

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits