| extern crate term; |
| extern crate difference; |
| use difference::{Difference, Changeset}; |
| use std::io::Write; |
| |
| // Screenshot: |
| // https://raw.githubusercontent.com/johannhof/difference.rs/master/assets/word-underline.png |
| |
| #[allow(unused_must_use)] |
| fn main() { |
| let text1 = "Roses are red, violets are blue."; |
| let text2 = "Roses are blue, violets are"; |
| |
| let mut t = term::stdout().unwrap(); |
| |
| let Changeset { diffs, .. } = Changeset::new(text1, text2, ""); |
| |
| for c in &diffs { |
| match *c { |
| Difference::Same(ref z) => { |
| t.fg(term::color::RED).unwrap(); |
| write!(t, "{}", z); |
| } |
| Difference::Rem(ref z) => { |
| t.fg(term::color::WHITE).unwrap(); |
| t.bg(term::color::RED).unwrap(); |
| write!(t, "{}", z); |
| t.reset().unwrap(); |
| } |
| _ => (), |
| } |
| } |
| t.reset().unwrap(); |
| |
| writeln!(t, ""); |
| |
| for c in &diffs { |
| match *c { |
| Difference::Same(ref z) => { |
| t.fg(term::color::GREEN).unwrap(); |
| write!(t, "{}", z); |
| } |
| Difference::Add(ref z) => { |
| t.fg(term::color::WHITE).unwrap(); |
| t.bg(term::color::GREEN).unwrap(); |
| write!(t, "{}", z); |
| t.reset().unwrap(); |
| } |
| _ => (), |
| } |
| } |
| t.reset().unwrap(); |
| t.flush().unwrap(); |
| } |