@@ -5,6 +5,8 @@ use std::path::{Component, Path};
5
5
use std:: { fs, io} ;
6
6
use std:: { ops:: RangeInclusive , path:: PathBuf } ;
7
7
8
+ use crate :: cli:: LinesChangedOnly ;
9
+
8
10
/// A structure to represent a file's path and line changes.
9
11
#[ derive( Debug ) ]
10
12
pub struct FileObj {
@@ -52,7 +54,7 @@ impl FileObj {
52
54
/// A helper function to consolidate a [Vec<u32>] of line numbers into a
53
55
/// [Vec<RangeInclusive<u32>>] in which each range describes the beginning and
54
56
/// ending of a group of consecutive line numbers.
55
- fn consolidate_numbers_to_ranges ( lines : & Vec < u32 > ) -> Vec < RangeInclusive < u32 > > {
57
+ fn consolidate_numbers_to_ranges ( lines : & [ u32 ] ) -> Vec < RangeInclusive < u32 > > {
56
58
let mut range_start = None ;
57
59
let mut ranges: Vec < RangeInclusive < u32 > > = Vec :: new ( ) ;
58
60
for ( index, number) in lines. iter ( ) . enumerate ( ) {
@@ -69,13 +71,11 @@ impl FileObj {
69
71
ranges
70
72
}
71
73
72
- pub fn get_ranges ( & self , lines_changed_only : u8 ) -> Vec < RangeInclusive < u32 > > {
73
- if lines_changed_only == 2 {
74
- self . diff_chunks . to_vec ( )
75
- } else if lines_changed_only == 1 {
76
- self . added_ranges . to_vec ( )
77
- } else {
78
- Vec :: new ( )
74
+ pub fn get_ranges ( & self , lines_changed_only : & LinesChangedOnly ) -> Vec < RangeInclusive < u32 > > {
75
+ match lines_changed_only {
76
+ LinesChangedOnly :: Diff => self . diff_chunks . to_vec ( ) ,
77
+ LinesChangedOnly :: On => self . added_ranges . to_vec ( ) ,
78
+ _ => Vec :: new ( ) ,
79
79
}
80
80
}
81
81
}
@@ -249,6 +249,7 @@ mod test {
249
249
use std:: path:: PathBuf ;
250
250
251
251
use super :: { get_line_cols_from_offset, list_source_files, normalize_path, FileObj } ;
252
+ use crate :: cli:: LinesChangedOnly ;
252
253
use crate :: cli:: { get_arg_parser, parse_ignore} ;
253
254
use crate :: common_fs:: is_file_in_list;
254
255
@@ -406,7 +407,7 @@ mod test {
406
407
#[ test]
407
408
fn get_ranges_0 ( ) {
408
409
let file_obj = FileObj :: new ( PathBuf :: from ( "tests/demo/demo.cpp" ) ) ;
409
- let ranges = file_obj. get_ranges ( 0 ) ;
410
+ let ranges = file_obj. get_ranges ( & LinesChangedOnly :: Off ) ;
410
411
assert ! ( ranges. is_empty( ) ) ;
411
412
}
412
413
@@ -419,7 +420,7 @@ mod test {
419
420
added_lines,
420
421
diff_chunks. clone ( ) ,
421
422
) ;
422
- let ranges = file_obj. get_ranges ( 2 ) ;
423
+ let ranges = file_obj. get_ranges ( & LinesChangedOnly :: Diff ) ;
423
424
assert_eq ! ( ranges, diff_chunks) ;
424
425
}
425
426
@@ -432,7 +433,7 @@ mod test {
432
433
added_lines,
433
434
diff_chunks,
434
435
) ;
435
- let ranges = file_obj. get_ranges ( 1 ) ;
436
+ let ranges = file_obj. get_ranges ( & LinesChangedOnly :: On ) ;
436
437
assert_eq ! ( ranges, vec![ 4 ..=5 , 9 ..=9 ] ) ;
437
438
}
438
439
}
0 commit comments