use std::{fs::read, io, path::Path};
use distance::levenshtein;
fn calculate_diff(content1: &str, content2: &str) -> (f64, f64) {
let diff_chars_count = levenshtein(content1, content2);
let max_len = content1.chars().count().max(content2.chars().count());
let diff_percentage = (diff_chars_count as f64 / max_len as f64) * 100.0;
let same_percatage = 100.0 - diff_percentage;
(diff_percentage, same_percatage)
}
pub fn thediff(path1: &Path, path2: &Path) -> io::Result<(f64, f64)> {
let k1 = read(path1)?;
let k2 = read(path2)?;
let k1_str: &str = &String::from_utf8_lossy(&k1);
let k2_str: &str = &String::from_utf8_lossy(&k2);
Ok(calculate_diff(k1_str, k2_str))
}
pub async fn thediff_async(path1: &Path, path2: &Path) -> io::Result<(f64, f64)> {
let k1 = tokio::fs::read(path1).await?;
let k2 = tokio::fs::read(path2).await?;
let k1_str: &str = &String::from_utf8_lossy(&k1);
let k2_str: &str = &String::from_utf8_lossy(&k2);
Ok(calculate_diff(k1_str, k2_str))
}