1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
use cli_utils::{display::table::Table, 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 table = Table::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>>();
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;
}
table.to_string()
}
|