diacritic-search-ts
Version:
A Node.js/TypeScript package for diacritic-insensitive search using regex
46 lines (45 loc) • 2.77 kB
TypeScript
import { DiacriticMap } from './types.js';
import { slovakDiacriticMap, czechDiacriticMap, slovakCzechDiacriticMap } from './maps.js';
export { slovakDiacriticMap, czechDiacriticMap, slovakCzechDiacriticMap };
/**
* Transformuje vstupný reťazec do formátu regulárneho výrazu
* pre diakriticky necitlivé vyhľadávanie.
* Každý základný znak v reťazci, ktorý má zodpovedajúci záznam v diakritickej mape,
* sa nahradí regulárnym výrazom, ktorý zodpovedá tomuto znaku a jeho diakritickým variantom.
*
* @param searchString - Reťazec, ktorý sa má transformovať (typicky hľadaný výraz).
* Môže obsahovať diakritiku, ktorá bude najprv normalizovaná.
* @param diacriticMap - Diakritická mapa, ktorá definuje, ako sa majú znaky transformovať.
* @returns Transformovaný reťazec pripravený na použitie v RegExp.
*
* @example
* // Pre vyhľadávanie "Mesto" v textoch s diakritikou (napr. "Město", "Mesto")
* const transformedQuery = diacriticInsensitiveTransform('Město', czechDiacriticMap);
* // transformedQuery bude "M[e,é,ě]sto"
* const searchRegex = new RegExp(transformedQuery, 'i');
* searchRegex.test('Město'); // true
*/
export declare function diacriticInsensitiveTransform(searchString: string, diacriticMap: DiacriticMap): string;
/**
* Vyhľadá reťazec v texte s ignorovaním diakritiky.
* Táto funkcia je obal (wrapper) nad `diacriticInsensitiveTransform` a `RegExp`.
*
* @param text - Text, v ktorom sa má vyhľadávať.
* @param query - Hľadaný reťazec (môže obsahovať diakritiku).
* @param diacriticMap - Diakritická mapa, ktorá sa má použiť (napr. `slovakDiacriticMap`).
* @param caseSensitive - Ak je `true`, vyhľadávanie bude citlivé na veľkosť písmen. Predvolené: `false`.
* @returns `true`, ak sa zhoda nájde, inak `false`.
*/
export declare function searchDiacriticInsensitive(text: string, query: string, diacriticMap: DiacriticMap, caseSensitive?: boolean): boolean;
/**
* Vyhľadá viacero slov v texte s ignorovaním diakritiky.
* Slova v dopyte môžu byť oddelené medzerami a poradie slov je dôležité.
* Medzi hľadanými slovami sa povolí ľubovoľný počet znakov.
*
* @param text - Text, v ktorom sa má vyhľadávať.
* @param query - Hľadaný reťazec obsahujúci jedno alebo viacero slov (môže obsahovať diakritiku).
* @param diacriticMap - Diakritická mapa, ktorá sa má použiť.
* @param caseSensitive - Ak je `true`, vyhľadávanie bude citlivé na veľkosť písmen. Predvolené: `false`.
* @returns `true`, ak sa nájdu všetky slová v správnom poradí, inak `false`.
*/
export declare function searchMultiWordDiacriticInsensitive(text: string, query: string, diacriticMap: DiacriticMap, caseSensitive?: boolean): boolean;