/jEdit/tags/jedit-4-1-pre5/bsh/commands/run.bsh
Unknown | 50 lines | 43 code | 7 blank | 0 comment | 0 complexity | 48436b0c1cead04c7124f9463dd8baf3 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
- /**
- 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.
- <p>
- run() is like source() except that it runs the command in a new,
- subordinate and prune()'d namespace. So it's like "running" a command
- instead of "sourcing" it. Returns the object context in which the command
- was run.
- <p>
- Returns the context so that you can gather results.
- <p>
- Paramameter 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.
- <p>
- @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.
- */
- bsh.help.run= "usage: Thread run( filename )";
- 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 );
- }