Files

33 lines
1.1 KiB
JavaScript

import { computeOrderedValue } from './compute-ordered-value.js'
import { buildStringFormatter } from './build-string-formatter.js'
/**
* Compares two strings alphabetically using locale-aware comparison.
*
* Applies string formatting based on options (case sensitivity, special
* characters handling) before performing the comparison.
*
* @param a - The first string to compare.
* @param b - The second string to compare.
* @param options - Comparison options.
* @param options.specialCharacters - How to handle special characters.
* @param options.ignoreCase - Whether to ignore case differences.
* @param options.locales - The locale(s) to use for comparison.
* @param options.order - The order direction ('asc' or 'desc').
* @returns A negative number if a < b, positive if a > b, or 0 if equal.
*/
function compareAlphabetically(
a,
b,
{ specialCharacters, ignoreCase, locales, order },
) {
let formatString = buildStringFormatter({
specialCharacters,
ignoreCase,
})
return computeOrderedValue(
formatString(a).localeCompare(formatString(b), locales),
order,
)
}
export { compareAlphabetically }