summaryrefslogtreecommitdiffstats
path: root/src/edits.rs
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2019-08-04 11:59:59 -0700
committerDan Davison <dandavison7@gmail.com>2019-08-06 23:11:00 -0700
commit130029449c1048dc1ea409a3094f1a64e3092249 (patch)
treefe80d589230c02b0f73c3123b793a9f7a6415ba9 /src/edits.rs
parent8db9a7a786525e560985786448783d234ba9c2cd (diff)
Clean up distance-metrics
Diffstat (limited to 'src/edits.rs')
-rw-r--r--src/edits.rs19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/edits.rs b/src/edits.rs
index 230f1e22..67933688 100644
--- a/src/edits.rs
+++ b/src/edits.rs
@@ -13,7 +13,7 @@ pub fn infer_edits<'a, EditOperation>(
deletion: EditOperation,
non_insertion: EditOperation,
insertion: EditOperation,
- distance_threshold: f64,
+ max_line_distance: f64,
) -> (
Vec<Vec<(EditOperation, &'a str)>>, // annotated minus lines
Vec<Vec<(EditOperation, &'a str)>>, // annotated plus lines
@@ -34,8 +34,7 @@ where
let plus_line = plus_line.trim_end();
let alignment = align::Alignment::new(tokenize(minus_line), tokenize(plus_line));
-
- if alignment.normalized_edit_distance() < distance_threshold {
+ if alignment.distance() <= max_line_distance {
// minus_line and plus_line are inferred to be a homologous pair.
// Emit as unpaired the plus lines already considered and rejected
@@ -187,8 +186,6 @@ mod tests {
use EditOperation::*;
- const DISTANCE_MAX: f64 = 2.0;
-
#[test]
fn test_tokenize_1() {
assert_eq!(
@@ -413,7 +410,7 @@ mod tests {
minus_lines: Vec<&str>,
plus_lines: Vec<&str>,
expected_edits: Edits,
- distance_threshold: f64,
+ max_line_distance: f64,
) {
let minus_lines = minus_lines
.into_iter()
@@ -430,25 +427,25 @@ mod tests {
Deletion,
PlusNoop,
Insertion,
- distance_threshold,
+ max_line_distance,
);
assert_eq!(actual_edits, expected_edits);
}
// Assert that no edits are inferred for the supplied minus and plus lines.
- fn assert_no_edits(minus_lines: Vec<&str>, plus_lines: Vec<&str>, distance_threshold: f64) {
+ fn assert_no_edits(minus_lines: Vec<&str>, plus_lines: Vec<&str>, max_line_distance: f64) {
let expected_edits = (
minus_lines.iter().map(|s| vec![(MinusNoop, *s)]).collect(),
plus_lines.iter().map(|s| vec![(PlusNoop, *s)]).collect(),
);
- assert_edits(minus_lines, plus_lines, expected_edits, distance_threshold)
+ assert_edits(minus_lines, plus_lines, expected_edits, max_line_distance)
}
// Assertions for a single pair of lines, considered as a homologous pair. We set
- // distance_threshold = DISTANCE_MAX in order that the pair will be inferred to be homologous.
+ // max_line_distance = 1.0 in order that the pair will be inferred to be homologous.
fn assert_paired_edits(minus_lines: Vec<&str>, plus_lines: Vec<&str>, expected_edits: Edits) {
assert_consistent_pairs(&expected_edits);
- assert_edits(minus_lines, plus_lines, expected_edits, DISTANCE_MAX);
+ assert_edits(minus_lines, plus_lines, expected_edits, 1.0);
}
fn assert_consistent_pairs(edits: &Edits) {