diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-05-28 21:35:14 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-05-28 21:44:50 -0400 |
| commit | 2d5263c758ae9f1d0a7f63bd15314fef7c6c81ba (patch) | |
| tree | 29091544f942725e14b4cab3986ee8d411893453 /bqn.js | |
| parent | c4924407c8ac66880fda181a6e03684c95578d1d (diff) | |
Define •state and always set state values (except in monadic •BQN)
Diffstat (limited to 'bqn.js')
| -rwxr-xr-x | bqn.js | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -31,11 +31,11 @@ sysvals.fchars = withres("•FChars",fchars); sysvals.flines = withres("•FLines",flines); sysvals.fbytes = withres("•FBytes",fbytes); -let bqn_state = sysvals.bqn = (x,w) => { - w = w||[]; +let set_state = w => { + w = w||[]; sysvals.state=list(w); sysvals.path=w[0]; sysvals.name=w[1]; sysvals.args=w[2]; - return bqn(x); } +let bqn_state = sysvals.bqn = (x,w) => { set_state(w); return bqn(x); } sysvals.exit = (x,w) => process.exit(Number.isInteger(x)?x:0); sysvals.bqn = (x,w) => bqn_state(req1str("•BQN",x), w); let bqn_file = (f,t,w) => bqn_state( @@ -56,6 +56,10 @@ sysvals.import = withres("•Import", resolve => (x,w) => { if (!module.parent) { let args = process.argv.slice(2); let arg0 = args[0]; + let cl_state = () => { + let s = str(""); + return [str(path.resolve(__dirname)+'/'), s, list([],s)]; + } let exec = fn => src => { try { fn(src); @@ -64,6 +68,7 @@ if (!module.parent) { } } if (!has(arg0) || arg0==='-r') { + set_state(cl_state()); let stdin = process.stdin, repl = sysvals.makerepl(); let e = exec(s=>show(repl(str(s)))); stdin.on('end', () => { process.exit(); }); @@ -74,6 +79,7 @@ if (!module.parent) { let f=arg0, a=list(args.slice(1).map(str)); exec(s=>bqn_file(f,s,a))(fs.readFileSync(f,'utf-8')); } else if (arg0 === '-e') { - args.slice(1).map(exec(s=>show(bqn_state(s)))); + let st=cl_state(); + args.slice(1).map(exec(s=>show(bqn_state(s,st)))); } } |
