24 lines
764 B
Rust
24 lines
764 B
Rust
use console::Style;
|
|
use similar::text::{ChangeTag, TextDiff};
|
|
|
|
fn main() {
|
|
let diff = TextDiff::from_lines(
|
|
"Hello World\nThis is the second line.\nThis is the third.",
|
|
"Hallo Welt\nThis is the second line.\nThis is life.\nMoar and more",
|
|
);
|
|
|
|
for op in diff.ops() {
|
|
for change in diff.iter_changes(op) {
|
|
let (sign, style) = match change.tag() {
|
|
ChangeTag::Delete => ("-", Style::new().red()),
|
|
ChangeTag::Insert => ("+", Style::new().green()),
|
|
ChangeTag::Equal => (" ", Style::new()),
|
|
};
|
|
print!(
|
|
"{}{}",
|
|
style.apply_to(sign).bold(),
|
|
style.apply_to(change.value())
|
|
);
|
|
}
|
|
}
|
|
}
|