use crate::damerau_levenshtein_distance as _damerau;
use crate::hamming_distance as _hamming;
use crate::jaro_similarity as _jaro;
use crate::jaro_winkler_similarity as _jaro_winkler;
use crate::jaro_winkler_similarity_longtol as _jaro_winkler_long;
use crate::levenshtein_distance as _lev;
use crate::match_rating_codex as _mr_codex;
use crate::match_rating_comparison as _mr_comparison;
use crate::metaphone as _metaphone;
use crate::nysiis as _nysiis;
use crate::soundex as _soundex;
use pyo3::prelude::*;
#[pyfunction]
fn damerau_levenshtein_distance(a: &str, b: &str) -> PyResult<usize> {
Ok(_damerau(a, b))
}
#[pyfunction]
fn hamming_distance(a: &str, b: &str) -> PyResult<usize> {
Ok(_hamming(a, b))
}
#[pyfunction]
fn jaro_similarity(a: &str, b: &str) -> PyResult<f64> {
Ok(_jaro(a, b))
}
#[pyfunction]
fn jaro_winkler_similarity(a: &str, b: &str, long_tolerance: Option<bool>) -> PyResult<f64> {
match long_tolerance {
Some(true) => Ok(_jaro_winkler_long(a, b)),
_ => Ok(_jaro_winkler(a, b)),
}
}
#[pyfunction]
fn levenshtein_distance(a: &str, b: &str) -> PyResult<usize> {
Ok(_lev(a, b))
}
#[pyfunction]
fn match_rating_codex(a: &str) -> PyResult<String> {
Ok(_mr_codex(a))
}
#[pyfunction]
fn match_rating_comparison(a: &str, b: &str) -> Option<bool> {
match _mr_comparison(a, b) {
Ok(value) => Some(value),
Err(_) => None,
}
}
#[pyfunction]
fn nysiis(a: &str) -> PyResult<String> {
Ok(_nysiis(a))
}
#[pyfunction]
fn soundex(a: &str) -> PyResult<String> {
Ok(_soundex(a))
}
#[pyfunction]
fn metaphone(a: &str) -> PyResult<String> {
Ok(_metaphone(a))
}
#[pymodule]
pub fn _rustyfish(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_function(wrap_pyfunction!(damerau_levenshtein_distance, m)?)?;
m.add_function(wrap_pyfunction!(hamming_distance, m)?)?;
m.add_function(wrap_pyfunction!(jaro_similarity, m)?)?;
m.add_function(wrap_pyfunction!(jaro_winkler_similarity, m)?)?;
m.add_function(wrap_pyfunction!(levenshtein_distance, m)?)?;
m.add_function(wrap_pyfunction!(match_rating_codex, m)?)?;
m.add_function(wrap_pyfunction!(match_rating_comparison, m)?)?;
m.add_function(wrap_pyfunction!(nysiis, m)?)?;
m.add_function(wrap_pyfunction!(soundex, m)?)?;
m.add_function(wrap_pyfunction!(metaphone, m)?)?;
Ok(())
}