let rec print_orals_table_line_html (hpr:string -> unit) (start:Unix.tm)
(step:int) (tnums:int list list) =
let rec is_empty tlist = match tlist with
| [] -> true
| x::c -> (x = []) && is_empty c in
let rec handle_line tlist = match tlist with
| [] -> hpr "</tr>\n"; []
| x::c -> if (List.length x = 0) then begin
hpr "<td/>";
x::(handle_line c)
end else begin
hpr (Printf.sprintf "<td align='center'>%d</td>\n" (List.hd x));
(List.tl x)::(handle_line c)
end in
if not(is_empty tnums) then begin
let (sectime,_) = Unix.mktime start in
let newtime = Unix.localtime (sectime+.(float step)) in
hpr (Printf.sprintf "<tr><td align='center'>%s</td>\n" (time_to_string start));
print_orals_table_line_html hpr newtime step (handle_line tnums);
end