X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=html_header.ml;fp=html_header.ml;h=f2b1a8e29d905a18f7c8eea293fff63283d9f02c;hb=f1da22caf34bc3367984228ace9e7e7aa0760f0a;hp=0000000000000000000000000000000000000000;hpb=b1e6806834df253d5454fffad7f14fb24c74af70;p=SXSI%2Fxpathcomp.git diff --git a/html_header.ml b/html_header.ml new file mode 100644 index 0000000..f2b1a8e --- /dev/null +++ b/html_header.ml @@ -0,0 +1,211 @@ +let html_header = format_of_string + " + + + + + + + + +" +let html_footer = " + +" + let h_trace = Hashtbl.create 4096 + let register_trace t x = Hashtbl.add h_trace (Tree.id t) x + + + let output_trace a t file results = + let h_auto = 6+ (Hashtbl.fold (fun _ l a -> (List.length l)+a) a.phi 0) in + let max_tt = ref 0 in + let outc = open_out file in + let outf = Format.formatter_of_out_channel outc in + let strf = Format.str_formatter in + let pr_str x = Format.fprintf strf x in + let pr_out x = Format.fprintf outf x in + let rec loop t = + if not (Tree.is_nil t) then + let tooltip,selected = try + let (inconf,outconf,leftres,rightres,trans) = Hashtbl.find h_trace (Tree.id t) in + let selected = IntSet.mem (Tree.id t) results in + pr_str "
Subtree %i, tag='%s', internal node = %s\nEntered with configuration:\n" + (Tree.id t) (Tree.id t) (Tag.to_string (Tree.tag t)) (Tree.dump_node t); + iter_pl (fun s -> pr_st strf (Ptset.elements s)) inconf; + pr_str "%s" "\nLeft with configuration:\n"; + iter_pl (fun s -> pr_st strf (Ptset.elements s)) outconf; + pr_str "%s" "\nAccept states for left child:\n"; + iter_pl (fun s -> pr_st strf (Ptset.elements s)) leftres; + pr_str "%s" "\nAccept states for right child:\n"; + iter_pl (fun s -> pr_st strf (Ptset.elements s)) rightres; + pr_str "%s" "\nTriggered transitions:\n"; + pr_str "%s" ""; + List.iter (fun fl -> + pr_str "%s" ""; + max_tt := max !max_tt (form_list_length fl); + ) trans; + pr_str "%s" "
";pr_frmlst strf fl;pr_str "
\n"; + pr_str "In result set : %s\n
" (if selected then "Yes" else "No"); + Format.flush_str_formatter(),selected + with + Not_found -> "",false + in + let tag = Tree.tag t in + let div_class = (if (tooltip = "") then "skipped" else (if selected then "selected" else "touched"))^ + (if tag == Tag.pcdata then "_text" else"") + in + if tag == Tag.pcdata then + pr_out "
%s%s
"div_class (Tree.get_text t) tooltip + else begin + if (Tree.is_nil (Tree.first_child t)) + then + pr_out "
<%s/>%s
" + div_class (Tree.id t) (Tree.id t) (Tag.to_string tag) tooltip + else begin + pr_out "
<%s>%s
" + div_class (Tree.id t) (Tree.id t) (Tag.to_string tag) tooltip; + loop (Tree.first_child t); + pr_out "
</%s>
" div_class (Tag.to_string tag); + end; + end; + loop (Tree.next_sibling t); + in + let max_tt = 25*(!max_tt + 12)+20 in + let height = max max_tt (25*h_auto) in + pr_out html_header height height height height; + pr_out "%s" "
"; + dump outf a; + pr_out "%s" "
"; + pr_out "%s" "
"; + loop t; + pr_out "%s" html_footer; + pr_out "%!"; + close_out outc