diff options
| -rwxr-xr-x | bqn.js | 12 | ||||
| -rw-r--r-- | docs/bqn.js | 7 |
2 files changed, 12 insertions, 7 deletions
@@ -109,17 +109,18 @@ sysvals.file = dynsys(state => { return makens(Object.keys(files), Object.values(files)); }); -sysargs.resolve=getres(); +sysargs.resolve = getres(); +let push_state = st => { st.parres = st.resolve; } let update_state = (st,w) => { w=w||[]; - st.path=w[0]&&str(st.resolve("Setting •path")(w[0])); - st.resolve=getres(st.path); + st.path=w[0]&&str(st.parres("Setting •path")(w[0])); + st.resolve = getres(st.path); st.state=list(w); st.name=w[1]; st.args=w[2]; } sysvals.path=dynsys(s=>s.path); sysvals.name=dynsys(s=>s.name); sysvals.args=dynsys(s=>s.args); -bqn.setexec(update_state); +bqn.setexec(update_state, push_state); let bqn_file = (st,f,t,w) => bqn_state(st)( t, [ str(dir(path.dirname(f))), str(path.basename(f)), w ] ); @@ -140,7 +141,8 @@ if (!module.parent) { let arg0 = args[0]; let cl_state = () => { let s = str(""); - update_state(sysargs, [str(dir(path.resolve('.'))), s, list([],s)]); + let w = [str(dir(path.resolve('.'))), s, list([],s)]; + push_state(sysargs); update_state(sysargs, w); return sysargs; } let exec = fn => src => { diff --git a/docs/bqn.js b/docs/bqn.js index 6b2e7c2d..b2ce92be 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -489,12 +489,15 @@ let dojs = (x,w) => { } let update_state = (st,w)=>w; // Modified by Node version to handle •state +let push_state = st => st; +let copy_state = st_old => { + let st={...st_old}; st.addrt=[]; push_state(st); return st; +} let makebqn = (proc,fn) => st => (x,w) => { let src = proc(x,w,update_state,st); return fn(st.comps(st)(src)); } let makebqnfn = (e,fn) => makebqn((x,w,u,s)=>req1str(e,x,u(s,w)), fn); -let copy_state = st_old => { let st={...st_old}; st.addrt=[]; return st; } let dynsys_copy = fn => dynsys(st => fn(copy_state(st))); let rebqn = dynsys_copy(state => (x,w) => { @@ -583,6 +586,6 @@ if (typeof module!=='undefined') { // Node.js bqn.makebqn=fn=>makebqn(fn,r=>run(...r)); bqn.makerepl=(st,repl)=>rerepl(repl, makebqn(x=>x,r=>r)(st), st); bqn.util={has,list,str,unstr,dynsys,req1str,makens}; - bqn.setexec = f => { update_state=f; } + bqn.setexec = (u,p) => { update_state=u; push_state=p; } module.exports=bqn; } |
