diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-30 15:11:25 -0400 |
|---|---|---|
| committer | Marshall Lochbaum <mwlochbaum@gmail.com> | 2021-08-30 15:11:25 -0400 |
| commit | 2187c15b54f8b2803586e0abdb7c7bc94daa83eb (patch) | |
| tree | 4e7f691f6dd3762dd399ed729ba28efe86a56394 /bqn.js | |
| parent | 3761d5a57ab3c9ee6db96a4e1381048f1060a71c (diff) | |
Add push_state so •state changes don't affect parent program
Diffstat (limited to 'bqn.js')
| -rwxr-xr-x | bqn.js | 12 |
1 files changed, 7 insertions, 5 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 => { |
