diff options
| author | Emilio Jesus Gallego Arias | 2018-10-16 01:28:36 +0200 |
|---|---|---|
| committer | Emilio Jesus Gallego Arias | 2018-10-16 13:25:03 +0200 |
| commit | 33c93006b7685092b5239ea001058578fac3552f (patch) | |
| tree | 49b94d72ee9d52a1355d478b6081d3f9bc404b40 /clib/cString.ml | |
| parent | 697a59de8a39f3a4b253ced93ece1209b7f0eb1b (diff) | |
[clib] Deprecate string functions available in OCaml 4.05
- `CString.strip -> String.trim`
- `CString.split -> String.split_on_char`
As noted by @ppedrot there are some small differences on semantics:
> OCaml's `trim` also takes line feeds (LF) into account. Similarly,
> OCaml's `split` never returns an empty list whereas Coq's `split`
> does on the empty string.
Diffstat (limited to 'clib/cString.ml')
| -rw-r--r-- | clib/cString.ml | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/clib/cString.ml b/clib/cString.ml index b178cbbd2c..111be3da82 100644 --- a/clib/cString.ml +++ b/clib/cString.ml @@ -18,6 +18,7 @@ sig val explode : string -> string list val implode : string list -> string val strip : string -> string + [@@ocaml.deprecated "Use [trim]"] val drop_simple_quotes : string -> string val string_index_from : string -> int -> string -> int val string_contains : where:string -> what:string -> bool @@ -25,6 +26,7 @@ sig val conjugate_verb_to_be : int -> string val ordinal : int -> string val split : char -> string -> string list + [@@ocaml.deprecated "Use [split_on_char]"] val is_sub : string -> string -> int -> bool module Set : Set.S with type elt = t module Map : CMap.ExtS with type key = t and module Set := Set @@ -55,26 +57,9 @@ let explode s = let implode sl = String.concat "" sl -let is_blank = function - | ' ' | '\r' | '\t' | '\n' -> true - | _ -> false - let is_empty s = String.length s = 0 -let strip s = - let n = String.length s in - let rec lstrip_rec i = - if i < n && is_blank s.[i] then - lstrip_rec (i+1) - else i - in - let rec rstrip_rec i = - if i >= 0 && is_blank s.[i] then - rstrip_rec (i-1) - else i - in - let a = lstrip_rec 0 and b = rstrip_rec (n-1) in - String.sub s a (b-a+1) +let strip = String.trim let drop_simple_quotes s = let n = String.length s in @@ -139,17 +124,7 @@ let ordinal n = (* string parsing *) -let split c s = - let len = String.length s in - let rec split n = - try - let pos = String.index_from s n c in - let dir = String.sub s n (pos-n) in - dir :: split (succ pos) - with - | Not_found -> [String.sub s n (len-n)] - in - if Int.equal len 0 then [] else split 0 +let split = String.split_on_char module Self = struct |
