author | Alan Dipert
<alan@dipert.org> 2021-06-02 16:08:53 UTC |
committer | Alan Dipert
<alan@dipert.org> 2021-06-02 16:08:53 UTC |
parent | 479c632099f315767658578decd6a33f790d0306 |
datalog.mjs | +4 | -4 |
reactives.mjs | +8 | -8 |
tests.mjs | +3 | -3 |
diff --git a/datalog.mjs b/datalog.mjs index 19fe08d..aa79859 100644 --- a/datalog.mjs +++ b/datalog.mjs @@ -41,7 +41,7 @@ function tupleEqual(x, y) { return true; } -class TupleSet { +class StupidTupleSet { constructor(tuples = []) { this.tuples = []; tuples.forEach(tuple => this.add(tuple)); @@ -69,7 +69,7 @@ class TupleSet { this.tuples = []; } complement(other) { - return new TupleSet([...this].filter(tuple => !other.has(tuple))); + return new StupidTupleSet([...this].filter(tuple => !other.has(tuple))); } size() { return this.tuples.length; @@ -157,7 +157,7 @@ function initRel(use, vals) { } function select(rel, vars) { - return new TupleSet([...rel].map(rx => vars.map(v => rx[v]))); + return new StupidTupleSet([...rel].map(rx => vars.map(v => rx[v]))); } function parseVals(use, vals) { @@ -225,7 +225,7 @@ function paths(x, parent = []) { } } -export { ANY, _, query, TupleSet, partialQuery, paths }; +export { ANY, _, query, StupidTupleSet, partialQuery, paths }; // let db = new JSONSet([ // ["sally", "age", 21], // ["fred", "age", 42], diff --git a/reactives.mjs b/reactives.mjs index a2d4eb1..97a4ac6 100644 --- a/reactives.mjs +++ b/reactives.mjs @@ -1,4 +1,4 @@ -import { TupleSet, partialQuery } from './datalog.mjs'; +import { StupidTupleSet, partialQuery } from './datalog.mjs'; const depGraph = new Map(), suspended = new Set(); @@ -99,9 +99,9 @@ class Formula { class Database { constructor() { - this.set = new TupleSet(); - this.added = new TupleSet(); - this.removed = new TupleSet(); + this.set = new StupidTupleSet(); + this.added = new StupidTupleSet(); + this.removed = new StupidTupleSet(); } add(tuples) { let changed = false; @@ -157,9 +157,9 @@ class View { // q is not reactive (for now) this.query = q instanceof Function ? q : partialQuery(q); this.sources = sources; - this.set = new TupleSet(); - this.added = new TupleSet(); - this.removed = new TupleSet(); + this.set = new StupidTupleSet(); + this.added = new StupidTupleSet(); + this.removed = new StupidTupleSet(); this.watches = new Map(); sources .filter(View.isReactiveSource) @@ -226,7 +226,7 @@ class Watch { || this.source instanceof Formula) { this.callback.call(null, this.source.previousValue, this.source.value) } else { - this.callback.call(null, this.source.set, new TupleSet()); + this.callback.call(null, this.source.set, new StupidTupleSet()); } } detach() { diff --git a/tests.mjs b/tests.mjs index 479faa0..0906a2f 100644 --- a/tests.mjs +++ b/tests.mjs @@ -1,4 +1,4 @@ -import { _, query, TupleSet } from './datalog.mjs'; +import { _, query, StupidTupleSet } from './datalog.mjs'; const { module, test } = QUnit; // QUnit.assert.queryEquals = function(expect, q, ...args) { @@ -6,7 +6,7 @@ const { module, test } = QUnit; module('datalog', () => { - let db1 = new TupleSet([ + let db1 = new StupidTupleSet([ ["sally", "age", 21], ["fred", "age", 42], ["ethel", "age", 42], @@ -15,7 +15,7 @@ module('datalog', () => { ["ethel", "likes", "sushi"] ]); - let db2 = new TupleSet([ + let db2 = new StupidTupleSet([ ["ethel", "sex", "female"], ["fred", "sex", "male"] ]);