diff --git a/oxygen/js-require/commons.js b/oxygen/js-require/commons.js index 3881b20..92a7d4d 100644 --- a/oxygen/js-require/commons.js +++ b/oxygen/js-require/commons.js @@ -5,61 +5,39 @@ * */ +/* + * Shortcuts aka imports + */ out = Packages.java.lang.System.out; - -out.println('commons.js'); - -__required__ = { -}; - CommonsOperationsUtil = Packages.ro.sync.ecss.extensions.commons.operations.CommonsOperationsUtil; + +/* + * Function require + * + */ require = function (filepath) { // Check if the object has been initialized - if (Object.keys(__required__).length == 0) { + if (Object.keys(require).length == 0) { var currentPath = CommonsOperationsUtil.expandAndResolvePath(authorAccess, 'commons.js'); - __required__.baseURIs =[currentPath]; - __required__.required = { + require.urisStack =[currentPath]; + require.urisSet = { }; - __required__.required[currentPath] = true; + require.urisSet[currentPath] = true; } - var currentFilePath = __required__.baseURIs[__required__.baseURIs.length - 1]; - out.println('filepath: ' + filepath); - out.println('current filepath: ' + currentFilePath); + var currentFilePath = require.urisStack[require.urisStack.length - 1]; var currentURI = new java.net.URI(currentFilePath); var targetURI = currentURI.resolve(filepath); filepath = targetURI.toString(); - out.println('filepath: ' + filepath); - if (__required__.required[filepath] == undefined) { - __required__.baseURIs.push(filepath); - __required__.required[filepath] = true; + if (require.urisSet[filepath] == undefined) { + require.urisStack.push(filepath); + require.urisSet[filepath] = true; var uri = new java.net.URI(filepath); - out.println('New, inclusion needed: ' + uri.toString()); + out.println('Including ' + uri.toString()); var text = new java.lang.String(java.nio.file.Files.readAllBytes( java.nio.file.Paths.get(targetURI) )); text = String(text); eval(text); - __required__.baseURIs.pop(); + require.urisStack.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/hello.js b/oxygen/js-require/hello.js index 320466e..5e9ad3e 100644 --- a/oxygen/js-require/hello.js +++ b/oxygen/js-require/hello.js @@ -1,5 +1,6 @@ require('hello.js'); require('./commons.js'); +require('subdir/child.js'); hello = function (){ Packages.java.lang.System.out.println("Hello world."); diff --git a/oxygen/js-require/sdf.framework b/oxygen/js-require/sdf.framework index 55a95a1..2648cbd 100644 --- a/oxygen/js-require/sdf.framework +++ b/oxygen/js-require/sdf.framework @@ -795,7 +795,7 @@ script doOperation = function () { -// include('debugger.js'); + require('debugger.js'); startDebugger(); } diff --git a/oxygen/js-require/subdir/child.js b/oxygen/js-require/subdir/child.js new file mode 100644 index 0000000..e118807 --- /dev/null +++ b/oxygen/js-require/subdir/child.js @@ -0,0 +1,4 @@ +out.println('message from the subdir: ' + filepath); +require('../hello.js'); +require('../commons.js'); +require('child.js');