1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
include StringLabels
@BEGIN_BEFORE_3_08_0@
type t = string
@END_BEFORE_3_08_0@
@BEGIN_BEFORE_4_07_0@
let of_seq g = Buffer.contents (Stdcompat__buffer.of_seq g)
let to_seq s = Stdcompat__tools.vec_to_seq length unsafe_get s
let to_seqi s = Stdcompat__tools.vec_to_seqi length unsafe_get s
@END_BEFORE_4_07_0@
@BEGIN_BEFORE_4_05_0@
let lowercase_ascii = lowercase
let uppercase_ascii = uppercase
let capitalize_ascii = capitalize
let uncapitalize_ascii = uncapitalize
let equal : t -> t -> bool = ( = )
let split_on_char ~sep s =
let previous_index = ref (length s) in
let accu = ref [] in
for i = length s - 1 downto 0 do
if unsafe_get s i = sep then
begin
accu := sub s (i + 1) (!previous_index - i - 1) :: !accu;
previous_index := i
end
done;
sub s 0 !previous_index :: !accu
let index_opt s c =
Stdcompat__tools.option_find (index s) c
let rindex_opt s c =
Stdcompat__tools.option_find (rindex s) c
let index_from_opt s i c =
Stdcompat__tools.option_find (index_from s i) c
let rindex_from_opt s i c =
Stdcompat__tools.option_find (rindex_from s i) c
@END_BEFORE_4_05_0@
@BEGIN_BEFORE_4_02_0@
let init n ~f =
let s = create n in
for i = 0 to n - 1 do
s.[i] <- f i
done;
s
let mapi ~f s =
init (length s) (fun i -> f i (unsafe_get s i))
@END_BEFORE_4_02_0@
@BEGIN_BEFORE_4_00_0@
let iteri ~f s =
for i = 0 to length s - 1 do
f i (unsafe_get s i)
done
let map ~f s =
init (length s) (fun i -> f (unsafe_get s i))
let trim s =
Stdcompat__string.trim s
@END_BEFORE_4_00_0@
@BEGIN_BEFORE_3_08_0@
let compare : t -> t -> int = compare
@END_BEFORE_3_08_0@
|