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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
--- strExtras.ml.orig 2006-02-23 06:34:35 UTC
+++ strExtras.ml
@@ -144,7 +144,7 @@ let map f str =
for n = 0 to len - 1 do
String.unsafe_set nstr n (f (String.unsafe_get str n))
done;
- nstr
+ Bytes.unsafe_to_string nstr
let mapi f str =
let len = String.length str in
@@ -152,18 +152,18 @@ let mapi f str =
for n = 0 to len - 1 do
String.unsafe_set nstr n (f (String.unsafe_get str n) n)
done;
- nstr
+ Bytes.unsafe_to_string nstr
let map_inplace f str =
- let len = String.length str in
+ let len = Bytes.length str in
for n = 0 to len - 1 do
- String.unsafe_set str n (f (String.unsafe_get str n))
+ Bytes.unsafe_set str n (f (Bytes.unsafe_get str n))
done
let mapi_inplace f str =
- let len = String.length str in
+ let len = Bytes.length str in
for n = 0 to len - 1 do
- String.unsafe_set str n (f (String.unsafe_get str n) n)
+ Bytes.unsafe_set str n (f (Bytes.unsafe_get str n) n)
done
let iteri f str =
@@ -194,16 +194,16 @@ let lowercase = map CharExtras.to_lower
let capitalize str =
if String.length str = 0 then ""
else
- let nstr = String.copy str in
- String.unsafe_set nstr 0 (CharExtras.to_upper (String.unsafe_get nstr 0));
- nstr
+ let nstr = Bytes.of_string str in
+ Bytes.unsafe_set nstr 0 (CharExtras.to_upper (Bytes.unsafe_get nstr 0));
+ Bytes.unsafe_to_string nstr
let uncapitalize str =
if String.length str = 0 then ""
else
- let nstr = String.copy str in
- String.unsafe_set nstr 0 (CharExtras.to_lower (String.unsafe_get nstr 0));
- nstr
+ let nstr = Bytes.of_string str in
+ Bytes.unsafe_set nstr 0 (CharExtras.to_lower (Bytes.unsafe_get nstr 0));
+ Bytes.unsafe_to_string nstr
let startletter = Pcre.regexp "\\b\\w"
@@ -281,28 +281,28 @@ let center ?(pad=' ') ?(trunc=false) src width =
String.copy src
end else
let space = (width - len) / 2 in
- let centered = String.make width pad in
+ let centered = Bytes.make width pad in
String.blit src 0 centered space len;
- centered
+ Bytes.unsafe_to_string centered
let rev s =
- let str = String.copy s in
+ let str = Bytes.of_string s in
let n = ref 0
- and p = ref ((String.length str) - 1) in
+ and p = ref ((Bytes.length str) - 1) in
while !n < !p do
- let tmp = String.unsafe_get str !n in
- String.unsafe_set str !n (String.unsafe_get str !p);
+ let tmp = Bytes.unsafe_get str !n in
+ Bytes.unsafe_set str !n (Bytes.unsafe_get str !p);
String.unsafe_set str !p tmp;
incr n;
decr p;
done;
- str
+ Bytes.unsafe_to_string str
let implode lst =
let str = String.create (List.length lst) in
let pos = ref 0 in
List.iter (fun c -> str.[!pos] <- c; incr pos) lst;
- str
+ Bytes.unsafe_to_string str
let explode str =
let res = ref [] in
@@ -332,9 +332,9 @@ let ljust ?(pad=' ') ?(trunc=false) str n =
else
String.copy str
end else
- let newstr = String.make n pad in
+ let newstr = Bytes.make n pad in
String.blit str 0 newstr 0 len;
- newstr
+ Bytes.unsafe_to_string newstr
let rjust ?(pad=' ') ?(trunc=false) str n =
let len = String.length str in
@@ -344,9 +344,9 @@ let rjust ?(pad=' ') ?(trunc=false) str n =
else
String.copy str
end else
- let newstr = String.make n pad in
+ let newstr = Bytes.make n pad in
String.blit str 0 newstr (n - len) len;
- newstr
+ Bytes.unsafe_to_string newstr
let subpos str start stop =
let len = stop - start + 1 in
@@ -376,7 +376,7 @@ let repeat str times =
for n = 0 to times - 1 do
String.unsafe_blit str 0 newstr (n * len) len
done;
- newstr
+ Bytes.unsafe_to_string newstr
external collate: string -> string -> int = "stew_strcoll"
@@ -463,7 +463,7 @@ let replace str old rep =
let of_array arr =
let str = String.create (Array.length arr) in
Array.iteri (fun i c -> str.[i] <- c) arr;
- str
+ Bytes.unsafe_to_string str
let to_array str = Array.init (String.length str) (function i -> str.[i])
|