diff options
| author | Marshall Lochbaum <mwlochbaum@gmail.com> | 2022-03-13 18:25:11 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-13 18:25:11 -0400 |
| commit | 77998a45b90ec4a87f49f99ce20ed1239adda024 (patch) | |
| tree | 227678ba322813e3890ecf8af62aa1c3a76a7841 | |
| parent | f5b62c4f173dff7f1f316de7db8a98474370e45f (diff) | |
| parent | 1ad773f85232e7a1ff850004a6bf83fc936a5f83 (diff) | |
Merge pull request #63 from andreypopp/master
Make setc handle lists of vars
| -rw-r--r-- | docs/bqn.js | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/docs/bqn.js b/docs/bqn.js index f0b62638..695f6800 100644 --- a/docs/bqn.js +++ b/docs/bqn.js @@ -50,11 +50,18 @@ let preview = false; let inpreview = () => preview; let setc = (d, id, v) => { - if (preview && id.e != null && !id.e.inpreview) + if (preview && seteff(id)) throw {kind: 'previewError', message: 'side effects are not allowed'}; return set(d, id, v); } +let seteff = (id) => { + if (id.e) return !id.e.inpreview; + else if (id.match) return false; + else if (Array.isArray(id)) return id.some(id => id.m ? seteff(id.m) : seteff(id)); + else return false; +} + let set = (d, id, v) => { let eq = (a,b) => a.length===b.length && a.every((e,i)=>e===b[i]); if (id.e) { |
