aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbqn.js12
-rw-r--r--docs/bqn.js7
2 files changed, 12 insertions, 7 deletions
diff --git a/bqn.js b/bqn.js
index a0d8be07..efef58b8 100755
--- a/bqn.js
+++ b/bqn.js
@@ -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;
}