diff --git a/src/libgrew.ml b/src/libgrew.ml index c7f79bcf29358d9de8750fa129b85db465e58fc9..fe7db6028758e44c25d010bee5ea7b0a63d4c460 100644 --- a/src/libgrew.ml +++ b/src/libgrew.ml @@ -73,55 +73,54 @@ let rewrite ~gr ~grs ~seq = IFDEF DEP2PICT THEN -let rewrite_to_html ?main_feat input_dir grs output_dir no_init current_grs_file current_grs seq title = - try - let rewrite_to_html_intern ?(no_init=false) grs_file grs seq input output nb_sentence previous next = - let buff = Buffer.create 16 in +let rewrite_to_html_intern ?(no_init=false) ?main_feat grs_file grs seq input output nb_sentence previous next = + let buff = Buffer.create 16 in - let head = Printf.sprintf " -
%sUp%s

" - (if previous <> "" then (Printf.sprintf "Sentence %d -- " previous (nb_sentence-1)) else "") - (if next <> "" then (Printf.sprintf " -- Sentence %d" next (nb_sentence+1)) else "") in + let head = Printf.sprintf " +
%sUp%s

" + (if previous <> "" then (Printf.sprintf "Sentence %d -- " previous (nb_sentence-1)) else "") + (if next <> "" then (Printf.sprintf " -- Sentence %d" next (nb_sentence+1)) else "") in - let title = "Sentence "^(string_of_int nb_sentence) in - Printf.bprintf buff "%s\n" head; - Printf.bprintf buff "GRS file: %s
\n" (Filename.concat (Filename.dirname output) (Filename.basename grs_file)) (Filename.basename grs_file); - Printf.bprintf buff "Input file: %s\n" (Filename.concat (Filename.dirname output) (Filename.basename input)) (Filename.basename input); - ignore(Sys.command(Printf.sprintf "cp %s %s" input (Filename.concat (Filename.dirname output) (Filename.basename input)))); - - let init = Instance.build (Grew_parser.parse_file_to_gr input) in - try - let rew_hist = Grs.rewrite grs seq init in - (* let _ = Grs.build_rew_display grs seq init in *) - let stats = - if no_init - then Some (Rewrite_history.save_html ?main_feat ~init_graph:false ~header:(Buffer.contents buff) output rew_hist) - else Some (Rewrite_history.save_html ?main_feat ~header:(Buffer.contents buff) output rew_hist) in - stats - with - | Utils.Run (msg, Some (loc_file,loc_line)) -> - let html_ch = open_out (sprintf "%s.html" output) in - let () = Html.enter html_ch ~header:(Buffer.contents buff) output in - fprintf html_ch "
Initial graph
\n"; - Instance.save_dep_png ?main_feat output init; - fprintf html_ch "
\n" (Filename.basename output); - fprintf html_ch "

ERROR during rewriting:

\n"; - fprintf html_ch "

Message: %s

\n" msg; - fprintf html_ch "

File: %s

\n" loc_file; - fprintf html_ch "

Line: %d

\n" loc_line; - Html.leave html_ch; - close_out html_ch; - None - | exc -> - let html_ch = open_out (sprintf "%s.html" output) in - let () = Html.enter html_ch ~header:(Buffer.contents buff) output in - fprintf html_ch "

UNEXPECTED EXCEPTION: %s

" (Printexc.to_string exc); - Html.leave html_ch; - close_out html_ch; - None - - in + Printf.bprintf buff "%s\n" head; + Printf.bprintf buff "GRS file: %s
\n" (Filename.concat (Filename.dirname output) (Filename.basename grs_file)) (Filename.basename grs_file); + Printf.bprintf buff "Input file: %s\n" (Filename.concat (Filename.dirname output) (Filename.basename input)) (Filename.basename input); + ignore(Sys.command(Printf.sprintf "cp %s %s" input (Filename.concat (Filename.dirname output) (Filename.basename input)))); + + let init = Instance.build (Grew_parser.parse_file_to_gr input) in + try + let rew_hist = Grs.rewrite grs seq init in + (* let _ = Grs.build_rew_display grs seq init in *) + let stats = + if no_init + then Some (Rewrite_history.save_html ?main_feat ~init_graph:false ~header:(Buffer.contents buff) output rew_hist) + else Some (Rewrite_history.save_html ?main_feat ~header:(Buffer.contents buff) output rew_hist) in + stats + with + | Utils.Run (msg, Some (loc_file,loc_line)) -> + let html_ch = open_out (sprintf "%s.html" output) in + let () = Html.enter html_ch ~header:(Buffer.contents buff) output in + fprintf html_ch "
Initial graph
\n"; + Instance.save_dep_png ?main_feat output init; + fprintf html_ch "
\n" (Filename.basename output); + fprintf html_ch "

ERROR during rewriting:

\n"; + fprintf html_ch "

Message: %s

\n" msg; + fprintf html_ch "

File: %s

\n" loc_file; + fprintf html_ch "

Line: %d

\n" loc_line; + Html.leave html_ch; + close_out html_ch; + None + | exc -> + let html_ch = open_out (sprintf "%s.html" output) in + let () = Html.enter html_ch ~header:(Buffer.contents buff) output in + fprintf html_ch "

UNEXPECTED EXCEPTION: %s

" (Printexc.to_string exc); + Html.leave html_ch; + close_out html_ch; + None + + +let rewrite_to_html ?main_feat input_dir grs output_dir no_init current_grs_file current_grs seq title = + try (* get ALL gr files *) let all_files = Array.to_list (Sys.readdir input_dir) in @@ -146,6 +145,7 @@ let rewrite_to_html ?main_feat input_dir grs output_dir no_init current_grs_file seq (Filename.concat input_dir input) (Filename.concat output_dir (Filename.chop_extension input)) + ?main_feat !sentence_counter (if !sentence_counter > 1 then (Filename.chop_extension (List.nth gr_files (!sentence_counter-2))) else "") (if !sentence_counter < nb_files then (Filename.chop_extension (List.nth gr_files (!sentence_counter))) else "") diff --git a/src/libgrew_.mli b/src/libgrew_.mli index 45e238bfa93f7db49472e8a878cf6abea7abd4b0..ccac092deff70215bf25591915f6c4edcc7d4969 100644 --- a/src/libgrew_.mli +++ b/src/libgrew_.mli @@ -49,6 +49,11 @@ val gr : string -> gr val rewrite : gr:gr -> grs:grs -> seq:string -> rew_display IFDEF DEP2PICT THEN + + +val rewrite_to_html_intern : + ?no_init:bool -> ?main_feat:string -> string -> Grs.t -> string -> string -> string -> int -> string -> string -> (string * string list) list option + val rewrite_to_html : ?main_feat:string -> string -> string -> string -> bool -> string -> Grs.t -> string -> string -> unit ENDIF