module Zed_rope: sig
.. end
Unicode ropes
type
t
Type of unicode ropes.
type
rope = t
Alias.
exception Out_of_bounds
Exception raised when trying to access a character which is
outside the bounds of a rope.
Construction
val empty : t
The empty rope.
val make : int -> CamomileLibrary.UChar.t -> t
make length char
creates a rope of length length
containing
only char
.
val init : int -> (int -> CamomileLibrary.UChar.t) -> t
init n f
returns the contenation of singleton (f 0)
,
singleton (f 1)
, ..., singleton (f (n - 1))
.
val rev_init : int -> (int -> CamomileLibrary.UChar.t) -> t
rev_init n f
returns the contenation of singleton (f (n -
1))
, ..., singleton (f 1)
, singleton (f 0)
.
val singleton : CamomileLibrary.UChar.t -> t
singleton ch
creates a rope of length 1 containing only
ch
.
val length : t -> int
Returns the length of the given rope.
val is_empty : t -> bool
is_empty rope
returns whether str
is the empty rope or
not.
val compare : t -> t -> int
Compares two ropes (in code point order).
val equal : t -> t -> bool
equal r1 r2
retuns true
iff r1
is equal to r2
.
To/from strings
val of_string : string -> t
of_string str
creates a rope from a string. The string must be
UTF-8 encoded and is validated. Note that str
must not be
modified after this operation, if you intend to do so you must
copy it before passing it to of_string
.
val to_string : t -> string
to_string rope
flatten a rope into a string encoded in
UTF-8.
Random access
val get : t -> int -> CamomileLibrary.UChar.t
get str rope
returns the character at index idx
in
rope
.
Rope manipulation
val append : t -> t -> t
Concatenates the two given ropes.
val concat : t -> t list -> t
concat sep l
concatenates all strings of l
separating them
by sep
.
val sub : t -> int -> int -> t
sub rope ofs len
Returns the sub-rope of rope
starting at
ofs
and of length len
.
val break : t -> int -> t * t
break rope pos
returns the sub-ropes before and after
pos
in
rope
. It is more efficient than creating two sub-ropes with
Zed_rope.sub
.
val before : t -> int -> t
before rope pos
returns the sub-rope before pos
in rope
.
val after : t -> int -> t
after rope pos
returns the sub-string after pos
in rope
.
val insert : t -> int -> t -> t
insert rope pos sub
inserts sub
in rope
at position
pos
.
val remove : t -> int -> int -> t
remove rope pos len
removes the len
characters at position
pos
in rope
val replace : t -> int -> int -> t -> t
replace rope pos len repl
replaces the len
characters at
position pos
in rope
by repl
.
val lchop : t -> t
lchop rope
returns
rope
without is first character. Returns
Zed_rope.empty
if
rope
is empty.
val rchop : t -> t
rchop rope
returns
rope
without is last character. Returns
Zed_rope.empty
if
rope
is empty.
Iteration, folding and mapping
val iter : (CamomileLibrary.UChar.t -> unit) -> t -> unit
iter f rope
applies f
on all characters of rope
starting
from the left.
val rev_iter : (CamomileLibrary.UChar.t -> unit) -> t -> unit
rev_iter f rope
applies f
an all characters of rope
starting from the right.
val fold : (CamomileLibrary.UChar.t -> 'a -> 'a) -> t -> 'a -> 'a
fold f rope acc
applies f
on all characters of rope
starting from the left, accumulating a value.
val rev_fold : (CamomileLibrary.UChar.t -> 'a -> 'a) -> t -> 'a -> 'a
rev_fold f rope acc
applies f
on all characters of rope
starting from the right, accumulating a value.
val map : (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t) ->
t -> t
map f rope
maps all characters of rope
with f
.
val rev_map : (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t) ->
t -> t
rev_map f str
maps all characters of rope
with f
in
reverse order.
Iteration and folding on leafs
Note: for all of the following functions, the leaves must
absolutely not be modified.
val iter_leaf : (Zed_utf8.t -> unit) -> t -> unit
iter_leaf f rope
applies f
on all leaves of rope
starting
from the left.
val rev_iter_leaf : (Zed_utf8.t -> unit) -> t -> unit
iter_leaf f rope
applies f
on all leaves of rope
starting
from the right.
val fold_leaf : (Zed_utf8.t -> 'a -> 'a) -> t -> '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_utf8.t -> 'a -> 'a) -> t -> '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
Buffers
module Buffer: sig
.. end
module Text: UnicodeString.Type
with type t = rope and type index = Zip.t
Camomile compatible interface