type rope = t
Alias.
Exception raised when trying to access a character which is outside the bounds of a rope.
Construction
val empty : unit -> rope
The empty rope.
val make : int -> Zed_char.t -> rope
make length char
creates a rope of length length
containing only char
.
val singleton : Zed_char.t -> rope
singleton ch
creates a rope of length 1 containing only ch
.
Informations
val length : rope -> int
Returns the length of the given rope.
val size : rope -> int
Returns the size of the given rope.
val is_empty : rope -> bool
is_empty rope
returns whether str
is the empty rope or not.
Random access
val get : rope -> int -> Zed_char.t
get rope idx
returns the glyph at index idx
in rope
.
val get_raw : rope -> int -> CamomileLibrary.UChar.t
get_raw rope idx
returns the character at raw index idx
in rope
.
Rope manipulation
concat sep l
concatenates all strings of l
separating them by sep
.
sub rope ofs len
Returns the sub-rope of rope
starting at ofs
and of length len
.
break rope pos
returns the sub-ropes before and after pos
in rope
. It is more efficient than creating two sub-ropes with sub
.
val insert_uChar : rope -> int -> CamomileLibrary.UChar.t -> rope
insert rope pos char
inserts char
in rope
at position pos
. If char
is a combing mark, it's merged to the character at position pos-1
remove rope pos len
removes the len
characters at position pos
in rope
replace rope pos len repl
replaces the len
characters at position pos
in rope
by repl
.
lchop rope
returns rope
without is first character. Returns empty
if rope
is empty.
rchop rope
returns rope
without is last character. Returns empty
if rope
is empty.
Iteration, folding and mapping
val iter : (Zed_char.t -> unit) -> rope -> unit
iter f rope
applies f
on all characters of rope
starting from the left.
val rev_iter : (Zed_char.t -> unit) -> rope -> unit
rev_iter f rope
applies f
an all characters of rope
starting from the right.
val fold : (Zed_char.t -> 'a -> 'a) -> rope -> 'a -> 'a
fold f rope acc
applies f
on all characters of rope
starting from the left, accumulating a value.
val rev_fold : (Zed_char.t -> 'a -> 'a) -> rope -> 'a -> 'a
rev_fold f rope acc
applies f
on all characters of rope
starting from the right, accumulating a value.
val map : (Zed_char.t -> Zed_char.t) -> rope -> rope
map f rope
maps all characters of rope
with f
.
val rev_map : (Zed_char.t -> Zed_char.t) -> rope -> rope
rev_map f str
maps all characters of rope
with f
in reverse order.
Iteration and folding on leafs
val iter_leaf : (Zed_string.t -> unit) -> rope -> unit
iter_leaf f rope
applies f
on all leaves of rope
starting from the left.
val rev_iter_leaf : (Zed_string.t -> unit) -> rope -> unit
iter_leaf f rope
applies f
on all leaves of rope
starting from the right.
val fold_leaf : (Zed_string.t -> 'a -> 'a) -> rope -> 'a -> 'a
fold f rope acc
applies f
on all leaves of rope
starting from the left, accumulating a value.
val rev_fold_leaf : (Zed_string.t -> 'a -> 'a) -> rope -> 'a -> 'a
rev_fold f rope acc
applies f
on all leaves of rope
starting from the right, accumulating a value.
Zippers
module Zip : sig ... end
module Zip_raw : sig ... end
Buffers
module String_buffer = Stdlib.Buffer
module Buffer : sig ... end
val init : int -> (int -> Zed_char.t) -> rope
val init_from_uChars : int -> (int -> CamomileLibrary.UChar.t) -> rope
val of_string : Zed_string.t -> rope
val to_string : rope -> Zed_string.t
Camomile compatible interface
module Text : sig ... end
module Text_core : sig ... end
module Text_raw : sig ... end