Up

module UCol

: sig

Unicode collation algorithm

String comparison by collation as described in UTR #10

#
type variable_option = [
| `Blanked
| `Non_ignorable
| `Shifted
| `Shift_Trimmed
]

How variables are handled

#
type precision = [
| `Primary
| `Secondary
| `Tertiary
| `Quaternary
]

Strength of comparison. For European languages, each strength roughly means as `Primary : Ignore accents and case `Secondary : Ignore case but accents are counted in. `Tertiary : Accents and case are counted in. For the case of `Shifted, `Shift_Trimmed, there is the fourth strength. `Quaternary : Variables such as - (hyphen) are counted in.

#
module type Type = sig
#
type text
#
type index
#
val compare : ?locale:string -> ?prec:precision -> ?variable:variable_option -> text -> text -> int

For locale, see [root:Locale]. If locale is omitted, the standard UCA order is used. If prec is omitted, the maximum possible strength is used. If variable is omitted, the default of the locale (usually `Shifted) is used. The meaning of the returned value is similar to Pervasives.compare

#
val sort_key : ?locale:string -> ?prec:precision -> ?variable:variable_option -> text -> string

Binary comparison of sort_key gives the same result as compare. i.e. compare t1 t2 = Pervasives.compare (sort_key t1) (sort_key t2) If the same texts are repeatedly compared, pre-computation of sort_key gives better performance.

#
val compare_with_key : ?locale:string -> ?prec:precision -> ?variable:variable_option -> string -> text -> int

Comparison with the sort key.

#
val search_with_key : ?locale:string -> ?prec:precision -> ?variable:variable_option -> string -> text -> index -> index * index
#
val search : ?locale:string -> ?prec:precision -> ?variable:variable_option -> text -> text -> index -> index * index
end
#
module Make : functor (Config : ConfigInt.Type) -> functor (Text : UnicodeString.Type) -> Type with type text = Text.t and type index = Text.index
end