From 0bbc7f52192def87b5fb3240c79c966fe540b129 Mon Sep 17 00:00:00 2001 From: Steve Pentland Date: Tue, 24 Apr 2018 17:15:53 -0400 Subject: [PATCH] Update regex and match, update comments --- src/internal.rs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/internal.rs b/src/internal.rs index 10c90ec..a2ad0a2 100644 --- a/src/internal.rs +++ b/src/internal.rs @@ -19,7 +19,7 @@ use regex_syntax::hir::Hir; use regex_syntax::Parser; lazy_static! { - static ref SIZE_CAPTURES: Regex = { Regex::new(r"(?i)^([+-])(\d+)([bkmgt]i?)b?$").unwrap() }; + static ref SIZE_CAPTURES: Regex = { Regex::new(r"(?i)^([+-])(\d+)(b|[kmgt]i?b?)$").unwrap() }; } /// Whether or not to show @@ -53,12 +53,13 @@ pub struct SizeFilter { limit_type: SizeLimitType, } -// SI units for now +// SI prefixes (powers of 10) const KILO: u64 = 1000; const MEGA: u64 = KILO * 1000; const GIGA: u64 = MEGA * 1000; const TERA: u64 = GIGA * 1000; +// Binary prefixes (powers of 2) const KIBI: u64 = 1024; const MEBI: u64 = KIBI * 1024; const GIBI: u64 = MEBI * 1024; @@ -88,16 +89,17 @@ impl SizeFilter { }, }; - let multiplier = match &captures.get(3).map_or("k", |m| m.as_str()).to_lowercase()[..] { - "ki" => KIBI, - "k" => KILO, - "mi" => MEBI, - "m" => MEGA, - "gi" => GIBI, - "g" => GIGA, - "ti" => TEBI, - "t" => TERA, - _ => 1, // Any we don't understand we'll just say the number of bytes + let multiplier = match &captures.get(3).map_or("b", |m| m.as_str()).to_lowercase()[..] { + v if v.starts_with("ki") => KIBI, + v if v.starts_with("k") => KILO, + v if v.starts_with("mi") => MEBI, + v if v.starts_with("m") => MEGA, + v if v.starts_with("gi") => GIBI, + v if v.starts_with("g") => GIGA, + v if v.starts_with("ti") => TEBI, + v if v.starts_with("t") => TERA, + "b" => 1, + _ => return None, }; Some(SizeFilter { @@ -452,6 +454,8 @@ gen_size_filter_failure! { ensure_invalid_unit_returns_none_1: "+50a", ensure_invalid_unit_returns_none_2: "-10v", ensure_invalid_unit_returns_none_3: "+1Mv", + ensure_bib_format_returns_none: "+1bib", + ensure_bb_format_returns_none: "+1bb", } #[test]