@push.rocks/lik
Version:
Provides a collection of lightweight helpers and utilities for Node.js projects.
131 lines • 9.79 kB
JavaScript
import * as plugins from './classes.plugins.js';
export class Tree {
symbolTree;
constructor() {
this.symbolTree = new plugins.symbolTree();
}
// =======================================
// Functions that map to the functionality of symbol-tree
// =======================================
/**
*
* @param objectArg
*/
initialize(objectArg) {
return this.symbolTree.initialize(objectArg);
}
hasChildren(objectArg) {
return this.symbolTree.hasChildren(objectArg);
}
firstChild(objectArg) {
return this.symbolTree.firstChild(objectArg);
}
lastChild(objectArg) {
return this.symbolTree.lastChild(objectArg);
}
previousSibling(objectArg) {
return this.symbolTree.previousSibling(objectArg);
}
nextSibling(objectArg) {
return this.symbolTree.nextSibling(objectArg);
}
parent(objectArg) {
return this.symbolTree.parent(objectArg);
}
lastInclusiveDescendant(objectArg) {
return this.symbolTree.lastInclusiveDescendant(objectArg);
}
preceding(objectArg, optionsArg) {
return this.symbolTree.preceding(objectArg, optionsArg);
}
following(object, optionsArg) {
return this.symbolTree.following(object, optionsArg);
}
childrenToArray(parentArg, optionsArg) {
return this.symbolTree.childrenToArray(parentArg, optionsArg);
}
ancestorsToArray(objectArg, optionsArg) {
return this.symbolTree.ancestorsToArray(objectArg, optionsArg);
}
treeToArray(rootArg, optionsArg) {
return this.symbolTree.treeToArray(rootArg, optionsArg);
}
childrenIterator(parentArg, optionsArg) {
return this.symbolTree.childrenIterator(parentArg, optionsArg);
}
previousSiblingsIterator(objectArg) {
return this.symbolTree.previousSiblingsIterator(objectArg);
}
nextSiblingsIterator(objectArg) {
return this.symbolTree.nextSiblingsIterator(objectArg);
}
ancestorsIterator(objectArg) {
return this.symbolTree.ancestorsIterator(objectArg);
}
treeIterator(rootArg, optionsArg) {
return this.symbolTree.treeIterator(rootArg, optionsArg);
}
index(childArg) {
return this.symbolTree.index(childArg);
}
childrenCount(parentArg) {
return this.symbolTree.childrenCount(parentArg);
}
compareTreePosition(leftArg, rightArg) {
return this.symbolTree.compareTreePosition(leftArg, rightArg);
}
remove(removeObjectArg) {
return this.symbolTree.remove(removeObjectArg);
}
insertBefore(referenceObjectArg, newObjectArg) {
return this.symbolTree.insertBefore(referenceObjectArg, newObjectArg);
}
insertAfter(referenceObject, newObjectArg) {
return this.symbolTree.insertAfter(referenceObject, newObjectArg);
}
prependChild(referenceObjectArg, newObjectArg) {
return this.symbolTree.prependChild(referenceObjectArg, newObjectArg);
}
appendChild(referenceObjectArg, newObjectArg) {
return this.symbolTree.appendChild(referenceObjectArg, newObjectArg);
}
// ===========================================
// Functionality that extends symbol-tree
// ===========================================
/**
* returns a branch of the tree as a recursive JSON structure
*/
toJsonWithHierachy(rootElement) {
const buildNode = (element) => {
const children = [];
if (this.hasChildren(element)) {
const childrenArray = this.childrenToArray(element, {});
for (const child of childrenArray) {
children.push(buildNode(child));
}
}
return { data: element, children };
};
return buildNode(rootElement);
}
/**
* builds a tree from a recursive JSON structure
* @param jsonRoot the root node in ITreeNode format
* @param reviver optional function to reconstruct T from serialized data
*/
fromJsonWithHierachy(jsonRoot, reviver) {
const buildTree = (node, parentElement) => {
const element = reviver ? reviver(node.data) : node.data;
this.initialize(element);
if (parentElement) {
this.appendChild(parentElement, element);
}
for (const childNode of node.children) {
buildTree(childNode, element);
}
return element;
};
return buildTree(jsonRoot);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy50cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsTUFBTSxPQUFPLElBQUk7SUFDZixVQUFVLENBQU07SUFDaEI7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMseURBQXlEO0lBQ3pELDBDQUEwQztJQUUxQzs7O09BR0c7SUFDSCxVQUFVLENBQUMsU0FBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxVQUFVLENBQUMsU0FBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTLENBQUMsU0FBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQUMsU0FBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsU0FBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FB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