nodejs_tasks/code/tree-logger.js

41 lines
1.2 KiB
JavaScript

const {Context} = require("./Context");
const treeLogger = (tree, context) => {
if (context.level === 0) {
console.log(tree.name);
if (tree.items) {
for (let i = 0; i < tree.items.length; ++i) {
const subtree = tree.items[i];
const lastIndex = tree.items.length - 1;
const ctx = new Context(context.level + 1, (i === lastIndex));
treeLogger(subtree, ctx);
}
}
} else if (context.level === 1) {
const rootChar = context.isLast ? '└ ' : '├ ';
console.log(rootChar + tree.name);
if (tree.items) {
for (let i = 0; i < tree.items.length; ++i) {
const subtree = tree.items[i];
const lastIndex = tree.items.length - 1;
const ctx = new Context(context.level + 1, (i === lastIndex));
treeLogger(subtree, ctx);
}
}
} else {
let print = ''
while (--context.level) {
print += '|'
}
print += (context.isLast ? '└ ' : '├ ');
console.log(print + tree.name);
}
};
module.exports = {
treeLogger
};