author | Alan Dipert
<alan@dipert.org> 2021-06-02 16:07:07 UTC |
committer | Alan Dipert
<alan@dipert.org> 2021-06-02 16:07:07 UTC |
parent | fbbf782f2f2c36a85056b9ae35ea6366f3737136 |
datalog.mjs | +13 | -1 |
diff --git a/datalog.mjs b/datalog.mjs index 9b53075..19fe08d 100644 --- a/datalog.mjs +++ b/datalog.mjs @@ -213,7 +213,19 @@ function partialQuery(q) { return (...vals) => query(q, ...vals); } -export { ANY, _, query, TupleSet, partialQuery }; +function paths(x, parent = []) { + if (x instanceof Array) { + return x.flatMap((y, i) => paths(y, [...parent, i])); + } else if (x instanceof Object) { + return Object + .entries(x) + .flatMap(([k, v]) => paths(v, [...parent, k])); + } else { + return [[...parent, x]]; + } +} + +export { ANY, _, query, TupleSet, partialQuery, paths }; // let db = new JSONSet([ // ["sally", "age", 21], // ["fred", "age", 42],