diff --git a/oxygen/js-require/commons.js b/oxygen/js-require/commons.js index 912d67e..9164bad 100644 --- a/oxygen/js-require/commons.js +++ b/oxygen/js-require/commons.js @@ -1,8 +1,53 @@ -include = function (filepath, isAbsolute) { - if (isAbsolute === undefined || isAbsolute == false) { - filepath = Packages.ro.sync.ecss.extensions.commons.operations.CommonsOperationsUtil.expandAndResolvePath(authorAccess, filepath); - } - var text = new java.lang.String(java.nio.file.Files.readAllBytes(java.nio.file.Paths. get (java.net.URI(filepath)))); - text = String(text); - eval(text); +/* + * Global object. + * + * This object can't be initialized when common.js is first read since the authorAccess object isn't available yet + * + */ +__required__ = { +}; + +CommonsOperationsUtil = Packages.ro.sync.ecss.extensions.commons.operations.CommonsOperationsUtil; + +require = function (filepath) { + // Check if the object has been initialized + if (Object.keys(__required__).length == 0) { + var currentPath = CommonsOperationsUtil.expandAndResolvePath(authorAccess, 'commons.js'); + __required__.baseURIs =[currentPath]; + __required__.required = { + }; + __required__.required[currentPath] = true; + } + var basePathFile = (new java.io.File(__required__.baseURIs[__required__.baseURIs.length - 1])).getParentFile(); + filepath = new java.io.File(basePathFile, filepath).toString(); + if (__required__.required[filepath] == undefined) { + __required__.baseURIs.push(filepath); + __required__.required[filepath] = true; + var text = new java.lang.String(java.nio.file.Files.readAllBytes(java.nio.file.Paths. get (java.net.URI(filepath)))); + text = String(text); + eval(text); + __required__.baseURIs.pop(); + } } + +startDebugger = function () { + + var runnable = { + run: function () { + main.dispose(); + } + } + + + var context = Packages.org.mozilla.javascript.Context.getCurrentContext(); + // Within the current context... + var contextFactory = context.getFactory(); + var scope = Packages.org.mozilla.javascript.tools.shell.Environment(runnable.__parent__); + // and the scope of the runnable variable's parent ... + var main = Packages.org.mozilla.javascript.tools. debugger.Main.mainEmbedded(contextFactory, scope, 'Debugger'); + // start a debugging session ... + main.setExitAction(java.lang.Runnable(runnable)); + // , clean the resources at exit time... + main.setVisible(true); + // and make it visible/ +} \ No newline at end of file diff --git a/oxygen/js-require/sdf.framework b/oxygen/js-require/sdf.framework index d02458e..55a95a1 100644 --- a/oxygen/js-require/sdf.framework +++ b/oxygen/js-require/sdf.framework @@ -1,5 +1,5 @@ - + document.types @@ -795,7 +795,7 @@ script doOperation = function () { - include('debugger.js'); +// include('debugger.js'); startDebugger(); } @@ -845,7 +845,7 @@ script doOperation = function () { - include('hello.js'); + require('hello.js'); hello(); } diff --git a/oxygen/js-require/test.js b/oxygen/js-require/test.js new file mode 100644 index 0000000..617f080 --- /dev/null +++ b/oxygen/js-require/test.js @@ -0,0 +1,5 @@ +doOperation = function () { + require('hello.js'); + hello(); +} +doOperation(); \ No newline at end of file