head: remove clippy::cognitive_complexity by moving some content in a function (#5366)

* head: remove a clippy::cognitive_complexity by moving some content into a function

* Remove duplicate comment
This commit is contained in:
Sylvestre Ledru 2023-10-07 13:37:24 +02:00 committed by GitHub
parent 91c8724fd5
commit 3e1d3caceb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -13,7 +13,6 @@ pub enum ParseError {
} }
/// Parses obsolete syntax /// Parses obsolete syntax
/// head -NUM\[kmzv\] // spell-checker:disable-line /// head -NUM\[kmzv\] // spell-checker:disable-line
#[allow(clippy::cognitive_complexity)]
pub fn parse_obsolete(src: &str) -> Option<Result<impl Iterator<Item = OsString>, ParseError>> { pub fn parse_obsolete(src: &str) -> Option<Result<impl Iterator<Item = OsString>, ParseError>> {
let mut chars = src.char_indices(); let mut chars = src.char_indices();
if let Some((_, '-')) = chars.next() { if let Some((_, '-')) = chars.next() {
@ -30,7 +29,22 @@ pub fn parse_obsolete(src: &str) -> Option<Result<impl Iterator<Item = OsString>
} }
} }
if has_num { if has_num {
match src[1..=num_end].parse::<usize>() { process_num_block(&src[1..=num_end], last_char, &mut chars)
} else {
None
}
} else {
None
}
}
/// Processes the numeric block of the input string to generate the appropriate options.
fn process_num_block(
src: &str,
last_char: char,
chars: &mut std::str::CharIndices,
) -> Option<Result<impl Iterator<Item = OsString>, ParseError>> {
match src.parse::<usize>() {
Ok(num) => { Ok(num) => {
let mut quiet = false; let mut quiet = false;
let mut verbose = false; let mut verbose = false;
@ -38,7 +52,7 @@ pub fn parse_obsolete(src: &str) -> Option<Result<impl Iterator<Item = OsString>
let mut multiplier = None; let mut multiplier = None;
let mut c = last_char; let mut c = last_char;
loop { loop {
// not that here, we only match lower case 'k', 'c', and 'm' // note that here, we only match lower case 'k', 'c', and 'm'
match c { match c {
// we want to preserve order // we want to preserve order
// this also saves us 1 heap allocation // this also saves us 1 heap allocation
@ -89,13 +103,8 @@ pub fn parse_obsolete(src: &str) -> Option<Result<impl Iterator<Item = OsString>
} }
Err(_) => Some(Err(ParseError::Overflow)), Err(_) => Some(Err(ParseError::Overflow)),
} }
} else {
None
}
} else {
None
}
} }
/// Parses an -c or -n argument, /// Parses an -c or -n argument,
/// the bool specifies whether to read from the end /// the bool specifies whether to read from the end
pub fn parse_num(src: &str) -> Result<(u64, bool), ParseSizeError> { pub fn parse_num(src: &str) -> Result<(u64, bool), ParseSizeError> {