diff options
author | Dan Davison <dandavison7@gmail.com> | 2020-06-24 19:33:34 -0400 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2020-06-25 15:18:19 -0400 |
commit | 91f6dfc28006b5355089e7c5ccb3969e7d6c0649 (patch) | |
tree | 2f047ced82e96af470815aaeb4acb7f62db888d3 | |
parent | 2c1db25a98cd660d56e1197056d4ccbbb3b3182f (diff) |
Refactor: determine number styles
-rw-r--r-- | src/cli.rs | 8 | ||||
-rw-r--r-- | src/features/numbers.rs | 43 |
2 files changed, 15 insertions, 36 deletions
@@ -326,14 +326,14 @@ pub struct Opt { #[structopt(short = "n", long = "number")] pub show_line_numbers: bool, - /// Style (foreground, background, attributes) for the minus line numbers - /// (--number), if --number is set. See STYLES section. Defaults to + /// Style (foreground, background, attributes) for the minus file line numbers (line numbers in + /// the old version) See STYLES and LINE NUMBERS sections. Defaults to /// --hunk-header-decoration-style. #[structopt(long = "number-minus-style", default_value = "auto")] pub number_minus_style: String, - /// Style (foreground, background, attributes) for the plus line numbers - /// (--number), if --number is set. See STYLES section. Defaults to + /// Style (foreground, background, attributes) for the plus file line numbers (line numbers in + /// the old version) See STYLES and LINE NUMBERS sections. Defaults to /// --hunk-header-decoration-style. #[structopt(long = "number-plus-style", default_value = "auto")] pub number_plus_style: String, diff --git a/src/features/numbers.rs b/src/features/numbers.rs index b5d6c547..91fac6fc 100644 --- a/src/features/numbers.rs +++ b/src/features/numbers.rs @@ -11,37 +11,30 @@ pub fn format_and_paint_line_numbers<'a>( line_numbers: &'a Option<(Option<usize>, Option<usize>)>, config: &'a config::Config, ) -> Vec<ansi_term::ANSIGenericString<'a, str>> { - let (minus, plus) = line_numbers.unwrap(); + let (minus_number, plus_number) = line_numbers.unwrap(); - let number_minus_style = get_zero_or_default_style( - minus, - plus, - config.number_zero_style, - config.number_minus_style, - ); - - let number_plus_style = get_zero_or_default_style( - minus, - plus, - config.number_zero_style, - config.number_plus_style, - ); + // If both minus and plus numbers are present then the line is a zero line. + let (number_minus_style, number_plus_style) = + match (minus_number, plus_number, config.number_zero_style) { + (Some(_), Some(_), Some(zero_style)) => (zero_style, zero_style), + _ => (config.number_minus_style, config.number_plus_style), + }; let mut formatted_numbers = Vec::new(); formatted_numbers.extend(format_and_paint_line_number_field( &config.number_left_format, &config.number_left_format_style, - minus, - plus, + minus_number, + plus_number, &number_minus_style, &number_plus_style, )); formatted_numbers.extend(format_and_paint_line_number_field( &config.number_right_format, &config.number_right_format_style, - minus, - plus, + minus_number, + plus_number, &number_minus_style, &number_plus_style, )); @@ -112,20 +105,6 @@ fn format_line_number(line_number: Option<usize>, alignment: &str, width: &str) } } -// If both minus and plus numbers are present then the line must be a zero line: return the zero -// style. Otherwise, return `default-style`. -fn get_zero_or_default_style( - minus: Option<usize>, - plus: Option<usize>, - zero_style: Option<Style>, - default_style: Style, -) -> Style { - match (zero_style, minus, plus) { - (Some(z), Some(_), Some(_)) => z, - _ => default_style, - } -} - #[cfg(test)] pub mod tests { use console::strip_ansi_codes; |