Library
Module
Module type
Parameter
Class
Class type
This module should be used to output boxes directly to a terminal, or another area of monospace text
val register_extension :
key:string ->
(style:bool -> PrintBox.ext -> string) ->
unit
Add support for the extension with the given key to this rendering backend. If style = true
, the extension can use ANSI codes for styling. Note: the string returned by the handler can have line breaks.
val set_string_len : (String.t -> int -> int -> int) -> unit
Set which function is used to compute string length. Typically to be used with a unicode-sensitive length function. An example of such a function for utf8 encoded strings is the following (it uses the Uutf
and Uucp
libraries):
let string_leng s i len =
Uutf.String.fold_utf_8 ~pos:i ~len
(fun n _ c -> n+ max 0 (Uucp.Break.tty_width_hint c)) 0 s
Note that this function assumes there is no newline character in the given string.
val to_string : PrintBox.t -> string
Returns a string representation of the given structure.
val to_string_with : style:bool -> PrintBox.t -> string
Returns a string representation of the given structure, with style.
val output : ?style:bool -> ?indent:int -> out_channel -> PrintBox.t -> unit
Outputs the given structure on the channel.
val pp : Format.formatter -> PrintBox.t -> unit
Pretty-print the box into this formatter.
val pp_with : style:bool -> Format.formatter -> PrintBox.t -> unit
Pretty-print the box into this formatter, with style.
val str_display_width : String.t -> int -> int -> int
str_display_width s pos len
computes the width in visible characters of the string s
starting at string position pos
and stopping right before pos + len
. See set_string_len
.