Refactor the tracing code, store the whole tree structure in a javascript array and...
[tatoo.git] / src / pretty.ml
index 66a0225..b39375a 100644 (file)
@@ -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