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.
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.
Ugh, I had forgotten that there are fonts that implement only parts of the box drawing block, absurd though that seems to me—it seems obvious to me that you should implement either all or none of such blocks, and that to do anything else is wrong.
I wish ASCII art would just die. This still looks lousy to me, and now also reminds me that we're trying to draw diagrams by emulating 1980's-era technology. You don't see people still using CGA graphics for clip art.
It was the best we could do, 30 years ago, but today "text" means untrusted Unicode of arbitrary language/script/direction/length, and the number of cases where you can throw it to an output system optimized for displaying "1", "2", "3" is rapidly dwindling.
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.
I tried Ascii_tree with this online Markdeep demo: 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 '*'.