@haggholm/damerau-levenshtein
Version:
An N-API/C++ port of the Damerau-Levenshtein implementation from natural
48 lines (43 loc) • 1.39 kB
TypeScript
declare function LevenshteinDistance(source: string, target: string, options?: any): number;
export interface DamerauLevenshteinDistanceOptions {
/** @default 1 */
insertion_cost?: number;
/** @default 1 */
deletion_cost?: number;
/** @default 1 */
substitution_cost?: number;
/** @default 1 */
transposition_cost?: number;
/** @default false */
search?: boolean;
/** @default false */
restricted?: boolean;
}
interface SubstringDistanceResult {
substring: string;
distance: number;
offset: number;
}
/**
* Returns the Damerau-Levenshtein distance between strings. Counts the distance
* between two strings by returning the number of edit operations required to
* convert `source` into `target`.
*
* Valid edit operations are:
* - transposition, insertion, deletion, and substitution
*/
export function DamerauLevenshteinDistance(
source: string,
target: string,
options: DamerauLevenshteinDistanceOptions & { search: true }
): SubstringDistanceResult;
export function DamerauLevenshteinDistance(
source: string,
target: string,
options?: DamerauLevenshteinDistanceOptions & { search?: false }
): number;
export function DamerauLevenshteinDistance(
source: string,
target: string,
options: DamerauLevenshteinDistanceOptions & { search: boolean }
): number | SubstringDistanceResult;