1
1
(* OASIS_START *)
2
- (* DO NOT EDIT (digest: ef3f6bb7de5d2441c8248057cdf28ea3 ) *)
2
+ (* DO NOT EDIT (digest: 0c8d8e3d3d3f32d2cf322309bc1cc8f0 ) *)
3
3
module OASISGettext = struct
4
4
(* # 22 "src/oasis/OASISGettext.ml" *)
5
5
@@ -29,6 +29,166 @@ module OASISGettext = struct
29
29
30
30
end
31
31
32
+ module OASISString = struct
33
+ (* # 22 "src/oasis/OASISString.ml" *)
34
+
35
+
36
+ (* * Various string utilities.
37
+
38
+ Mostly inspired by extlib and batteries ExtString and BatString libraries.
39
+
40
+ @author Sylvain Le Gall
41
+ *)
42
+
43
+
44
+ let nsplitf str f =
45
+ if str = " " then
46
+ []
47
+ else
48
+ let buf = Buffer. create 13 in
49
+ let lst = ref [] in
50
+ let push () =
51
+ lst := Buffer. contents buf :: ! lst;
52
+ Buffer. clear buf
53
+ in
54
+ let str_len = String. length str in
55
+ for i = 0 to str_len - 1 do
56
+ if f str.[i] then
57
+ push ()
58
+ else
59
+ Buffer. add_char buf str.[i]
60
+ done ;
61
+ push () ;
62
+ List. rev ! lst
63
+
64
+
65
+ (* * [nsplit c s] Split the string [s] at char [c]. It doesn't include the
66
+ separator.
67
+ *)
68
+ let nsplit str c =
69
+ nsplitf str ((= ) c)
70
+
71
+
72
+ let find ~what ?(offset =0 ) str =
73
+ let what_idx = ref 0 in
74
+ let str_idx = ref offset in
75
+ while ! str_idx < String. length str &&
76
+ ! what_idx < String. length what do
77
+ if str.[! str_idx] = what.[! what_idx] then
78
+ incr what_idx
79
+ else
80
+ what_idx := 0 ;
81
+ incr str_idx
82
+ done ;
83
+ if ! what_idx <> String. length what then
84
+ raise Not_found
85
+ else
86
+ ! str_idx - ! what_idx
87
+
88
+
89
+ let sub_start str len =
90
+ let str_len = String. length str in
91
+ if len > = str_len then
92
+ " "
93
+ else
94
+ String. sub str len (str_len - len)
95
+
96
+
97
+ let sub_end ?(offset =0 ) str len =
98
+ let str_len = String. length str in
99
+ if len > = str_len then
100
+ " "
101
+ else
102
+ String. sub str 0 (str_len - len)
103
+
104
+
105
+ let starts_with ~what ?(offset =0 ) str =
106
+ let what_idx = ref 0 in
107
+ let str_idx = ref offset in
108
+ let ok = ref true in
109
+ while ! ok &&
110
+ ! str_idx < String. length str &&
111
+ ! what_idx < String. length what do
112
+ if str.[! str_idx] = what.[! what_idx] then
113
+ incr what_idx
114
+ else
115
+ ok := false ;
116
+ incr str_idx
117
+ done ;
118
+ if ! what_idx = String. length what then
119
+ true
120
+ else
121
+ false
122
+
123
+
124
+ let strip_starts_with ~what str =
125
+ if starts_with ~what str then
126
+ sub_start str (String. length what)
127
+ else
128
+ raise Not_found
129
+
130
+
131
+ let ends_with ~what ?(offset =0 ) str =
132
+ let what_idx = ref ((String. length what) - 1 ) in
133
+ let str_idx = ref ((String. length str) - 1 ) in
134
+ let ok = ref true in
135
+ while ! ok &&
136
+ offset < = ! str_idx &&
137
+ 0 < = ! what_idx do
138
+ if str.[! str_idx] = what.[! what_idx] then
139
+ decr what_idx
140
+ else
141
+ ok := false ;
142
+ decr str_idx
143
+ done ;
144
+ if ! what_idx = - 1 then
145
+ true
146
+ else
147
+ false
148
+
149
+
150
+ let strip_ends_with ~what str =
151
+ if ends_with ~what str then
152
+ sub_end str (String. length what)
153
+ else
154
+ raise Not_found
155
+
156
+
157
+ let replace_chars f s =
158
+ let buf = Buffer. create (String. length s) in
159
+ String. iter (fun c -> Buffer. add_char buf (f c)) s;
160
+ Buffer. contents buf
161
+
162
+ let lowercase_ascii =
163
+ replace_chars
164
+ (fun c ->
165
+ if (c > = 'A' && c < = 'Z' ) then
166
+ Char. chr (Char. code c + 32 )
167
+ else
168
+ c)
169
+
170
+ let uncapitalize_ascii s =
171
+ if s <> " " then
172
+ (lowercase_ascii (String. sub s 0 1 )) ^ (String. sub s 1 ((String. length s) - 1 ))
173
+ else
174
+ s
175
+
176
+ let uppercase_ascii =
177
+ replace_chars
178
+ (fun c ->
179
+ if (c > = 'a' && c < = 'z' ) then
180
+ Char. chr (Char. code c - 32 )
181
+ else
182
+ c)
183
+
184
+ let capitalize_ascii s =
185
+ if s <> " " then
186
+ (uppercase_ascii (String. sub s 0 1 )) ^ (String. sub s 1 ((String. length s) - 1 ))
187
+ else
188
+ s
189
+
190
+ end
191
+
32
192
module OASISExpr = struct
33
193
(* # 22 "src/oasis/OASISExpr.ml" *)
34
194
@@ -129,7 +289,7 @@ module OASISExpr = struct
129
289
end
130
290
131
291
132
- # 132 " myocamlbuild.ml"
292
+ # 292 " myocamlbuild.ml"
133
293
module BaseEnvLight = struct
134
294
(* # 22 "src/base/BaseEnvLight.ml" *)
135
295
@@ -234,7 +394,7 @@ module BaseEnvLight = struct
234
394
end
235
395
236
396
237
- # 237 " myocamlbuild.ml"
397
+ # 397 " myocamlbuild.ml"
238
398
module MyOCamlbuildFindlib = struct
239
399
(* # 22 "src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *)
240
400
@@ -516,7 +676,7 @@ module MyOCamlbuildBase = struct
516
676
| nm , [] , intf_modules ->
517
677
ocaml_lib nm;
518
678
let cmis =
519
- List. map (fun m -> (String. uncapitalize m) ^ " .cmi" )
679
+ List. map (fun m -> (OASISString. uncapitalize_ascii m) ^ " .cmi" )
520
680
intf_modules in
521
681
dep [" ocaml" ; " link" ; " library" ; " file:" ^ nm^ " .cma" ] cmis
522
682
| nm , dir :: tl , intf_modules ->
@@ -529,7 +689,7 @@ module MyOCamlbuildBase = struct
529
689
[" compile" ; " infer_interface" ; " doc" ])
530
690
tl;
531
691
let cmis =
532
- List. map (fun m -> dir^ " /" ^ (String. uncapitalize m)^ " .cmi" )
692
+ List. map (fun m -> dir^ " /" ^ (OASISString. uncapitalize_ascii m)^ " .cmi" )
533
693
intf_modules in
534
694
dep [" ocaml" ; " link" ; " library" ; " file:" ^ dir^ " /" ^ nm^ " .cma" ]
535
695
cmis)
@@ -603,7 +763,7 @@ module MyOCamlbuildBase = struct
603
763
end
604
764
605
765
606
- # 606 " myocamlbuild.ml"
766
+ # 766 " myocamlbuild.ml"
607
767
open Ocamlbuild_plugin ;;
608
768
let package_default =
609
769
{
@@ -712,7 +872,7 @@ let conf = {MyOCamlbuildFindlib.no_automatic_syntax = false}
712
872
713
873
let dispatch_default = MyOCamlbuildBase. dispatch_default conf package_default;;
714
874
715
- # 716 " myocamlbuild.ml"
875
+ # 876 " myocamlbuild.ml"
716
876
(* OASIS_STOP *)
717
877
718
878
let read_lines_from_cmd ~max_lines cmd =
0 commit comments