Skip to content

Commit

Permalink
Replace unmaintained crate difference by similar
Browse files Browse the repository at this point in the history
Closes #54
  • Loading branch information
theredfish authored Dec 18, 2021
1 parent d43a5d7 commit f5d319c
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 16 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ async-object-pool = "0.1"
crossbeam-utils = "0.8"
futures-util = "0.3"
basic-cookies = "0.1"
difference = "2.0"
similar = "2.1.0"
levenshtein = "1.0"
form_urlencoded = "1.0"

Expand Down
2 changes: 1 addition & 1 deletion src/api/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,7 @@ mod test {
Diff::Add(String::from("oa")),
Diff::Same(String::from("st")),
],
distance: 5,
distance: 5.0,
tokenizer: Tokenizer::Line,
}),
}],
Expand Down
2 changes: 1 addition & 1 deletion src/common/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ pub enum Diff {
#[derive(Debug, Serialize, Deserialize)]
pub struct DiffResult {
pub differences: Vec<Diff>,
pub distance: i32,
pub distance: f32,
pub tokenizer: Tokenizer,
}

Expand Down
24 changes: 11 additions & 13 deletions src/server/matchers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ use std::collections::BTreeMap;
use std::fmt::Display;

use basic_cookies::Cookie;
use difference::{Changeset, Difference};
use serde::{Deserialize, Serialize};
use similar::{ChangeTag, TextDiff};

use crate::common::data::{
Diff, DiffResult, HttpMockRequest, Mismatch, RequestRequirements, Tokenizer,
Expand All @@ -16,23 +16,21 @@ pub(crate) mod targets;
pub(crate) mod transformers;

pub(crate) fn diff_str(base: &str, edit: &str, tokenizer: Tokenizer) -> DiffResult {
let splitter = match tokenizer {
Tokenizer::Line => "\n",
Tokenizer::Word => " ",
Tokenizer::Character => "",
let changes = match tokenizer {
Tokenizer::Line => TextDiff::from_lines(base, edit),
Tokenizer::Word => TextDiff::from_words(base, edit),
Tokenizer::Character => TextDiff::from_chars(base, edit),
};

let changes = Changeset::new(base, edit, splitter);
DiffResult {
tokenizer,
distance: changes.distance,
distance: changes.ratio(),
differences: changes
.diffs
.iter()
.map(|d| match d {
Difference::Same(v) => Diff::Same(v.to_owned()),
Difference::Add(v) => Diff::Add(v.to_owned()),
Difference::Rem(v) => Diff::Rem(v.to_owned()),
.iter_all_changes()
.map(|change| match change.tag() {
ChangeTag::Equal => Diff::Same(change.to_string_lossy().to_string()),
ChangeTag::Insert => Diff::Add(change.to_string_lossy().to_string()),
ChangeTag::Delete => Diff::Rem(change.to_string_lossy().to_string()),
})
.collect(),
}
Expand Down

0 comments on commit f5d319c

Please sign in to comment.