Library
Module
Module type
Parameter
Class
Class type
Unicode ropes
type rope = t
Alias.
Exception raised when trying to access a character which is outside the bounds of a rope.
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 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.
val get : t -> int -> CamomileLibrary.UChar.t
get str rope
returns the character at index idx
in rope
.
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
.
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.
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.
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.
module Zip : sig ... end
module Buffer : sig ... end
This module is similar of the Buffer
module of the standard library except that it works with rope.