79 lines
1.8 KiB
JavaScript
79 lines
1.8 KiB
JavaScript
/* Setup file run before spec files to setup the context (and RequireJS
|
|
* specifically) to execute the spec file.
|
|
*
|
|
* Defined by caller:
|
|
* - Jasmine predefines
|
|
* - require (Node require)
|
|
* - __dirname, __filename
|
|
* - baseUrl (Relative path to the directory containing this file)
|
|
* - csPath (Path to require-cs module)
|
|
*
|
|
* See requirejs-runner source for full invocation details.
|
|
*/
|
|
var define,
|
|
requirejsOrig = require('requirejs'),
|
|
ostring = Object.prototype.toString,
|
|
path = require('path'),
|
|
isArray = function(it){
|
|
return ostring.call(it) === '[object Array]';
|
|
},
|
|
isFunction = function(it){
|
|
return ostring.call(it) === '[object Function]';
|
|
},
|
|
requirejs = function(deps, callback){
|
|
var retVal;
|
|
|
|
if(!isArray(deps) && typeof deps !== 'string'){
|
|
if(isArray(callback)){
|
|
retVal = requirejsOrig(deps, callback, arguments[2]);
|
|
} else {
|
|
retVal = requirejsOrig(deps, [], callback);
|
|
}
|
|
} else {
|
|
retVal = requirejsOrig(deps, callback);
|
|
}
|
|
|
|
return retVal;
|
|
};
|
|
|
|
requirejsOrig.config({
|
|
baseUrl: baseUrl,
|
|
nodeRequire: require,
|
|
paths: {
|
|
cs: csPath
|
|
}
|
|
});
|
|
|
|
for(var key in requirejsOrig) {
|
|
requirejs[key] = requirejsOrig[key];
|
|
}
|
|
|
|
requirejs.config = function(config){
|
|
var alteredConfig = {};
|
|
|
|
for(var key in config) {
|
|
alteredConfig[key] = config[key];
|
|
}
|
|
|
|
if(alteredConfig.baseUrl){
|
|
var base = baseUrl.replace(/\\/g, '/'),
|
|
splitUrl = alteredConfig.baseUrl.replace(/\\/g, '/').split('/'),
|
|
index = 0;
|
|
|
|
for(; index < splitUrl.length; index++){
|
|
if(splitUrl[index] === '..'){
|
|
base = path.dirname(base);
|
|
} else {
|
|
base += '/' + splitUrl[index];
|
|
}
|
|
}
|
|
|
|
alteredConfig.baseUrl = base;
|
|
}
|
|
|
|
return requirejsOrig.config(alteredConfig);
|
|
};
|
|
|
|
require = requirejs;
|
|
define = requirejs.define;
|