From 6922e7f0570cb0581a6d31a580297d808d69c986 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 4 Jun 2024 21:39:58 +0200 Subject: [PATCH] cksum/hashsum: Simplify the determine_regex function --- src/uucore/src/lib/features/checksum.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/uucore/src/lib/features/checksum.rs b/src/uucore/src/lib/features/checksum.rs index 298826a7c..4691c9132 100644 --- a/src/uucore/src/lib/features/checksum.rs +++ b/src/uucore/src/lib/features/checksum.rs @@ -2,7 +2,7 @@ // // For the full copyright and license information, please view the LICENSE // file that was distributed with this source code. -// spell-checker:ignore anotherfile invalidchecksum +// spell-checker:ignore anotherfile invalidchecksum regexes use data_encoding::BASE64; use os_display::Quotable; @@ -301,21 +301,19 @@ fn determine_regex( input_is_stdin: bool, lines: &[String], ) -> UResult<(Regex, bool)> { - let algo_based_regex = Regex::new(ALGO_BASED_REGEX).unwrap(); - let double_space_regex = Regex::new(DOUBLE_SPACE_REGEX).unwrap(); - let single_space_regex = Regex::new(SINGLE_SPACE_REGEX).unwrap(); - let algo_based_regex_base64 = Regex::new(ALGO_BASED_REGEX_BASE64).unwrap(); + let regexes = [ + (Regex::new(ALGO_BASED_REGEX).unwrap(), true), + (Regex::new(DOUBLE_SPACE_REGEX).unwrap(), false), + (Regex::new(SINGLE_SPACE_REGEX).unwrap(), false), + (Regex::new(ALGO_BASED_REGEX_BASE64).unwrap(), true), + ]; for line in lines { let line_trim = line.trim(); - if algo_based_regex.is_match(line_trim) { - return Ok((algo_based_regex, true)); - } else if double_space_regex.is_match(line_trim) { - return Ok((double_space_regex, false)); - } else if single_space_regex.is_match(line_trim) { - return Ok((single_space_regex, false)); - } else if algo_based_regex_base64.is_match(line_trim) { - return Ok((algo_based_regex_base64, true)); + for (regex, is_algo_based) in ®exes { + if regex.is_match(line_trim) { + return Ok((regex.clone(), *is_algo_based)); + } } } Err(ChecksumError::NoProperlyFormattedChecksumLinesFound {