Skip to content

Commit

Permalink
Merge pull request #5100 from cakebaker/nl_shorten_enum_variants
Browse files Browse the repository at this point in the history
nl: shorten variants of NumberingStyle enum
  • Loading branch information
sylvestre authored Jul 25, 2023
2 parents 9449eda + 013e945 commit 4004281
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 19 deletions.
10 changes: 4 additions & 6 deletions src/uu/nl/src/helper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,15 @@ use crate::options;
// parse_style parses a style string into a NumberingStyle.
fn parse_style(chars: &[char]) -> Result<crate::NumberingStyle, String> {
if chars.len() == 1 && chars[0] == 'a' {
Ok(crate::NumberingStyle::NumberForAll)
Ok(crate::NumberingStyle::All)
} else if chars.len() == 1 && chars[0] == 't' {
Ok(crate::NumberingStyle::NumberForNonEmpty)
Ok(crate::NumberingStyle::NonEmpty)
} else if chars.len() == 1 && chars[0] == 'n' {
Ok(crate::NumberingStyle::NumberForNone)
Ok(crate::NumberingStyle::None)
} else if chars.len() > 1 && chars[0] == 'p' {
let s: String = chars[1..].iter().cloned().collect();
match regex::Regex::new(&s) {
Ok(re) => Ok(crate::NumberingStyle::NumberForRegularExpression(Box::new(
re,
))),
Ok(re) => Ok(crate::NumberingStyle::Regex(Box::new(re))),
Err(_) => Err(String::from("Illegal regular expression")),
}
} else {
Expand Down
25 changes: 12 additions & 13 deletions src/uu/nl/src/nl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ pub struct Settings {
impl Default for Settings {
fn default() -> Self {
Self {
header_numbering: NumberingStyle::NumberForNone,
body_numbering: NumberingStyle::NumberForAll,
footer_numbering: NumberingStyle::NumberForNone,
header_numbering: NumberingStyle::None,
body_numbering: NumberingStyle::All,
footer_numbering: NumberingStyle::None,
section_delimiter: ['\\', ':'],
starting_line_number: 1,
line_increment: 1,
Expand All @@ -64,12 +64,11 @@ impl Default for Settings {
// 2. Number only nonempty lines
// 3. Don't number any lines at all
// 4. Number all lines that match a basic regular expression.
#[allow(clippy::enum_variant_names)]
enum NumberingStyle {
NumberForAll,
NumberForNonEmpty,
NumberForNone,
NumberForRegularExpression(Box<regex::Regex>),
All,
NonEmpty,
None,
Regex(Box<regex::Regex>),
}

// NumberFormat specifies how line numbers are output within their allocated
Expand Down Expand Up @@ -279,7 +278,7 @@ fn nl<T: Read>(reader: &mut BufReader<T>, settings: &Settings) -> UResult<()> {
let mut empty_line_count: u64 = 0;
// Initially, we use the body's line counting settings
let mut regex_filter = match settings.body_numbering {
NumberingStyle::NumberForRegularExpression(ref re) => re,
NumberingStyle::Regex(ref re) => re,
_ => &regexp,
};
let mut line_filter: fn(&str, &regex::Regex) -> bool = pass_regex;
Expand Down Expand Up @@ -340,16 +339,16 @@ fn nl<T: Read>(reader: &mut BufReader<T>, settings: &Settings) -> UResult<()> {
// a catch-all here.
_ => &settings.body_numbering,
} {
NumberingStyle::NumberForAll => {
NumberingStyle::All => {
line_filter = pass_all;
}
NumberingStyle::NumberForNonEmpty => {
NumberingStyle::NonEmpty => {
line_filter = pass_nonempty;
}
NumberingStyle::NumberForNone => {
NumberingStyle::None => {
line_filter = pass_none;
}
NumberingStyle::NumberForRegularExpression(ref re) => {
NumberingStyle::Regex(ref re) => {
line_filter = pass_regex;
regex_filter = re;
}
Expand Down

0 comments on commit 4004281

Please sign in to comment.