initial commit
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
const console = { log: MessageLog.trace };
|
||||
|
||||
function* recursiveIterNodes(n: string): Generator<string> {
|
||||
yield n;
|
||||
if (node.isGroup(n)) {
|
||||
for (let i = 0; i < node.numberOfSubNodes(n); i++) {
|
||||
yield* recursiveIterNodes(node.subNode(n, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function main() {
|
||||
const nodes = Array.from(recursiveIterNodes(node.root()));
|
||||
|
||||
for (const node of nodes) {
|
||||
console.log(node);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
@@ -0,0 +1,33 @@
|
||||
class Node {
|
||||
name: string;
|
||||
|
||||
constructor(name: string) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
static root() {
|
||||
return new Node(node.root());
|
||||
}
|
||||
|
||||
get isGroup() {
|
||||
return node.isGroup(this.name);
|
||||
}
|
||||
|
||||
*subNodesRecursive(): Generator<Node> {
|
||||
for (let i = 0; i < node.numberOfSubNodes(this.name); i++) {
|
||||
const subNode = new Node(node.subNode(this.name, i));
|
||||
yield subNode;
|
||||
yield* subNode.subNodesRecursive();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function main() {
|
||||
const root = Node.root();
|
||||
|
||||
for (const node of root.subNodesRecursive()) {
|
||||
MessageLog.trace(node.name);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user