lower level pp function

This commit is contained in:
Simon Cruanes 2013-03-21 17:51:44 +01:00
parent 7ed1bced9d
commit 6ba411d7f5

15
gen.ml
View file

@ -781,22 +781,27 @@ let int_range i j =
let pp ?(start="") ?(stop="") ?(sep=",") ?(horizontal=false) pp_elem formatter enum = let pp ?(start="") ?(stop="") ?(sep=",") ?(horizontal=false) pp_elem formatter enum =
(if horizontal (if horizontal
then Format.fprintf formatter "@[<h>%s" start then Format.pp_open_hbox formatter ()
else Format.fprintf formatter "@[%s" start); else Format.pp_open_hvbox formatter 0);
Format.pp_print_string formatter start;
let gen = enum () in let gen = enum () in
let rec next is_first = let rec next is_first =
let continue_ = let continue_ =
try try
let x = gen () in let x = gen () in
(if not is_first (if not is_first
then Format.fprintf formatter "%s@,%a" sep pp_elem x then begin
else pp_elem formatter x); Format.pp_print_string formatter sep;
Format.pp_print_space formatter ();
pp_elem formatter x
end else pp_elem formatter x);
true true
with EOG -> false in with EOG -> false in
if continue_ then next false if continue_ then next false
in in
next true; next true;
Format.fprintf formatter "%s@]" stop Format.pp_print_string formatter stop;
Format.pp_close_box formatter ()
module Infix = struct module Infix = struct
let (@@) = append let (@@) = append