fix(style): else-if ladder -> match (#86)

* It 'aint much, but it's honest work (else-if ladder -> match)

* Maybe this is nicer?
This commit is contained in:
Brooks Rady 2020-12-09 11:26:39 +00:00 committed by GitHub
parent 94d6f3dbf6
commit 0a05e4e34a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -300,31 +300,25 @@ impl CharacterStyles {
} }
pub fn add_style_from_ansi_params(&mut self, ansi_params: &[i64]) { pub fn add_style_from_ansi_params(&mut self, ansi_params: &[i64]) {
let mut params_used = 1; // if there's a parameter, it is always used let mut params_used = 1; // if there's a parameter, it is always used
if ansi_params.is_empty() || ansi_params[0] == 0 { match ansi_params {
self.reset_all(); [] | [0, ..] => self.reset_all(),
} else if ansi_params[0] == 39 { [39, ..] => *self = self.foreground(Some(AnsiCode::Reset)),
*self = self.foreground(Some(AnsiCode::Reset)); [49, ..] => *self = self.background(Some(AnsiCode::Reset)),
} else if ansi_params[0] == 49 { [21, ..] => *self = self.bold(Some(AnsiCode::Reset)),
*self = self.background(Some(AnsiCode::Reset)); [22, ..] => {
} else if ansi_params[0] == 21 {
*self = self.bold(Some(AnsiCode::Reset));
} else if ansi_params[0] == 22 {
*self = self.bold(Some(AnsiCode::Reset)); *self = self.bold(Some(AnsiCode::Reset));
*self = self.dim(Some(AnsiCode::Reset)); *self = self.dim(Some(AnsiCode::Reset));
} else if ansi_params[0] == 23 { }
*self = self.italic(Some(AnsiCode::Reset)); [23, ..] => *self = self.italic(Some(AnsiCode::Reset)),
} else if ansi_params[0] == 24 { [24, ..] => *self = self.underline(Some(AnsiCode::Reset)),
*self = self.underline(Some(AnsiCode::Reset)); [25, ..] => {
} else if ansi_params[0] == 25 {
*self = self.blink_slow(Some(AnsiCode::Reset)); *self = self.blink_slow(Some(AnsiCode::Reset));
*self = self.blink_fast(Some(AnsiCode::Reset)); *self = self.blink_fast(Some(AnsiCode::Reset));
} else if ansi_params[0] == 27 { }
*self = self.reverse(Some(AnsiCode::Reset)); [27, ..] => *self = self.reverse(Some(AnsiCode::Reset)),
} else if ansi_params[0] == 28 { [28, ..] => *self = self.hidden(Some(AnsiCode::Reset)),
*self = self.hidden(Some(AnsiCode::Reset)); [29, ..] => *self = self.strike(Some(AnsiCode::Reset)),
} else if ansi_params[0] == 29 { [38, ..] => {
*self = self.strike(Some(AnsiCode::Reset));
} else if ansi_params[0] == 38 {
let ansi_code = AnsiCode::Code(( let ansi_code = AnsiCode::Code((
ansi_params.get(1).map(|p| *p as u16), ansi_params.get(1).map(|p| *p as u16),
ansi_params.get(2).map(|p| *p as u16), ansi_params.get(2).map(|p| *p as u16),
@ -333,7 +327,8 @@ impl CharacterStyles {
if ansi_params.len() > 2 { if ansi_params.len() > 2 {
params_used += ansi_params.len() - 1; params_used += ansi_params.len() - 1;
} }
} else if ansi_params[0] == 48 { }
[48, ..] => {
let ansi_code = AnsiCode::Code(( let ansi_code = AnsiCode::Code((
ansi_params.get(1).map(|p| *p as u16), ansi_params.get(1).map(|p| *p as u16),
ansi_params.get(2).map(|p| *p as u16), ansi_params.get(2).map(|p| *p as u16),
@ -345,61 +340,38 @@ impl CharacterStyles {
if ansi_params.get(2).is_some() { if ansi_params.get(2).is_some() {
params_used += 1; params_used += 1;
} }
} else if ansi_params[0] == 1 { }
*self = self.bold(Some(AnsiCode::Code((Some(1), None)))); [1, ..] => *self = self.bold(Some(AnsiCode::Code((Some(1), None)))),
} else if ansi_params[0] == 2 { [2, ..] => *self = self.dim(Some(AnsiCode::Code((Some(2), None)))),
*self = self.dim(Some(AnsiCode::Code((Some(2), None)))); [3, ..] => *self = self.italic(Some(AnsiCode::Code((Some(3), None)))),
} else if ansi_params[0] == 3 { [4, ..] => *self = self.underline(Some(AnsiCode::Code((Some(4), None)))),
*self = self.italic(Some(AnsiCode::Code((Some(3), None)))); [5, ..] => *self = self.blink_slow(Some(AnsiCode::Code((Some(5), None)))),
} else if ansi_params[0] == 4 { [6, ..] => *self = self.blink_fast(Some(AnsiCode::Code((Some(6), None)))),
*self = self.underline(Some(AnsiCode::Code((Some(4), None)))); [7, ..] => *self = self.reverse(Some(AnsiCode::Code((Some(7), None)))),
} else if ansi_params[0] == 5 { [8, ..] => *self = self.hidden(Some(AnsiCode::Code((Some(8), None)))),
*self = self.blink_slow(Some(AnsiCode::Code((Some(5), None)))); [9, ..] => *self = self.strike(Some(AnsiCode::Code((Some(9), None)))),
} else if ansi_params[0] == 6 { [30, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Black))),
*self = self.blink_fast(Some(AnsiCode::Code((Some(6), None)))); [31, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Red))),
} else if ansi_params[0] == 7 { [32, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Green))),
*self = self.reverse(Some(AnsiCode::Code((Some(7), None)))); [33, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Yellow))),
} else if ansi_params[0] == 8 { [34, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Blue))),
*self = self.hidden(Some(AnsiCode::Code((Some(8), None)))); [35, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Magenta))),
} else if ansi_params[0] == 9 { [36, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Cyan))),
*self = self.strike(Some(AnsiCode::Code((Some(9), None)))); [37, ..] => *self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::White))),
} else if ansi_params[0] == 30 { [40, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Black))),
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Black))); [41, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Red))),
} else if ansi_params[0] == 31 { [42, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Green))),
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Red))); [43, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Yellow))),
} else if ansi_params[0] == 32 { [44, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Blue))),
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Green))); [45, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Magenta))),
} else if ansi_params[0] == 33 { [46, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::Cyan))),
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Yellow))); [47, ..] => *self = self.background(Some(AnsiCode::NamedColor(NamedColor::White))),
} else if ansi_params[0] == 34 { _ => {
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Blue)));
} else if ansi_params[0] == 35 {
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Magenta)));
} else if ansi_params[0] == 36 {
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::Cyan)));
} else if ansi_params[0] == 37 {
*self = self.foreground(Some(AnsiCode::NamedColor(NamedColor::White)));
} else if ansi_params[0] == 40 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Black)));
} else if ansi_params[0] == 41 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Red)));
} else if ansi_params[0] == 42 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Green)));
} else if ansi_params[0] == 43 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Yellow)));
} else if ansi_params[0] == 44 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Blue)));
} else if ansi_params[0] == 45 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Magenta)));
} else if ansi_params[0] == 46 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::Cyan)));
} else if ansi_params[0] == 47 {
*self = self.background(Some(AnsiCode::NamedColor(NamedColor::White)));
} else {
// if this happens, it's a bug // if this happens, it's a bug
let _ = debug_log_to_file(format!("unhandled csi m code {:?}", ansi_params)); let _ = debug_log_to_file(format!("unhandled csi m code {:?}", ansi_params));
return; return;
} }
}
if let Some(next_params) = ansi_params.get(params_used..) { if let Some(next_params) = ansi_params.get(params_used..) {
if next_params.len() > 0 { if next_params.len() > 0 {
self.add_style_from_ansi_params(next_params); self.add_style_from_ansi_params(next_params);