You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.2 KiB
80 lines
2.2 KiB
// TODO: this file needs to be converted to the v1.7 loader |
|
|
|
// module: |
|
// configSpidermonkey |
|
// summary: |
|
// SpiderMonkey host environment |
|
|
|
if(dojo.config["baseUrl"]){ |
|
dojo.baseUrl = dojo.config["baseUrl"]; |
|
}else{ |
|
dojo.baseUrl = "./"; |
|
} |
|
|
|
dojo._name = 'spidermonkey'; |
|
|
|
|
|
|
|
dojo.isSpidermonkey = true; |
|
dojo.exit = function(exitcode){ |
|
quit(exitcode); |
|
}; |
|
|
|
if(typeof print == "function"){ |
|
console.debug = print; |
|
} |
|
|
|
if(typeof line2pc == 'undefined'){ |
|
throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global"); |
|
} |
|
|
|
dojo._spidermonkeyCurrentFile = function(depth){ |
|
// |
|
// This is a hack that determines the current script file by parsing a |
|
// generated stack trace (relying on the non-standard "stack" member variable |
|
// of the SpiderMonkey Error object). |
|
// |
|
// If param depth is passed in, it'll return the script file which is that far down |
|
// the stack, but that does require that you know how deep your stack is when you are |
|
// calling. |
|
// |
|
var s = ''; |
|
try{ |
|
throw Error("whatever"); |
|
}catch(e){ |
|
s = e.stack; |
|
} |
|
// lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101 |
|
var matches = s.match(/[^@]*\.js/gi); |
|
if(!matches){ |
|
throw Error("could not parse stack string: '" + s + "'"); |
|
} |
|
var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1]; |
|
if(!fname){ |
|
throw Error("could not find file name in stack string '" + s + "'"); |
|
} |
|
//print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'"); |
|
return fname; |
|
}; |
|
|
|
// print(dojo._spidermonkeyCurrentFile(0)); |
|
|
|
dojo._loadUri = function(uri){ |
|
// spidermonkey load() evaluates the contents into the global scope (which |
|
// is what we want). |
|
// TODO: sigh, load() does not return a useful value. |
|
// Perhaps it is returning the value of the last thing evaluated? |
|
// var ok = |
|
load(uri); |
|
// console.log("spidermonkey load(", uri, ") returned ", ok); |
|
return 1; |
|
}; |
|
|
|
//Register any module paths set up in djConfig. Need to do this |
|
//in the hostenvs since hostenv_browser can read djConfig from a |
|
//script tag's attribute. |
|
if(dojo.config["modulePaths"]){ |
|
for(var param in dojo.config["modulePaths"]){ |
|
dojo.registerModulePath(param, dojo.config["modulePaths"][param]); |
|
} |
|
}
|
|
|