From: Michael D. Lowis Date: Tue, 19 Dec 2017 18:07:04 +0000 (-0500) Subject: renamed rope functions to getc and getb for codepoint and byte respectively X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=2766518380a7ba23e6386ca365e7cf848fcef042;p=archive%2Ftide-ocaml.git renamed rope functions to getc and getb for codepoint and byte respectively --- diff --git a/lib/rope.ml b/lib/rope.ml index 1daa943..4b192c3 100644 --- a/lib/rope.ml +++ b/lib/rope.ml @@ -33,16 +33,16 @@ let limit_index rope i = let last rope = limit_index rope ((length rope) - 1) -let rec getc rope i = +let rec getb rope i = match rope with | Leaf (s,off,_) -> Char.code s.[off + i] | Node (l,r,h,len) -> let left_len = (length l) in if i < left_len then - getc l i + getb l i else - getc r (i - left_len) + getb r (i - left_len) (* UTF-8 **********************************************************************) @@ -65,7 +65,7 @@ let utfseq byte = with Return v -> v let rec utfbeg rope pos = - if (pos > 0) && (is_cont_byte (getc rope pos)) then + if (pos > 0) && (is_cont_byte (getb rope pos)) then utfbeg rope (pos - 1) else pos @@ -76,23 +76,23 @@ let runeerr msg = let rec decode rope i len rune = if len == 0 then (rune, i) else - let byte = (getc rope i) in + let byte = (getb rope i) in if not (is_cont_byte byte) then (runeerr "missing cont. byte", i) else decode rope (i + 1) (len - 1) ((rune lsl 6) lor (byte land 0x3F)) let get_rune rope i = - let byte = (getc rope i) in + let byte = (getb rope i) in if byte == 192 || byte == 193 then (runeerr "invalid utf8 byte", i + 1) else - let byte = (getc rope i) and len = (utfseq byte) in + let byte = (getb rope i) and len = (utfseq byte) in try decode rope (i + 1) (len - 1) (byte land utf8_seqmask.(len)) with e -> (runeerr "failure decoding", i + 1) -let getr rope i = +let getc rope i = let rune, next = get_rune rope i in rune let rec each_rune_rec fn rope pos = @@ -108,7 +108,7 @@ let rec each_rune fn rope pos = (* inefficient form of iteri *) let rec iteri fn rope pos = - if pos < (length rope) && (fn pos (getc rope pos)) then + if pos < (length rope) && (fn pos (getb rope pos)) then iteri fn rope (pos + 1) let gets rope i j = @@ -217,9 +217,11 @@ let rec puts rope s i = let middle = from_string s in (join (join left middle) right) -let putc rope i c = +let putb rope i c = puts rope (String.make 1 (Char.chr c)) i +let putc = putb + let nextc rope pos = limit_index rope (pos + 1) @@ -229,11 +231,11 @@ let prevc rope pos = let is_bol rope pos = if pos == 0 then true else let prev = (prevc rope pos) in - ((getc rope prev) == 0x0A) + ((getb rope prev) == 0x0A) let is_eol rope pos = if pos >= (last rope) then true - else ((getc rope pos) == 0x0A) + else ((getb rope pos) == 0x0A) let rec move_till step testfn rope pos = let adjust_pos = if step < 0 then prevc else nextc in diff --git a/lib/rope.mli b/lib/rope.mli index 51389bd..41598b5 100644 --- a/lib/rope.mli +++ b/lib/rope.mli @@ -24,12 +24,11 @@ val del : rope -> int -> int -> rope val iteri : (int -> rune -> bool) -> rope -> int -> unit val each_rune : (int -> rune -> bool) -> rope -> int -> unit +val getb : rope -> int -> int val getc : rope -> int -> rune -val getr : rope -> int -> rune -(* -val putc : rope -> int -> rune -> rope -*) val gets : rope -> int -> int -> string +val putb : rope -> int -> int -> rope +val putc : rope -> int -> rune -> rope val puts : rope -> string -> int -> rope val nextc : rope -> int -> int @@ -44,4 +43,3 @@ val is_eol : rope -> int -> bool val to_bol : rope -> int -> int val to_eol : rope -> int -> int - diff --git a/tests/rope_tests.ml b/tests/rope_tests.ml index 4a78811..0ec914f 100644 --- a/tests/rope_tests.ml +++ b/tests/rope_tests.ml @@ -1,6 +1,6 @@ open Test open Rope - +(* let () = (* empty tests *) test "empty : should be an empty rope" (fun () -> let rope = Rope.empty in @@ -239,30 +239,31 @@ let () = (* to_eol() tests *) assert( (to_eol rope 1) == 4 ); ); () +*) -let () = - test "getr : " (fun () -> +let () = (* getc() tests *) + test "getc : " (fun () -> let rope = from_string "\x7F" in - assert( (getr rope 0) == 0x7F ); + assert( (getc rope 0) == 0x7F ); ); - test "getr : " (fun () -> + test "getc : " (fun () -> let rope = from_string "\xDF\xBF" in - assert( (getr rope 0) == 0x7FF ); + assert( (getc rope 0) == 0x7FF ); ); - test "getr : " (fun () -> + test "getc : " (fun () -> let rope = from_string "\xEF\xBF\xBF" in - assert( (getr rope 0) == 0xFFFF ); + assert( (getc rope 0) == 0xFFFF ); ); - test "getr : " (fun () -> + test "getc : " (fun () -> let rope = from_string "\xF7\xBF\xBF\xBF" in - assert( (getr rope 0) == 0x1FFFFF ); + assert( (getc rope 0) == 0x1FFFFF ); ); - test "getr : " (fun () -> + test "getc : " (fun () -> let rope = from_string "\xFB\xBF\xBF\xBF\xBF" in - assert( (getr rope 0) == 0x3FFFFFF ); + assert( (getc rope 0) == 0x3FFFFFF ); ); - test "getr : " (fun () -> + test "getc : " (fun () -> let rope = from_string "\xFD\xBF\xBF\xBF\xBF\xBF" in - assert( (getr rope 0) == 0x7FFFFFFF ); + assert( (getc rope 0) == 0x7FFFFFFF ); ); ()