123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- // TODO: this file needs to be converted to the v1.7 loader
- /*
- * SpiderMonkey host environment
- */
- if(dojo.config["baseUrl"]){
- dojo.baseUrl = dojo.config["baseUrl"];
- }else{
- dojo.baseUrl = "./";
- }
- dojo._name = 'spidermonkey';
- /*=====
- dojo.isSpidermonkey = {
- // summary: Detect 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]);
- }
- }
|