An utility rust lib to render pleasing tree structures at terminal programs.
It's goal is to simplify tree structure display while ensuring a good looking to it. So it just handle strings, returning the expected result (with current level and supplied styles) and nothing more.
Already comes with a standard visual implementation, so is ready to use, but a custom implementation is very easy to set.
See Documentation.
As little, or none, as needed. Until now, only log will be added, in the near future, to simplify macro calls.
Before any use, decorator must be build at least once.
```rust use tree::{ DecoratorBuilder, tree_item };
fn main() { DecoratorBuilder::default() .default_handler(|m| println!("{}", m)) .build();
tree_item!(block, "Root item");
tree_item!("Item A");
tree_item!("Item B");
tree_item!("Item C");
tree_item!(last, "Item D");
} ```
Outputs:
Root item
├ Item A
├ Item B
├ Item C
└ Item D
Everything works around tree_item!
macro, it has some specific features that must be explained.
Each section is optional, as long the order is preserved.
tree_item!(
[styles],
"A literal string",
[string interpolation args]
)
A style which will be applied to that tree item.
Every opt-in style must match the name defined at Style struct fields (please check Documentation) and multiple ones can be declared using ;
as separator to them.
Declaring only it's name will apply a style item default enable value. (Not to be confused with std::default::Default
it could not be the same value)
```rust use treedecorator::treeitem;
tree_item!(block; dashed, "Dashed block starting tree item"); ```
Some style items could support more values than enable or disable.
Such as entry
:
```rust use treedecorator::{ decorator::Entry, treeitem };
tree_item!(block; dashed; entry: Entry::Double, "Dashed block starting with double entry tree item"); ```
Note: Order doesn't matter at styles defination.
Both of these is the same as defined at std::format.
Everything is licensed under MIT License.