refactor: remove difference dependency

This commit is contained in:
Amaan Qureshi 2024-05-25 22:50:26 -04:00
parent c440f2a7c6
commit fc146ad510
4 changed files with 29 additions and 22 deletions

14
Cargo.lock generated
View file

@ -432,12 +432,6 @@ version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
[[package]]
name = "difference"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
[[package]]
name = "dirs"
version = "5.0.1"
@ -1198,6 +1192,12 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "similar"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640"
[[package]]
name = "slice-group-by"
version = "0.3.1"
@ -1395,7 +1395,6 @@ dependencies = [
"clap",
"ctor",
"ctrlc",
"difference",
"dirs",
"filetime",
"glob",
@ -1415,6 +1414,7 @@ dependencies = [
"serde",
"serde_derive",
"serde_json",
"similar",
"smallbitvec",
"tempfile",
"tiny_http",

View file

@ -51,7 +51,6 @@ clap = { version = "4.5.4", features = [
] }
ctor = "0.2.8"
ctrlc = { version = "3.4.4", features = ["termination"] }
difference = "2.0.0"
dirs = "5.0.1"
filetime = "0.2.23"
fs4 = "0.8.3"
@ -75,6 +74,7 @@ semver = "1.0.23"
serde = { version = "1.0.202", features = ["derive"] }
serde_derive = "1.0.197"
serde_json = { version = "1.0.117", features = ["preserve_order"] }
similar = "2.5.0"
smallbitvec = "2.5.3"
tempfile = "3.10.1"
thiserror = "1.0.61"

View file

@ -29,7 +29,6 @@ anstyle.workspace = true
anyhow.workspace = true
clap.workspace = true
ctrlc.workspace = true
difference.workspace = true
dirs.workspace = true
filetime.workspace = true
glob.workspace = true
@ -47,6 +46,7 @@ semver.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
similar.workspace = true
smallbitvec.workspace = true
tiny_http.workspace = true
walkdir.workspace = true

View file

@ -9,13 +9,13 @@ use std::{
use anstyle::{AnsiColor, Color, Style};
use anyhow::{anyhow, Context, Result};
use difference::{Changeset, Difference};
use indoc::indoc;
use lazy_static::lazy_static;
use regex::{
bytes::{Regex as ByteRegex, RegexBuilder as ByteRegexBuilder},
Regex,
};
use similar::{ChangeTag, TextDiff};
use tree_sitter::{format_sexp, Language, LogType, Parser, Query};
use walkdir::WalkDir;
@ -276,32 +276,39 @@ pub fn print_diff_key() {
}
pub fn print_diff(actual: &str, expected: &str, use_color: bool) {
let changeset = Changeset::new(actual, expected, "\n");
for diff in &changeset.diffs {
match diff {
Difference::Same(part) => {
let diff = TextDiff::from_lines(actual, expected);
for diff in diff.iter_all_changes() {
match diff.tag() {
ChangeTag::Equal => {
if use_color {
print!("{part}{}", changeset.split);
print!("{diff}");
} else {
print!("correct:\n{part}{}", changeset.split);
print!(" {diff}");
}
}
Difference::Add(part) => {
ChangeTag::Insert => {
if use_color {
println!("{}{}", paint(Some(AnsiColor::Green), part), changeset.split);
print!("{}", paint(Some(AnsiColor::Green), diff.as_str().unwrap()));
} else {
print!("expected:\n{part}{}", changeset.split);
print!("+{diff}");
}
if diff.missing_newline() {
println!();
}
}
Difference::Rem(part) => {
ChangeTag::Delete => {
if use_color {
println!("{}{}", paint(Some(AnsiColor::Red), part), changeset.split);
print!("{}", paint(Some(AnsiColor::Red), diff.as_str().unwrap()));
} else {
print!("unexpected:\n{part}{}", changeset.split);
print!("-{diff}");
}
if diff.missing_newline() {
println!();
}
}
}
}
println!();
}