Print left lines and right lines separately

pull/2/head
Wilfred Hughes 2019-01-25 09:44:16 +07:00
parent 178864e416
commit c49dfc8c37
2 changed files with 15 additions and 13 deletions

@ -205,10 +205,9 @@ pub fn add_context(lines: &[LineNumber], context: usize, max_line: LineNumber) -
result
}
pub fn max_line(before_str: &str, after_str: &str) -> LineNumber {
let before_lines: Vec<_> = before_str.lines().collect();
let after_lines: Vec<_> = after_str.lines().collect();
LineNumber::from(max(before_lines.len(), after_lines.len()) - 1)
pub fn max_line(s: &str) -> LineNumber {
let lines: Vec<_> = s.lines().collect();
LineNumber::from(lines.len() - 1)
}
#[test]

@ -127,25 +127,28 @@ fn main() {
let differences = difference_positions(&before_src, &after_src, language);
let mut lines = vec![];
lines.extend(relevant_lines(&removed(&differences), &before_src));
lines.extend(relevant_lines(&added(&differences), &after_src));
lines.sort();
lines.dedup();
let mut left_lines = relevant_lines(&removed(&differences), &before_src);
left_lines.sort();
left_lines.dedup();
let mut right_lines = relevant_lines(&added(&differences), &after_src);
right_lines.sort();
right_lines.dedup();
let (mut before_colored, mut after_colored) =
highlight_differences(&before_src, &after_src, &differences);
let context = matches.value_of("LINES").unwrap_or("3");
let context = usize::from_str_radix(context, 10).unwrap();
let max_line_num = max_line(&before_src, &after_src);
lines = add_context(&lines, context, max_line_num);
left_lines = add_context(&left_lines, context, max_line(&before_src));
right_lines = add_context(&right_lines, context, max_line(&after_src));
// TODO: this is very dumb. We assume the left and right line
// up (rather than showing gaps if we've just added a big
// block of text).
before_colored = filter_lines(&before_colored, &lines);
after_colored = filter_lines(&after_colored, &lines);
before_colored = filter_lines(&before_colored, &left_lines);
after_colored = filter_lines(&after_colored, &right_lines);
print!(
"{}",