lue-bird / elm-keysset / 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.aToZ 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


type EarlierTag

Wrapper tag for Earlier