diff src/layout/rdf_value.ts @ 114:4b33a479dc2f

fix layout test to match new layout return types. clean up UriPairMap
author drewp@bigasterisk.com
date Sat, 19 Mar 2022 16:12:49 -0700
parents cbcd82d21356
children
line wrap: on
line diff
--- a/src/layout/rdf_value.ts	Sat Mar 19 15:45:03 2022 -0700
+++ b/src/layout/rdf_value.ts	Sat Mar 19 16:12:49 2022 -0700
@@ -61,3 +61,33 @@
   });
   return uniques;
 }
+
+// A default dict of Term[] with (NamedNode,NamedNode) pairs as keys.
+//
+// Immutable.Map<Immutable.Record<Uri,Uri>, Immutable.Set<Term>>() didn't seem to work.
+export class UriPairMap {
+  _d = new Map<string, Term[]>();
+
+  _key(k1: NamedNode, k2: NamedNode): string {
+    return k1.id + "|" + k2.id;
+  }
+
+  add(k1: NamedNode, k2: NamedNode, v: Term) {
+    const key = this._key(k1, k2);
+    let cur = this._d.get(key);
+    if (cur === undefined) {
+      cur = [];
+      this._d.set(key, cur);
+    }
+    cur.push(v);
+  }
+
+  get(k1: NamedNode, k2: NamedNode): Term[] {
+    const key = this._key(k1, k2);
+    const v = this._d.get(key);
+    if (v === undefined) {
+      return [];
+    }
+    return v;
+  }
+}