Spec-Zone.ru › OCaml

Модуль Format_doc.Doc

module Doc: sig .. end

Определения и неизменяемый API для составления документов

Определения типов и основные функции

type box_type = 
| H
| V
| HV
| HoV
| B

Типы блоков форматирования

type stag = Format.stag 
type element = 
| Text of string
| With_size of int
| Open_box of {
kind : box_type;
indent : int;
}
| Close_box
| Open_tag of Format.stag
| Close_tag
| Open_tbox
| Tab_break of {
width : int;
offset : int;
}
| Set_tab
| Close_tbox
| Simple_break of {
spaces : int;
indent : int;
}
| Break of {
fits : string * int * string;
breaks : string * int * string;
}
| Flush of {
newline : bool;
}
| Newline
| If_newline
| Deprecated of (Format.formatter -> unit) (*

Резервный механизм: принтер Format, используемый для обеспечения обратной совместимости с пользовательским принтером (например, из директивы верхнего уровня #install_printer).

*)

Базовая инструкция форматирования, распознаваемая Format

type t 

Неизменяемый тип документа

type ('a, 'b) fmt = ('a, t, t, 'b) format4 
type printer0 = t -> t 
type 'a printer = 'a -> printer0 
val empty : t

Пустой документ

val format : Format.formatter -> t -> unit

format ppf doc отправляет инструкцию форматирования из doc форматтеру модуля Format doc.

val fold : ('acc -> element -> 'acc) -> 'acc -> t -> 'acc

Свёртка документа как последовательности инструкций

val msg : ('a, t) fmt -> 'a

Format_doc.Doc.msg и Format_doc.Doc.kmsg создают документ на основе форматной строки и её аргумента

val kmsg : (t -> 'b) -> ('a, 'b) fmt -> 'a
val printf : ('a, printer0) fmt -> 'a

Format_doc.Doc.printf и Format_doc.Doc.kprintf создают принтер на основе форматной строки и её аргумента

val kprintf : (t -> 'b) ->       ('a, t -> 'b) fmt -> 'a
val open_box : box_type -> int -> printer0

Приведённые ниже функции повторяют принтеры Format, но без соглашения об именовании с префиксом pp_print_

val close_box : printer0
val text : string printer
val string : string printer
val bytes : bytes printer
val with_size : int printer
val int : int printer
val float : float printer
val char : char printer
val bool : bool printer
val space : printer0
val cut : printer0
val break : spaces:int -> indent:int -> printer0
val custom_break : fits:string * int * string ->       breaks:string * int * string -> printer0
val force_newline : printer0
val if_newline : printer0
val flush : printer0
val force_stop : printer0
val open_tbox : printer0
val set_tab : printer0
val tab : printer0
val tab_break : width:int -> offset:int -> printer0
val close_tbox : printer0
val open_tag : stag printer
val close_tag : printer0
val list : ?sep:printer0 ->       'a printer -> 'a list printer
val iter : ?sep:printer0 ->       iter:(('a -> unit) -> 'b -> unit) ->       'a printer -> 'b printer
val array : ?sep:printer0 ->       'a printer -> 'a array printer
val seq : ?sep:printer0 ->       'a printer -> 'a Seq.t printer
val option : ?none:printer0 ->       'a printer -> 'a option printer
val result : ok:'a printer ->       error:'e printer ->       ('a, 'e) result printer
val either : left:'a printer ->       right:'b printer ->       ('a, 'b) Either.t printer

Функции выравнивания

val align_prefix : (t * int) list -> t list

Выравнивают правую сторону блока тега "@{<ralign>...@}", вставляя пробелы в начало блоков. Эти функции ничего не делают, если блок тега расположен после подсказки переноса строки.

val align_prefix2 : t * int ->       t * int -> t * t

© 1995-2026 INRIA.
https://ocaml.org/manual/5.5/api/compilerlibref/Format_doc.Doc.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API