diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-02-27 06:20:10 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-02-27 06:20:10 +0800 |
| commit | a31cb962b99e96bda167be87dd37c2e2f82fea2f (patch) | |
| tree | c8182c97081492bc01cf7bfcacc4cd7a8fda45a3 /src/cmds/renderer | |
| parent | 94b7d7d80a0c2dd0884bed60659d65c5019f0839 (diff) | |
Add pretty output option to sheetdump command
Diffstat (limited to 'src/cmds/renderer')
| -rw-r--r-- | src/cmds/renderer/mappings_pretty.rs | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/cmds/renderer/mappings_pretty.rs b/src/cmds/renderer/mappings_pretty.rs new file mode 100644 index 0000000..dad4d95 --- /dev/null +++ b/src/cmds/renderer/mappings_pretty.rs @@ -0,0 +1,93 @@ +use cli_utils::{display::SimpleTable, string_vec}; +use colored::Colorize; +use just_enough_vcs::system::sheet_system::mapping::LocalMapping; +use render_system_macros::result_renderer; +use rust_i18n::t; + +use crate::{ + cmds::out::mappings_pretty::JVMappingsPrettyOutput, + r_println, + systems::{cmd::errors::CmdRenderError, render::renderer::JVRenderResult}, +}; + +#[result_renderer(JVMappingsPrettyRenderer)] +pub async fn render(data: &JVMappingsPrettyOutput) -> Result<JVRenderResult, CmdRenderError> { + let mut r = JVRenderResult::default(); + let mappings = &data.mappings; + r_println!(r, "{}", render_pretty_mappings(&mappings)); + Ok(r) +} + +fn render_pretty_mappings(mappings: &Vec<LocalMapping>) -> String { + let header = string_vec![ + "0", + format!(" | {}", t!("sheetedit.mapping").bold()), + "", + format!("| {}", t!("sheetedit.index_source").bold()), + "", + format!("| {}", t!("sheetedit.forward").bold()), + "|" + ]; + + let mut simple_table = SimpleTable::new(header); + + let mut i = 1; + for mapping in mappings { + let mapping_str = mapping + .to_string() + .split(" ") + .into_iter() + .map(|s| s.to_string()) + .collect::<Vec<String>>(); + simple_table.push_item(vec![ + // Number + format!("{}", i).bold().to_string(), + // Mapping + format!( + " | {} ", + mapping_str + .get(0) + .unwrap_or(&String::default()) + .bright_cyan() + ), + // => & == + format!( + "{} ", + match mapping_str.get(1).unwrap_or(&String::default()).as_str() { + "==" => mapping_str[1].bright_yellow().bold(), + "=>" => mapping_str[1].bright_yellow(), + _ => mapping_str[1].bright_black(), + } + ), + // Index + format!( + " {} ", + mapping_str + .get(2) + .unwrap_or(&String::default()) + .bright_yellow() + ), + // => & == + format!( + "{} ", + match mapping_str.get(1).unwrap_or(&String::default()).as_str() { + "==" => mapping_str[1].bright_yellow().bold(), + "=>" => mapping_str[1].bright_yellow(), + _ => mapping_str[1].bright_black(), + } + ), + // Forward + format!( + " {} ", + mapping_str + .get(4) + .unwrap_or(&String::default()) + .bright_yellow() + ), + "|".to_string(), + ]); + + i += 1; + } + simple_table.to_string() +} |
