From a31cb962b99e96bda167be87dd37c2e2f82fea2f Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Fri, 27 Feb 2026 06:20:10 +0800 Subject: Add pretty output option to sheetdump command --- src/cmds/renderer/mappings_pretty.rs | 93 ++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/cmds/renderer/mappings_pretty.rs (limited to 'src/cmds/renderer/mappings_pretty.rs') 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 { + let mut r = JVRenderResult::default(); + let mappings = &data.mappings; + r_println!(r, "{}", render_pretty_mappings(&mappings)); + Ok(r) +} + +fn render_pretty_mappings(mappings: &Vec) -> 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::>(); + 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() +} -- cgit