Skip to content

tbeseda/array-treeify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

πŸͺΎ array-treeify

Simple text trees from arrays using Unicode box-drawing characters. For your terminal and console displays.

typescript npm license

Overview

array-treeify transforms nested arrays into text trees with proper branching characters. Perfect for CLIs, debug outputs, or anywhere you need to visualize hierarchical data.

treeify([
  'Lumon Industries',
  [
    'Board of Directors',
    ['Natalie (Representative)'],
    'Departments',
    [
      'Macrodata Refinement (Cobel)',
      ['Milchick', 'Mark S.', ['Dylan G.', 'Irving B.', 'Helly R.']],
    ],
    'Other Departments',
    [
      'Optics & Design',
      'Wellness Center',
      'Mammalians Nurturable',
      'Choreography and Merriment',
    ],
  ],
])
Lumon Industries
β”œβ”€ Board of Directors
β”‚  └─ Natalie (Representative)
β”œβ”€ Departments
β”‚  └─ Macrodata Refinement (Cobel)
β”‚     β”œβ”€ Milchick
β”‚     └─ Mark S.
β”‚        β”œβ”€ Dylan G.
β”‚        β”œβ”€ Irving B.
β”‚        └─ Helly R.
└─ Other Departments
   β”œβ”€ Optics & Design
   β”œβ”€ Wellness Center
   β”œβ”€ Mammalians Nurturable
   └─ Choreography and Merriment

Installation

npm install array-treeify

Usage

function treeify(input: TreeInput, options?: {
  chars?: TreeChars,  // Custom characters for the tree
  plain?: boolean     // Use plain whitespace instead of Unicode box-drawing characters
}): string

array-treeify accepts a simple, intuitive array structure that's easy to build and manipulate:

import {treeify} from 'array-treeify'

// Basic example
const eagan = [
  'Kier Eagan', 
  [
    '...',
    [
      '...',
      'Jame Eagan',
      ['Helena Eagan']
    ],
    'Ambrose Eagan',
  ],
]
console.log(treeify(eagan))
/*
Kier Eagan
β”œβ”€ ...
β”‚  β”œβ”€ ...
β”‚  └─ Jame Eagan
β”‚     └─ Helena Eagan
└─ Ambrose Eagan
*/

// Using custom characters
const resultCustomChars = treeify(
  eagan, 
  { chars: { branch: 'β”œβ€’ ', lastBranch: 'β””β€’ ', pipe: 'β”‚  ', space: '   ' },
})
/*
Kier Eagan
β”œβ€’ ...
β”‚  β”œβ€’ ...
β”‚  β””β€’ Jame Eagan
β”‚     β””β€’ Helena Eagan
β””β€’ Ambrose Eagan
*/

// Using plain whitespace characters
console.log(treeify(eagan, { plain: true }))
/*
Kier Eagan
   ...
      ...
      Jame Eagan
         Helena Eagan
   Ambrose Eagan
*/

// Nested example
const orgChart = [
  'Lumon Industries',
  [
    'Board of Directors',
    ['Natalie (Representative)'],
    'Department Heads',
    [
      'Cobel (MDR)',
      ['Milchick', 'Mark S.', ['Dylan G.', 'Irving B.', 'Helly R.']]
    ]
  ]
]
console.log(treeify(orgChart))
/*
Lumon Industries
β”œβ”€ Board of Directors
β”‚  └─ Natalie (Representative)
└─ Department Heads
   └─ Cobel (MDR)
      β”œβ”€ Milchick
      └─ Mark S.
         β”œβ”€ Dylan G.
         β”œβ”€ Irving B.
         └─ Helly R.
*/

Input Format

Disclaimer: The exported TreeInput type (Array<string | TreeInput>) is intentionally flexible to support dynamic and programmatic tree construction. However, TypeScript cannot enforce at the type level that the first element is a string. This requirement is checked at runtime by the treeify function, which will throw an error if the first element is not a string. Please ensure your input arrays follow this convention.

The treeify function accepts arrays with the following structure:

  1. First element must be a string (the root node)
  2. Subsequent elements can be strings (nodes at same level) or arrays (children of previous node)
  3. Arrays can be nested to any depth
['root', 'sibling', ['child1', 'child2']]             // Root with 2 children
['root', ['child'], 'sibling', ['nephew', 'niece']]   // 2 root nodes with children
['root', ['child', ['grandchild']]]                   // Grandchildren

Options

  • chars: Custom characters for the tree. Defaults to Unicode box-drawing characters.
  • plain: When true, uses plain whitespace characters instead of Unicode box-drawing characters.

License

MIT Β© tbeseda

About

Simple text tree diagrams from arrays.

Topics

Resources

Stars

Watchers

Forks

Contributors