/jEdit/tags/jedit-4-0-pre3/bsh/commands/run.bsh
Unknown | 36 lines | 31 code | 5 blank | 0 comment | 0 complexity | e4b3241355ed12648f578b05a95bd51b MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
- bsh.help.run= "usage: Thread run( filename )";
- /**
- Run a command in its own in its own private global namespace and interpeter
- context. (kind of like the unix "chroot" for the namespace)
- The root bsh system object is extended (with the extend() command) and
- made visible here, so that system info is effectively inherited.
- Because the root bsh object is extended it is effectively read / copy
- on write... e.g. you can change directories in the child context, do
- imports, etc. and it will not affect the calling context.
- @return Returns the context so that you can gather results.
- @param runArgument an argument passed to the child context under the
- name runArgument. e.g. you might pass in the calling This context
- from which to draw variables, etc.
- */
- run( String filename, Object runArgument )
- {
- // Our local namespace is going to be the new root (global)
- // make local copies of the system stuff.
- //
- // Extend the root system object
- // this is problematic... probably need more here...
- bsh=extend(global.bsh);
- bsh.help=extend(bsh.help);
- // cut us off... make us the root (global) namespace for this command
- this.namespace.prune();
- this.interpreter.source( filename, this.namespace );
- return this;
- }
- run( String filename ) {
- run( filename, null );
- }