syncable_cli/analyzer/display/
mod.rs1mod box_drawer;
8mod color_adapter;
9mod detailed_view;
10mod helpers;
11mod json_view;
12mod matrix_view;
13mod summary_view;
14mod utils;
15
16pub use box_drawer::BoxDrawer;
18pub use color_adapter::{ColorAdapter, ColorScheme, get_color_adapter, init_color_adapter};
19pub use helpers::{format_project_category, get_category_emoji};
20pub use utils::{strip_ansi_codes, truncate_to_width, visual_width};
21
22use crate::analyzer::MonorepoAnalysis;
23
24#[derive(Debug, Clone, Copy, PartialEq)]
26pub enum DisplayMode {
27 Matrix,
29 Detailed,
31 Summary,
33 Json,
35}
36
37pub fn display_analysis(analysis: &MonorepoAnalysis, mode: DisplayMode) {
39 match mode {
40 DisplayMode::Matrix => matrix_view::display_matrix_view(analysis),
41 DisplayMode::Detailed => detailed_view::display_detailed_view(analysis),
42 DisplayMode::Summary => summary_view::display_summary_view(analysis),
43 DisplayMode::Json => json_view::display_json_view(analysis),
44 }
45}
46
47pub fn display_analysis_to_string(analysis: &MonorepoAnalysis, mode: DisplayMode) -> String {
49 match mode {
50 DisplayMode::Matrix => matrix_view::display_matrix_view_to_string(analysis),
51 DisplayMode::Detailed => detailed_view::display_detailed_view_to_string(analysis),
52 DisplayMode::Summary => summary_view::display_summary_view_to_string(analysis),
53 DisplayMode::Json => json_view::display_json_view_to_string(analysis),
54 }
55}
56
57pub fn display_analysis_with_return(analysis: &MonorepoAnalysis, mode: DisplayMode) -> String {
59 let output = display_analysis_to_string(analysis, mode);
60 print!("{}", output);
61 output
62}
63
64#[cfg(test)]
65mod tests {
66 use super::*;
67
68 #[test]
69 fn test_display_modes() {
70 assert_eq!(DisplayMode::Matrix, DisplayMode::Matrix);
72 assert_ne!(DisplayMode::Matrix, DisplayMode::Detailed);
73 }
74}