36 lines
893 B
OCaml
36 lines
893 B
OCaml
|
|
(** Very small tooling for format printers. *)
|
||
|
|
|
||
|
|
include Format
|
||
|
|
|
||
|
|
type 'a t = Format.formatter -> 'a -> unit
|
||
|
|
|
||
|
|
let list = pp_print_list
|
||
|
|
let str = pp_print_string
|
||
|
|
let sexp fmt s pp x = fprintf fmt "@[<3>(%s@ %a)@]" s pp x
|
||
|
|
let pair pp1 pp2 fmt (v1,v2) =
|
||
|
|
pp1 fmt v1; pp_print_space fmt () ; pp2 fmt v2
|
||
|
|
let triple pp1 pp2 pp3 fmt (v1, v2, v3) =
|
||
|
|
pp1 fmt v1; pp_print_space fmt () ;
|
||
|
|
pp2 fmt v2; pp_print_space fmt () ;
|
||
|
|
pp3 fmt v3
|
||
|
|
let int = pp_print_int
|
||
|
|
let optint fmt = function
|
||
|
|
| None -> ()
|
||
|
|
| Some i -> fprintf fmt "@ %d" i
|
||
|
|
|
||
|
|
let quote fmt s = Format.fprintf fmt "\"%s\"" s
|
||
|
|
|
||
|
|
let pp_olist pp_elem fmt =
|
||
|
|
Format.fprintf fmt "@[<3>[@ %a@ ]@]"
|
||
|
|
(pp_print_list
|
||
|
|
~pp_sep:(fun fmt () -> fprintf fmt ";@ ")
|
||
|
|
pp_elem)
|
||
|
|
|
||
|
|
let pp_str_list = pp_olist quote
|
||
|
|
|
||
|
|
let to_to_string pp x =
|
||
|
|
let b = Buffer.create 16 in
|
||
|
|
let fmt = Format.formatter_of_buffer b in
|
||
|
|
pp fmt x;
|
||
|
|
Buffer.contents b
|