@beenotung/tslib
Version:
utils library in Typescript
70 lines (69 loc) • 3.1 kB
TypeScript
import { CompareResult } from './compare';
export declare function str_contains(pattern: string, target: string, ignore_case?: boolean): boolean;
export declare function str_contains_any(patterns: string[], target: string, ignore_case?: boolean): boolean;
/**
* example : 'change the words' ~> 'Change The Words'
* */
export declare function strToCapWords(s: string): string;
export declare function string_to_chars(s: string): string[];
export declare function escapeRegExp(str: string): string;
export declare function string_nbyte(s: string): number;
export declare function str_like(a: string, b: string, ignore_case?: boolean): boolean;
export declare function is_non_empty_string(s: string): boolean;
export declare function str_dos2unix(s: string): string;
export declare function str_unix2dos(s: string): string;
export declare function str_minus(a: string, b: string): string;
export type compare_chunks = Array<string | number>;
export declare function split_string_num(s: string): compare_chunks;
export declare function compare_string(a: string, b: string): CompareResult;
export declare function extract_lines(s: string): string[];
export declare function capitalize(word: string): string;
/** @description using perl naming conversion */
export declare function lcfirst(word: string): string;
/** @description using perl naming conversion */
export declare function ucfirst(word: string): string;
/** @description aware of unicode, e.g. emoji */
export declare function first_char(text: string): string | null;
/** @description aware of unicode, e.g. emoji */
export declare function last_char(text: string): string | null;
export declare function is_ascii_char(char: null | string): boolean;
export declare function concat_words(start: string, end: string): string;
/**
* @description Normalize Unicode representation to NFC (Canonical Composition).
* Preserves case for case-sensitive comparisons.
*
* The same visible character can have multiple Unicode representations:
* - 'Amélie' with é as single code point (\u00e9)
* - 'Amélie' with é + combining accent (\u0065\u0301)
*
* NFC normalization condenses these variants into a single canonical form,
* useful for storing normalized text and matching in later searches.
*
* Source: https://stackoverflow.com/a/63013732/3156509
*
* @example
* 'Amélie' (composed) vs 'Amélie' (decomposed) -> same NFC output
* 'CAFÉ' -> 'CAFÉ' (case preserved)
*/
export declare function normalizeUnicode(text: string): string;
/**
* @description Remove accent marks (diacritics) from text.
* Uses NFD normalization to decompose characters, then removes combining marks.
*
* @example
* 'Café' -> 'Cafe'
* 'résumé' -> 'resume'
* 'Amélie' -> 'Amelie'
* 'München' -> 'Munchen'
* 'naïve' -> 'naive'
*/
export declare function removeAccents(text: string): string;
/**
* @description Normalize text for search: NFC normalize, lowercase, remove accents, trim.
*
* @example
* 'Café' -> 'cafe'
* 'résumé' -> 'resume'
* 'Amélie' -> 'amelie'
*/
export declare function normalizeForSearch(text: string): string;