jam/js/top/.rcs/loader.js,v

150 lines
3.1 KiB
Plaintext

head 1.2;
access;
symbols;
locks
sbosse:1.2; strict;
comment @# @;
1.2
date 2017.05.27.18.20.44; author sbosse; state Exp;
branches;
next 1.1;
1.1
date 2017.05.23.07.00.54; author sbosse; state Exp;
branches;
next ;
desc
@@
1.2
log
@*** empty log message ***
@
text
@/**
** ==================================
** OOOO OOOO OOOO O O OOOO
** O O O O O O O O O
** O O O O O O O O O
** OOOO OOOO OOOO O OOO OOOO
** O O O O O O O O O
** O O O O O O O O O
** OOOO OOOO OOOO OOOO O O OOOO
** ==================================
** BSSLAB, Dr. Stefan Bosse http://www.bsslab.de
**
** COPYRIGHT: THIS SOFTWARE, EXECUTABLE AND SOURCE CODE IS OWNED
** BY THE AUTHOR.
** THIS SOURCE CODE MAY NOT BE COPIED, EXTRACTED,
** MODIFIED, OR OTHERWISE USED IN A CONTEXT
** OUTSIDE OF THE SOFTWARE SYSTEM.
**
** $AUTHORS: Stefan Bosse
** $INITIAL: (C) 2006-2016 BSSLAB
** $CREATED: 1/7/16 by sbosse.
** $RCS: $Id: aios.js,v 1.2 2017/05/19 05:13:27 sbosse Exp $
** $VERSION: 1.1.2
**
** $INFO:
**
** Sandbox Loader
**
** $ENDOFINFO
*/
var log = function (arg) {
console.log(arg);
}
if (global.TARGET=='node') {
var fs = require('fs');
/** Load a self-contained JS program in a sandbox environment.
* Returns a module object {main: function(args) {..}}.
* The program can be started by executing m.main([arg1,..]).
* File version
*/
function loadfile (file,maskext) {
var m = {},
p,
mask = {
console:{
log:log,
warn:log
},
process:{
argv:[],
cwd:process.cwd,
env:process.env,
exit:function () {},
on:process.on
}
},
text, reg;
if (maskext) for (p in maskext) {
mask[p]=maskext[p];
}
text = fs.readFileSync(file,'utf8');
reg = /#!/
text=text.replace(reg,'//');
with (mask) {
m=eval('var x={main:function(args) {process.argv=args; '+text+'}}; x')
}
return m;
}
}
/** Load a self-contained JS program in a sandbox environment.
* Returns a module object {main: function(args) {..}}.
* The program can be started by executing m.main([arg1,..]).
* Text version.
*/
function load (text,maskext) {
var m = {},
p,
mask = {
console:{
log:log,
warn:log
},
process:{
argv:[],
cwd:process.cwd,
env:process.env,
exit:function () {},
on:(typeof process != 'undefined')?process.on:function () {}
}
},
text, reg;
if (maskext) for (p in maskext) {
mask[p]=maskext[p];
}
reg = /#!/
text=text.replace(reg,'//');
with (mask) {
m=eval('var x={main:function(args) {process.argv=args; '+text+'}}; x')
}
return m;
}
module.exports = {
load:load,
loadfile:loadfile!=undefined?loadfile:undefined
}
@
1.1
log
@Initial revision
@
text
@d22 1
@