adamc@821: type t = string adamc@821: adamc@1023: val str : char -> t adamc@1023: adamc@828: val length : t -> int adam@1388: val lengthGe : t -> int -> bool adamc@828: adamc@828: val append : t -> t -> t adamc@828: adamc@821: val sub : t -> int -> char adamc@821: val suffix : t -> int -> string adamc@829: adamc@829: val index : t -> char -> option int adam@1390: val sindex : {Haystack : t, Needle : t} -> option int adamc@829: val atFirst : t -> char -> option string adamc@829: adamc@831: val mindex : {Haystack : t, Needle : t} -> option int adamc@831: adamc@829: val substring : t -> {Start : int, Len : int} -> string adamc@829: adam@1389: val seek : t -> char -> option string adam@1389: val mseek : {Haystack : t, Needle : t} -> option (char * string) adam@1389: adamc@829: val split : t -> char -> option (string * string) adam@1389: val split' : t -> char -> option (string * string) (* The matched character is kept at the beginning of the suffix. *) adamc@831: val msplit : {Haystack : t, Needle : t} -> option (string * char * string) adamc@1057: adam@1390: val ssplit : {Haystack : t, Needle : t} -> option (string * string) adam@1390: adamc@1057: val all : (char -> bool) -> string -> bool adamc@1131: val mp : (char -> char) -> string -> string adamc@1122: adamc@1122: val newlines : ctx ::: {Unit} -> [[Body] ~ ctx] => string -> xml ([Body] ++ ctx) [] [] adamc@1174: adamc@1174: val isPrefix : {Full : t, Prefix : t} -> bool adam@2021: adam@2021: val trim : t -> t