main
Last change
on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago |
Initial commit
|
-
Property mode
set to
100644
|
File size:
784 bytes
|
Line | |
---|
1 | import { visit } from "./visitor.mjs";
|
---|
2 | class Visitor {
|
---|
3 | parentEdges;
|
---|
4 | parent;
|
---|
5 | constructor() {
|
---|
6 | this.parentEdges = new WeakMap();
|
---|
7 | }
|
---|
8 | ObjectElement(objectElement) {
|
---|
9 | this.parentEdges.set(objectElement, this.parent);
|
---|
10 | this.parent = objectElement;
|
---|
11 | }
|
---|
12 | ArrayElement(arrayElement) {
|
---|
13 | this.parentEdges.set(arrayElement, this.parent);
|
---|
14 | this.parent = arrayElement;
|
---|
15 | }
|
---|
16 | MemberElement(memberElement) {
|
---|
17 | this.parentEdges.set(memberElement, this.parent);
|
---|
18 | this.parent = memberElement;
|
---|
19 | }
|
---|
20 | enter(element) {
|
---|
21 | this.parentEdges.set(element, this.parent);
|
---|
22 | }
|
---|
23 | }
|
---|
24 |
|
---|
25 | // computes upwards edges from every child to its parent
|
---|
26 | const parents = element => {
|
---|
27 | const visitor = new Visitor();
|
---|
28 | visit(element, visitor);
|
---|
29 | return visitor.parentEdges;
|
---|
30 | };
|
---|
31 | export default parents; |
---|
Note:
See
TracBrowser
for help on using the repository browser.