mcordova47 / elm-natural-ordering / NaturalOrdering

Compare strings with numbers and diacritics "naturally"

compare : String -> String -> Basics.Order

Compare two strings naturally.

List.sortWith NaturalOrdering.compare ["a10", "a2"]
--> ["a2", "a10"]

compareOn : (a -> String) -> a -> a -> Basics.Order

Compare two as naturally, based on some function, a -> String. Use this where you would ordinarily use sortBy.

List.sortWith (compareOn .name) [{ name = "a10" }, { name = "a2" }]
--> [{ name = "a2" }, { name = "a10" }]

sort : List String -> List String

Naturally sort values from lowest to highest

sort [ "b10", "B2", "A", "a" ]
--> [ "A", "a", "B2", "b10" ]

sortBy : (a -> String) -> List a -> List a

Naturally sort values by a derived property.

alice = { name = "Alice" }
bob = { name = "Bob" }
bill = { name = "bill" }

sortBy .name [bob, bill, alice]
--> [alice, bill, bob]