UNPKG

johnny-dependency

Version:
38 lines (30 loc) 1.07 kB
/* eslint-disable no-console, prefer-template */ function printTree(initialTree, printNode, getChildren) { function printBranch(tree, branch) { const isGraphHead = branch.length === 0; const children = getChildren(tree); let branchHead = ''; if (!isGraphHead) { branchHead = children && children.length !== 0 ? '┬ ' : '─ '; } if (printNode.length === 2) { printNode(tree, `${branch}${branchHead}`); } else { console.log(`${branch}${branchHead}${printNode(tree)}`); } if (children) { let baseBranch = branch; if (!isGraphHead) { const isChildOfLastBranch = branch.slice(-2) === '└─'; baseBranch = branch.slice(0, -2) + (isChildOfLastBranch ? ' ' : '| '); } const nextBranch = baseBranch + '├─'; const lastBranch = baseBranch + '└─'; children.forEach((child, index) => { printBranch(child, children.length - 1 === index ? lastBranch : nextBranch); }); } } printBranch(initialTree, ''); } module.exports = printTree;