diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/bqn.js | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/docs/bqn.js b/docs/bqn.js index 178f77f2..adaede2c 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -19,11 +19,16 @@ let findkey = (ns, names, i) => { return ns[nn.rev[names[i]]]; } } -let readns = (v, vid, i) => { - let ni = findkey(v.ns, vid.names, i) - if (!has(ni)) throw Error("← or ↩: Unknown namespace key"); +let readns_sub = (v, names, i) => { + let ni = findkey(v.ns, names, i); + if (!has(ni)) throw Error("Unknown namespace key: "+names[i]); return v[ni]; } +let readns_assign = (v, vid, i) => readns_sub(v, vid.names, vid[i]); +let readns = (v, vid, i) => { + if (!v.ns) throw Error("Key lookup in non-namespace"); + return readns_sub(v, vid.names, i); +} let makens = (keys, vals) => { let n = Array(keys.length).fill().map((_,i)=>i); n.names=keys.map(k=>k.toLowerCase()); vals.ns=n; return vals; @@ -48,7 +53,7 @@ let set = (d, id, v) => { } else if (v.ns) { id.map(n=>{ if (!n.e) throw Error("← or ↩: Cannot extract non-name from namespace"); - let vid=n.e.vid; set(d,n,readns(v, vid, vid[n.p])); + let vid=n.e.vid; set(d,n,readns_assign(v, vid, n.p)); }); } else { throw Error("← or ↩: Multiple targets but atomic value"); |
