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