33 lines
1.1 KiB
JavaScript
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 }
|