
Show HN: Ascii_tree – A way to create beautiful ASCII trees - spanspan
https://github.com/spandanb/ascii_tree
======
kps
I think that with all the unicodes lying around these days we can do a little
nicer:

    
    
                    ┌───┐
              ┌─────┤ 1 ├─────┐
              │     └───┘     │
            ┌─┴─┐           ┌─┴─┐
          ┌─┤ 2 ├─┐       ┌─┤ 3 ├─┐
          │ └───┘ │       │ └───┘ │
        ┌─┴─┐   ┌─┴─┐   ┌─┴─┐   ┌─┴─┐
        │ 4 │   │ 5 │   │ 6 │   │ 7 │
        └───┘   └───┘   └───┘   └───┘
    

(Better if the presentation doesn't lead beyond the font.)

~~~
contingencies

      I think that I shall never see
      A graph more lovely than a tree.
      A tree whose crucial property
      Is loop-free connectivity.
      A tree that must be sure to span
      So packets can reach every LAN.
      First, the root must be selected.
      By ID, it is elected.
      Least-cost paths from root are traced.
      In the tree, these paths are placed.
      A mesh is made by folks like me,
      Then bridges find a spanning tree.
    

Radia Perlman, 'Algoryhme'
[https://web.archive.org/web/20110609192559/http://www.csua.b...](https://web.archive.org/web/20110609192559/http://www.csua.berkeley.edu/~ranga/humor/algorhyme.txt)

    
    
      I hope that we shall one day see
      A graph more lovely than a tree.
      A graph to boost efficiency
      While still configuration-free.
      A network where RBridges can
      Route packets to their target LAN.
      The paths they find, to our elation,
      Are least cost paths to destination!
      With packet hop counts we now see,
      The network need not be loop-free!
      RBridges work transparently,
      Without a common spanning tree.
    

Radia Perlman in apparent alias as Ray Perlner, 'Algorhyme V2' RFC6325
[https://tools.ietf.org/html/rfc6325#section-1.1](https://tools.ietf.org/html/rfc6325#section-1.1)

~~~
ASalazarMX
This is such a charming poem. I don't like poetry, but there's something
special about science poetry.

------
cbarrick
Honestly, I was hoping for something like the `tree` command. I've implemented
that algorithm before, but it was painful and not portable.

These trees are definitely cooler and more complex but maybe fewer use cases.
Once you start dealing with more than a few layers, the output is going to
line-wrap in a terminal. For larger trees, DOT [1] is probably more suitable.

[1]:
[https://en.wikipedia.org/wiki/DOT_(graph_description_languag...](https://en.wikipedia.org/wiki/DOT_\(graph_description_language\))

~~~
shpongled
DOT is fantastic, and trivial to output, highly recommend it

~~~
emmelaich
dot/graphviz is great, but it can take a lot of tweaking and reading to get a
good looking graph.

------
octopoc
Cool! With some minor alterations you could add support for ditaa output [1].
That would allow you to convert the trees to PNGs.

[1] [http://ditaa.sourceforge.net/](http://ditaa.sourceforge.net/)

------
baalimago
The lack of centering is itching my ocd.

~~~
dole
Real world or lorem ipsum examples would give a better idea of how beautiful
the trees are than just single digits.

~~~
tempguy9999
Looks like you got your wish

------
dahart
Cool! Maybe a useful feature request: make the output compatible with
Markdeep? [https://casual-effects.com/markdeep/](https://casual-
effects.com/markdeep/)

I tried Ascii_tree with this online Markdeep demo:
[https://tomberek.info/markdeep.html](https://tomberek.info/markdeep.html) and
I found that it can work with only minor changes, like using '+' at all the
corners and junctions, and wrapping the output in a frame of asterisks '*'.

------
EFanZh
I have a tool that does a similar thing:

[https://github.com/EFanZh/tree-graph-
generator](https://github.com/EFanZh/tree-graph-generator)

Demo: [https://efanzh.org/tree-graph-generator/](https://efanzh.org/tree-
graph-generator/)

But it doesn’t have a good front end yet.

------
TruffleLabs
Change requests, options to * make blinking nodes * invert tree

Then we’ll have a Christmas tree generator :)

------
sciencewolf
Beautiful! This will be wonderfully useful for
[https://algodaily.com](https://algodaily.com)

