X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fpretty.ml;fp=src%2Fpretty.ml;h=b39375a6d3a67f4ec6ef389d554f34dc0a5ff63e;hp=66a0225b629b51a9f852b676dafbd89b1452a851;hb=a089738aa464521c0ae79944eb00fc147cc37ac9;hpb=22f564fb392fd71207e19cc862c0a18c34d1c2c0 diff --git a/src/pretty.ml b/src/pretty.ml index 66a0225..b39375a 100644 --- a/src/pretty.ml +++ b/src/pretty.ml @@ -135,14 +135,29 @@ let pp_print_list ?(sep=dummy_printer) printer fmt l = fprintf fmt "%a" printer x) es +let pp_print_range ?(sep=dummy_printer) printer fmt (first, last) = + for i = first to last - 1 do + printer fmt i; + sep fmt (); + done; + if first <= last then printer fmt last + let pp_print_array ?(sep=dummy_printer) printer fmt a = - pp_print_list ~sep:sep printer fmt (Array.to_list a) + pp_print_range ~sep:sep (fun fmt i -> printer fmt a.(i)) fmt + (0, (Array.length a - 1)) -let print_list ?(sep=" ") printer fmt l = +let with_printer (f : ?sep:('a) -> 'b) strsep pr fmt = let sep_printer fmt () = - pp_print_string fmt sep + pp_print_string fmt strsep in - pp_print_list ~sep:sep_printer printer fmt l + fun x -> f ~sep:sep_printer pr fmt x + + +let print_list ?(sep=" ") printer fmt l = + with_printer pp_print_list sep printer fmt l let print_array ?(sep=" ") printer fmt a = - print_list ~sep:sep printer fmt (Array.to_list a) + with_printer pp_print_array sep printer fmt a + +let print_range ?(sep=" ") printer fmt r = + with_printer pp_print_range sep printer fmt r