Source: tools/extensions/ModuleIdCompatibilityFunc.js

define(['mmirf/util/isArray'],
/**
 * Maps requirejs module IDs from mmir-lib v3 (and earlier) to module IDs used in mmir-lib version >= 4.
 *
 *
 *
 * @class
 * @name mmir.compat.ModuleIdCompatFunc
 * @static
 * @hideconstructor
 *
 * @example
 * mmir.require(['mmirf/moduleIdCompatibilityFunc', 'mmirf/core'], function(moduleIdCompatibilityFunc, mmir){
 * 		function moduleMapFunc(id){
 * 			return if(isOldId(id)) return 'mmirf/'+id;
 * 			return id;
 * 		}
 * 		var req = moduleIdCompatibilityFunc(mmir.require, moduleMapFunc);
 * 		mmir.require = req;
 * });
 *
 * @public
 */
function(isArray){

	/**
	 * HELPER for creating require() function that maps old module IDs to new ones.
	 *
	 * @param {Function} requirejs
	 * 			the require function, e.g. <code>mmir.require</code>
	 *
	 * @param {Function} getIdFunc
	 * 			function for mapping module IDs:
	 * 			takes a string (module ID) as input, and returns a string (the new/valid module ID)
	 * 			<code>getIdFunc(id: string): string</code>
	 *
	 * @memberOf mmir.compat.ModuleIdCompatFunc#
	 */
	var createModuleMapRequire = function(requirejs, getIdFunc) {

		var _id = getIdFunc;
		//helper function that maps module IDs to v3 module names, if necessary
		return function(){
			var len = arguments.length;
			if(len > 0){
				var dep = arguments[0];
				if(isArray(dep)){
					for(var i=dep.length - 1; i >= 0; --i){
						dep[i] = _id(dep[i]);
					}
				} else if(typeof dep === 'string') {
					dep = _id(dep);
				}
				arguments[0] = dep;
			}
			return requirejs.apply(this, arguments);
		};
	};

	return createModuleMapRequire;

});