lue-bird/elm-keysset/3.0.4

NOTE: the latest version is 5.0.2

String.Order

String Ordering

earlier : Ordering Char charTag -> Ordering String (Earlier charTag)

Order Strings by Chars first to last, specifying a Char Ordering:

import Order
import Char.Order
import String.Order


Order.with
    (String.Order.earlier
        (Char.Order.alphabetically Char.Order.lowerUpper)
    )
    "hello, human!"
    "hello, Human"
--> LT

For string-number chunked text, you can use mcordova47/: NaturalOrdering.compare

NaturalOrdering.compare "abc2.tff" "abc10.tff"
--→ LT

Personally, I'd just store the String as something like

type TextChunked
    = TextChunked ( String, Maybe (List ( Int, String )) )

and order that to avoid converting too often

type alias Earlier elementOrder =
( EarlierTag, elementOrder )

Tag for earlier

Wrapper tag for Earlier