Skip to content

Commit b2510fe

Browse files
tertsdiepraamsylvestre
authored andcommitted
clean up use of u16s and patterns
1 parent 2fef5be commit b2510fe

File tree

1 file changed

+24
-29
lines changed

1 file changed

+24
-29
lines changed

src/uu/more/src/more.rs

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
9898
println!("{panic_info}");
9999
}));
100100

101-
let matches = match uu_app().try_get_matches_from(args) {
102-
Ok(m) => m,
103-
Err(e) => return Err(e.into()),
104-
};
101+
let matches = uu_app().try_get_matches_from(args)?;
105102

106103
let mut options = Options::from(&matches);
107104

@@ -308,12 +305,12 @@ fn more(
308305
rows = number;
309306
}
310307

311-
let lines = break_buff(buff, usize::from(cols));
308+
let lines = break_buff(buff, cols as usize);
312309

313310
let mut pager = Pager::new(rows, lines, next_file, options);
314311

315-
if options.pattern.is_some() {
316-
match search_pattern_in_file(&pager.lines, &options.pattern) {
312+
if let Some(pat) = options.pattern.as_ref() {
313+
match search_pattern_in_file(&pager.lines, pat) {
317314
Some(number) => pager.upper_mark = number,
318315
None => {
319316
execute!(stdout, terminal::Clear(terminal::ClearType::CurrentLine))?;
@@ -446,7 +443,7 @@ struct Pager<'a> {
446443
// The current line at the top of the screen
447444
upper_mark: usize,
448445
// The number of rows that fit on the screen
449-
content_rows: u16,
446+
content_rows: usize,
450447
lines: Vec<&'a str>,
451448
next_file: Option<&'a str>,
452449
line_count: usize,
@@ -460,7 +457,7 @@ impl<'a> Pager<'a> {
460457
let line_count = lines.len();
461458
Self {
462459
upper_mark: options.from_line,
463-
content_rows: rows.saturating_sub(1),
460+
content_rows: rows.saturating_sub(1) as usize,
464461
lines,
465462
next_file,
466463
line_count,
@@ -481,21 +478,20 @@ impl<'a> Pager<'a> {
481478
// the upper mark must not grow past top of the screen at the end of the open file.
482479
if self
483480
.upper_mark
484-
.saturating_add(self.content_rows as usize * 2)
485-
.ge(&self.line_count)
481+
.saturating_add(self.content_rows * 2)
482+
>= self.line_count
486483
{
487-
self.upper_mark = self.line_count - self.content_rows as usize;
484+
self.upper_mark = self.line_count - self.content_rows;
488485
return;
489486
}
490487

491488
self.upper_mark = self.upper_mark.saturating_add(self.content_rows.into());
492489
}
493490

494491
fn page_up(&mut self) {
495-
let content_row_usize: usize = self.content_rows.into();
496492
self.upper_mark = self
497493
.upper_mark
498-
.saturating_sub(content_row_usize.saturating_add(self.line_squeezed));
494+
.saturating_sub(self.content_rows.saturating_add(self.line_squeezed));
499495

500496
if self.squeeze {
501497
let iter = self.lines.iter().take(self.upper_mark).rev();
@@ -520,7 +516,7 @@ impl<'a> Pager<'a> {
520516
// TODO: Deal with column size changes.
521517
fn page_resize(&mut self, _: u16, row: u16, option_line: Option<u16>) {
522518
if option_line.is_none() {
523-
self.content_rows = row.saturating_sub(1);
519+
self.content_rows = row.saturating_sub(1) as usize;
524520
};
525521
}
526522

@@ -541,7 +537,7 @@ impl<'a> Pager<'a> {
541537
let mut displayed_lines = Vec::new();
542538
let mut iter = self.lines.iter().skip(self.upper_mark);
543539

544-
while displayed_lines.len() < self.content_rows as usize {
540+
while displayed_lines.len() < self.content_rows {
545541
match iter.next() {
546542
Some(line) => {
547543
if self.squeeze {
@@ -608,13 +604,12 @@ impl<'a> Pager<'a> {
608604
}
609605
}
610606

611-
fn search_pattern_in_file(lines: &[&str], pattern: &Option<String>) -> Option<usize> {
612-
let pattern = pattern.clone().unwrap_or_default();
607+
fn search_pattern_in_file(lines: &[&str], pattern: &str) -> Option<usize> {
613608
if lines.is_empty() || pattern.is_empty() {
614609
return None;
615610
}
616611
for (line_number, line) in lines.iter().enumerate() {
617-
if line.contains(pattern.as_str()) {
612+
if line.contains(pattern) {
618613
return Some(line_number);
619614
}
620615
}
@@ -723,32 +718,32 @@ mod tests {
723718
#[test]
724719
fn test_search_pattern_empty_lines() {
725720
let lines = vec![];
726-
let pattern = Some(String::from("pattern"));
727-
assert_eq!(None, search_pattern_in_file(&lines, &pattern));
721+
let pattern = "pattern";
722+
assert_eq!(None, search_pattern_in_file(&lines, pattern));
728723
}
729724

730725
#[test]
731726
fn test_search_pattern_empty_pattern() {
732727
let lines = vec!["line1", "line2"];
733-
let pattern = None;
734-
assert_eq!(None, search_pattern_in_file(&lines, &pattern));
728+
let pattern = "";
729+
assert_eq!(None, search_pattern_in_file(&lines, pattern));
735730
}
736731

737732
#[test]
738733
fn test_search_pattern_found_pattern() {
739734
let lines = vec!["line1", "line2", "pattern"];
740735
let lines2 = vec!["line1", "line2", "pattern", "pattern2"];
741736
let lines3 = vec!["line1", "line2", "other_pattern"];
742-
let pattern = Some(String::from("pattern"));
743-
assert_eq!(2, search_pattern_in_file(&lines, &pattern).unwrap());
744-
assert_eq!(2, search_pattern_in_file(&lines2, &pattern).unwrap());
745-
assert_eq!(2, search_pattern_in_file(&lines3, &pattern).unwrap());
737+
let pattern = "pattern";
738+
assert_eq!(2, search_pattern_in_file(&lines, pattern).unwrap());
739+
assert_eq!(2, search_pattern_in_file(&lines2, pattern).unwrap());
740+
assert_eq!(2, search_pattern_in_file(&lines3, pattern).unwrap());
746741
}
747742

748743
#[test]
749744
fn test_search_pattern_not_found_pattern() {
750745
let lines = vec!["line1", "line2", "something"];
751-
let pattern = Some(String::from("pattern"));
752-
assert_eq!(None, search_pattern_in_file(&lines, &pattern));
746+
let pattern = "pattern";
747+
assert_eq!(None, search_pattern_in_file(&lines, pattern));
753748
}
754749
}

0 commit comments

Comments
 (0)