Skip to content
This repository was archived by the owner on Dec 29, 2021. It is now read-only.

Commit 67aa602

Browse files
committed
WIP: Rewrite everything - and it compiles
1 parent 4bf99e7 commit 67aa602

File tree

5 files changed

+165
-346
lines changed

5 files changed

+165
-346
lines changed

Cargo.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ default = []
1515
dev = ["clippy"]
1616

1717
[dependencies]
18-
ansi_term = "0.6.3"
19-
difference = "0.4.0"
20-
clippy = {version = "0.0.23", optional = true}
18+
colored = "1.4"
19+
difference = "1.0"
20+
error-chain = "0.10.0"
21+
clippy = {version = "*", optional = true}
2122

2223
[build-dependencies]
2324
skeptic = "0.5"

src/cli_error.rs

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/diff.rs

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,46 @@
1-
use std::fmt;
1+
extern crate colored;
2+
use self::colored::Colorize;
23

3-
use difference::Difference;
4-
use ansi_term::Colour::{Green, Red};
4+
use difference::{Difference, Changeset};
5+
use std::fmt::Write;
56

6-
pub fn render(changeset: &[Difference]) -> Result<String, fmt::Error> {
7-
use std::fmt::Write;
7+
use errors::*;
88

9+
pub fn render(Changeset { diffs, .. }: Changeset) -> Result<String> {
910
let mut t = String::new();
1011

11-
for change in changeset {
12-
match *change {
12+
for i in 0..diffs.len() {
13+
match diffs[i] {
1314
Difference::Same(ref x) => {
14-
for line in x.lines() {
15-
try!(writeln!(t, " {}", line));
16-
}
15+
writeln!(t, " {}", x)?;
1716
}
1817
Difference::Add(ref x) => {
19-
try!(write!(t, "{}", Green.paint("+")));
20-
try!(writeln!(t, "{}", Green.paint(x)));
18+
match diffs[i - 1] {
19+
Difference::Rem(ref y) => {
20+
write!(t, "{}", "+".green())?;
21+
let Changeset { diffs, .. } = Changeset::new(y, x, " ");
22+
for c in diffs {
23+
match c {
24+
Difference::Same(ref z) => {
25+
write!(t, "{}", z.green())?;
26+
write!(t, " ")?;
27+
}
28+
Difference::Add(ref z) => {
29+
write!(t, "{}", z.white().on_green())?;
30+
write!(t, " ")?;
31+
}
32+
_ => (),
33+
}
34+
}
35+
writeln!(t, "")?;
36+
}
37+
_ => {
38+
writeln!(t, "{}", format!("+{}", x).green().dimmed())?;
39+
}
40+
};
2141
}
2242
Difference::Rem(ref x) => {
23-
try!(write!(t, "{}", Red.paint("-")));
24-
try!(writeln!(t, "{}", Red.paint(x)));
43+
writeln!(t, "{}", format!("-{}", x).red())?;
2544
}
2645
}
2746
}

src/errors.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
error_chain! {
2+
foreign_links {
3+
Io(::std::io::Error);
4+
Fmt(::std::fmt::Error);
5+
}
6+
}

0 commit comments

Comments
 (0)