theprogrammablemind_4wp 7.5.0-beta.0 → 7.5.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/digraph.js +24 -7
package/package.json CHANGED
@@ -61,6 +61,6 @@
61
61
  "json-stable-stringify": "^1.0.1",
62
62
  "node-fetch": "^2.6.1"
63
63
  },
64
- "version": "7.5.0-beta.0",
64
+ "version": "7.5.0-beta.1",
65
65
  "license": "ISC"
66
66
  }
package/src/digraph.js CHANGED
@@ -9,21 +9,38 @@ const toA = (edge) => {
9
9
  class Digraph {
10
10
  // edges maybe either [child, parent] or { child, parent }
11
11
  constructor (edges = []) {
12
- this.edges = edges
12
+ // dont make a copy of edges. this is shared and that breaks stuff. TODO fix this
13
+ this._edges = edges
13
14
  }
14
15
 
15
- /*
16
- edges () {
17
- return this.edges
16
+ addEdges(edges) {
17
+ for (let edge of edges) {
18
+ this.addEdge(edge)
19
+ }
20
+ }
21
+
22
+ addEdge(edge) {
23
+ edge = toA(edge)
24
+ this._edges.push(edge)
25
+ }
26
+
27
+ get edges() {
28
+ return this._edges
29
+ }
30
+
31
+ /*
32
+ set edges(edges) {
33
+ this._edges = edges.map( toA )
18
34
  }
19
35
  */
36
+
20
37
  acdcs (s, from, to) {
21
38
  const todo = [s]
22
39
  const seen = new Set([s])
23
40
  const acdcs = new Set([])
24
41
  while (todo.length > 0) {
25
42
  const n = todo.pop()
26
- this.edges.forEach((e) => {
43
+ this._edges.forEach((e) => {
27
44
  e = toA(e)
28
45
  if (e[from] === n) {
29
46
  acdcs.add(e[to])
@@ -84,12 +101,12 @@ class Digraph {
84
101
  }
85
102
 
86
103
  add (child, parent) {
87
- this.edges.push([child, parent])
104
+ this._edges.push([child, parent])
88
105
  }
89
106
 
90
107
  addList (l) {
91
108
  for (let i = 1; i < l.length; ++i) {
92
- this.edges.push([l[i - 1], l[i]])
109
+ this._edges.push([l[i - 1], l[i]])
93
110
  }
94
111
  }
95
112