routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
Generated
Vendored
+35
@@ -0,0 +1,35 @@
|
||||
import { computeOrderedValue } from './compute-ordered-value.js'
|
||||
import { buildStringFormatter } from './build-string-formatter.js'
|
||||
import { compare } from 'natural-orderby'
|
||||
/**
|
||||
* Compares two strings using natural sort order.
|
||||
*
|
||||
* Natural sorting handles embedded numbers intelligently, so "item2" comes
|
||||
* before "item10". Applies string formatting based on options 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 compareNaturally(
|
||||
a,
|
||||
b,
|
||||
{ specialCharacters, ignoreCase, locales, order },
|
||||
) {
|
||||
let naturalCompare = compare({ locale: locales.toString() })
|
||||
let formatString = buildStringFormatter({
|
||||
specialCharacters,
|
||||
ignoreCase,
|
||||
})
|
||||
return computeOrderedValue(
|
||||
naturalCompare(formatString(a), formatString(b)),
|
||||
order,
|
||||
)
|
||||
}
|
||||
export { compareNaturally }
|
||||
Reference in New Issue
Block a user