1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-03 03:42:26 +01:00

Support for line range plus syntax

This commit is contained in:
Bojan Durdevic
2021-08-21 13:55:52 -04:00
committed by David Peter
parent b3247d9364
commit 0748783404
4 changed files with 36 additions and 3 deletions

View File

@@ -47,7 +47,16 @@ impl LineRange {
}
2 => {
new_range.lower = line_numbers[0].parse()?;
new_range.upper = line_numbers[1].parse()?;
new_range.upper = if line_numbers[1].bytes().next().unwrap() == b'+' {
let more_lines = &line_numbers[1][1..]
.parse()
.map_err(|_| "Invalid line number after +")?;
new_range.lower + more_lines
} else {
line_numbers[1].parse()?
};
Ok(new_range)
}
_ => Err(
@@ -100,6 +109,23 @@ fn test_parse_fail() {
assert!(range.is_err());
}
#[test]
fn test_parse_plus() {
let range = LineRange::from("40:+10").expect("Shouldn't fail on test!");
assert_eq!(40, range.lower);
assert_eq!(50, range.upper);
}
#[test]
fn test_parse_plus_fail() {
let range = LineRange::from("40:+z");
assert!(range.is_err());
let range = LineRange::from("40:+-10");
assert!(range.is_err());
let range = LineRange::from("40:+");
assert!(range.is_err());
}
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum RangeCheckResult {
// Within one of the given ranges