Nodes
by evgkch
JavaScript
class Operator {
get prev() {
return this._prev;
}
get next() {
return this._next;
}
constructor() {
this._next = [];
this._prev = [];
}
}
class SerialOperator extends Operator {
set prev(prev) {
this._prev.push(prev.nodes[prev.nodes.length - 1]);
}
set next(next) {
this._next.push(next.nodes[0]);
}
}
class ParallerOperator extends Operator {
set prev(prev) {
prev.nodes.forEach(this._prev.push);
}
set next(next) {
next.nodes.forEach(this._next.push);
}
}
class Node {
static createSingle({ node }) {
return new SingleOperator(node);
}
static createSerial({ node, children }) {
return new SerialOperator(node, children);
}
static createParallel({ node, children }) {
return new ParallerOperator(node, children);
}
};
const structure = {
type: 0,
node: null,
children: [
{
type: 0,
node: null,
},
{
type: 1,
node: null,
children: [
{
type: 0,
node: null,
},
{
type: 0,
node: null,
},
{
type: 0,
node: null,
},
],
},
{
type: 0,
node: null,
},
],
};
const test = structure.map(item => {
return Array.isArray(item.children)
? item.type
? Node.createParallel(item)
: Node.createSerial(item)
: Node.createSingle(item)
})