New file |
0,0 → 1,161 |
/* |
Copyright (c) 2004-2006, The Dojo Foundation |
All Rights Reserved. |
|
Licensed under the Academic Free License version 2.1 or above OR the |
modified BSD license. For more information on Dojo licensing, see: |
|
http://dojotoolkit.org/community/licensing.shtml |
*/ |
|
dojo.hostenv.println = function (line) { |
if (arguments.length > 0) { |
print(arguments[0]); |
for (var i = 1; i < arguments.length; i++) { |
var valid = false; |
for (var p in arguments[i]) { |
valid = true; |
break; |
} |
if (valid) { |
dojo.debugShallow(arguments[i]); |
} |
} |
} else { |
print(line); |
} |
}; |
dojo.locale = dojo.locale || java.util.Locale.getDefault().toString().replace("_", "-").toLowerCase(); |
dojo.render.name = dojo.hostenv.name_ = "rhino"; |
dojo.hostenv.getVersion = function () { |
return version(); |
}; |
if (dj_undef("byId")) { |
dojo.byId = function (id, doc) { |
if (id && (typeof id == "string" || id instanceof String)) { |
if (!doc) { |
doc = document; |
} |
return doc.getElementById(id); |
} |
return id; |
}; |
} |
dojo.hostenv.loadUri = function (uri, cb) { |
try { |
var local = (new java.io.File(uri)).exists(); |
if (!local) { |
try { |
var stream = (new java.net.URL(uri)).openStream(); |
stream.close(); |
} |
catch (e) { |
return false; |
} |
} |
if (cb) { |
var contents = (local ? readText : readUri)(uri, "UTF-8"); |
cb(eval("(" + contents + ")")); |
} else { |
load(uri); |
} |
return true; |
} |
catch (e) { |
dojo.debug("rhino load('" + uri + "') failed. Exception: " + e); |
return false; |
} |
}; |
dojo.hostenv.exit = function (exitcode) { |
quit(exitcode); |
}; |
function dj_rhino_current_script_via_java(depth) { |
var optLevel = Packages.org.mozilla.javascript.Context.getCurrentContext().getOptimizationLevel(); |
var caw = new java.io.CharArrayWriter(); |
var pw = new java.io.PrintWriter(caw); |
var exc = new java.lang.Exception(); |
var s = caw.toString(); |
var matches = s.match(/[^\(]*\.js\)/gi); |
if (!matches) { |
throw Error("cannot parse printStackTrace output: " + s); |
} |
var fname = ((typeof depth != "undefined") && (depth)) ? matches[depth + 1] : matches[matches.length - 1]; |
var fname = matches[3]; |
if (!fname) { |
fname = matches[1]; |
} |
if (!fname) { |
throw Error("could not find js file in printStackTrace output: " + s); |
} |
return fname; |
} |
function readText(path, encoding) { |
encoding = encoding || "utf-8"; |
var jf = new java.io.File(path); |
var is = new java.io.FileInputStream(jf); |
return dj_readInputStream(is, encoding); |
} |
function readUri(uri, encoding) { |
var conn = (new java.net.URL(uri)).openConnection(); |
encoding = encoding || conn.getContentEncoding() || "utf-8"; |
var is = conn.getInputStream(); |
return dj_readInputStream(is, encoding); |
} |
function dj_readInputStream(is, encoding) { |
var input = new java.io.BufferedReader(new java.io.InputStreamReader(is, encoding)); |
try { |
var sb = new java.lang.StringBuffer(); |
var line = ""; |
while ((line = input.readLine()) !== null) { |
sb.append(line); |
sb.append(java.lang.System.getProperty("line.separator")); |
} |
return sb.toString(); |
} |
finally { |
input.close(); |
} |
} |
if (!djConfig.libraryScriptUri.length) { |
try { |
djConfig.libraryScriptUri = dj_rhino_current_script_via_java(1); |
} |
catch (e) { |
if (djConfig["isDebug"]) { |
print("\n"); |
print("we have no idea where Dojo is located."); |
print("Please try loading rhino in a non-interpreted mode or set a"); |
print("\n\tdjConfig.libraryScriptUri\n"); |
print("Setting the dojo path to './'"); |
print("This is probably wrong!"); |
print("\n"); |
print("Dojo will try to load anyway"); |
} |
djConfig.libraryScriptUri = "./"; |
} |
} |
dojo.doc = function () { |
return document; |
}; |
dojo.body = function () { |
return document.body; |
}; |
function setTimeout(func, delay) { |
var def = {sleepTime:delay, hasSlept:false, run:function () { |
if (!this.hasSlept) { |
this.hasSlept = true; |
java.lang.Thread.currentThread().sleep(this.sleepTime); |
} |
try { |
func(); |
} |
catch (e) { |
dojo.debug("Error running setTimeout thread:" + e); |
} |
}}; |
var runnable = new java.lang.Runnable(def); |
var thread = new java.lang.Thread(runnable); |
thread.start(); |
} |
dojo.requireIf((djConfig["isDebug"] || djConfig["debugAtAllCosts"]), "dojo.debug"); |
|