UNPKG

universal-string-sort

Version:

Universal string sorting with locale support, numbers, case, diacritics, and punctuation handling.

30 lines (27 loc) 1.11 kB
/** * Universal string sorting function. * * Features: * - Locale-aware (via ICU through Intl.Collator) * - Handles numbers inside strings ("file2" < "file10") * - Case sensitivity control * - Diacritic sensitivity (e.g., é vs e) * - Punctuation handling * * @param {string[]} arr - array of strings to sort * @param {string|string[]} [locales='und'] - locale or list of locales ('ru', 'en', ['de','sv']) * @param {Object} [options] - sorting options * @param {('base'|'accent'|'case'|'variant')} [options.sensitivity='variant'] - comparison sensitivity * @param {boolean} [options.ignorePunctuation=true] - whether to ignore punctuation * @param {boolean} [options.numeric=true] - whether to sort numbers as numbers * @returns {string[]} - sorted array */ export function universalSort(arr, locales = 'und', options = {}) { const collator = new Intl.Collator(locales, { sensitivity: options.sensitivity || 'variant', ignorePunctuation: options.ignorePunctuation !== false, numeric: options.numeric !== false, usage: 'sort' }); return [...arr].sort(collator.compare); }