parallel_disk_usage/visualizer.rs
1pub mod bar_alignment;
2pub mod child_position;
3pub mod column_width_distribution;
4pub mod direction;
5pub mod parenthood;
6pub mod proportion_bar;
7pub mod tree;
8
9pub use bar_alignment::BarAlignment;
10pub use child_position::ChildPosition;
11pub use column_width_distribution::ColumnWidthDistribution;
12pub use direction::Direction;
13pub use parenthood::Parenthood;
14pub use proportion_bar::{ProportionBar, ProportionBarBlock};
15pub use tree::{TreeHorizontalSlice, TreeSkeletalComponent};
16
17use super::{data_tree::DataTree, size};
18use std::fmt::Display;
19
20/// Visualize a [`DataTree`].
21///
22/// The fields of the struct are the construction parameters of the ASCII chart.
23/// The [`Display`] trait can be used to create the ASCII chart.
24///
25/// **Example:**
26///
27/// ```no_run
28/// # use parallel_disk_usage::data_tree::DataTree;
29/// # use parallel_disk_usage::os_string_display::OsStringDisplay;
30/// # use parallel_disk_usage::size::Bytes;
31/// # use parallel_disk_usage::bytes_format::BytesFormat;
32/// # use parallel_disk_usage::visualizer::{Visualizer, Direction, BarAlignment, ColumnWidthDistribution};
33/// # fn _wrapper(create_data_tree: fn() -> DataTree<OsStringDisplay, Bytes>) {
34/// let data_tree: DataTree<OsStringDisplay, Bytes> = create_data_tree();
35/// let visualizer = Visualizer {
36/// data_tree: &data_tree,
37/// bytes_format: BytesFormat::MetricUnits,
38/// direction: Direction::BottomUp,
39/// bar_alignment: BarAlignment::Right,
40/// column_width_distribution: ColumnWidthDistribution::total(100),
41/// };
42/// println!("{visualizer}");
43/// # }
44/// ```
45#[derive(Debug)]
46pub struct Visualizer<'a, Name, Size>
47where
48 Name: Display,
49 Size: size::Size,
50{
51 /// The tree to visualize.
52 pub data_tree: &'a DataTree<Name, Size>,
53 /// Format to be used to [`display`](size::Size::display) the sizes.
54 pub bytes_format: Size::DisplayFormat,
55 /// The direction of the visualization of the tree.
56 pub direction: Direction,
57 /// The alignment of the bars.
58 pub bar_alignment: BarAlignment,
59 /// Distribution and total number of characters/blocks can be placed in a line.
60 pub column_width_distribution: ColumnWidthDistribution,
61}
62
63mod copy;
64mod display;
65mod methods;