X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FsearchEngine%2FsearchEngine.ml;h=4a5c2e1b5df82414056e8dabc71042c0f7988807;hb=01a159421d87064d2e5397bfc90630a671e7824a;hp=d79e6ebd4cd757c2028c1f8fb796f69b661cc68b;hpb=19c358a092b3008f8a23b56e4b3c5844759d6868;p=helm.git
diff --git a/helm/searchEngine/searchEngine.ml b/helm/searchEngine/searchEngine.ml
index d79e6ebd4..4a5c2e1b5 100644
--- a/helm/searchEngine/searchEngine.ml
+++ b/helm/searchEngine/searchEngine.ml
@@ -30,13 +30,11 @@ module C = MQIConn
open Http_types ;;
-let debug = false;;
+let debug = true;;
let debug_print s = if debug then prerr_endline s;;
Http_common.debug := true;;
(* Http_common.debug := true;; *)
-let mqi_flags = [] (* default MathQL interpreter options *)
-
open Printf;;
let daemon_name = "Search Engine";;
@@ -61,6 +59,11 @@ let final_results_TPL = pages_dir ^ "/templateambigpdq3.html";;
exception Chat_unfinished
+let javascript_quote =
+ let rex = Pcre.regexp "'" in
+ Pcre.replace ~rex ~templ:"\\'"
+;;
+
(* build a bool from a 1-character-string *)
let bool_of_string' = function
| "0" -> false
@@ -264,33 +267,27 @@ in
(* HTTP DAEMON CALLBACK *)
-let callback (req: Http_types.request) outchan =
+let callback mqi_handle (req: Http_types.request) outchan =
try
debug_print (sprintf "Received request: %s" req#path);
(match req#path with
| "/execute" ->
- let mqi_handle = C.init mqi_flags debug_print in
let query_string = req#param "query" in
let lexbuf = Lexing.from_string query_string in
let query = MQueryUtil.query_of_text lexbuf in
let result = MQueryInterpreter.execute mqi_handle query in
let result_string = pp_result result in
- C.close mqi_handle;
Http_daemon.respond ~body:result_string ~headers:[contype] outchan
| "/locate" ->
- let mqi_handle = C.init mqi_flags debug_print in
let id = req#param "id" in
let query = G.locate id in
let result = MQueryInterpreter.execute mqi_handle query in
- C.close mqi_handle;
Http_daemon.respond ~headers:[contype] ~body:(pp_result result) outchan
| "/unreferred" ->
- let mqi_handle = C.init mqi_flags debug_print in
let target = req#param "target" in
let source = req#param "source" in
let query = G.unreferred target source in
let result = MQueryInterpreter.execute mqi_handle query in
- C.close mqi_handle;
Http_daemon.respond ~headers:[contype] ~body:(pp_result result) outchan
| "/getpage" ->
(* TODO implement "is_permitted" *)
@@ -347,27 +344,9 @@ let callback (req: Http_types.request) outchan =
| "/searchPattern"
| "/matchConclusion"
| "/locateInductivePrinciple" ->
- let mqi_handle = C.init mqi_flags debug_print in
let term_string = req#param "term" in
let (context, metasenv) = ([], []) in
let id_to_uris_raw = req#param "aliases" in
-(*XXX
- let tokens = Pcre.split ~pat:"\\s" id_to_uris_raw in
- let rec parse_tokens keys lookup = function (* TODO spostarla fuori *)
- | [] -> keys, lookup
- | "alias" :: key :: value :: rest ->
- let key' = CicTextualParser0.Id key in
- parse_tokens
- (key'::keys)
- (fun id ->
- if id = key' then
- Some
- (CicTextualParser0.Uri (MQueryMisc.cic_textual_parser_uri_of_string value))
- else lookup id)
- rest
- | _ -> failwith "Can't parse aliases"
- in
-*)
let parse_choices choices_raw =
let choices = Pcre.split ~pat:";" choices_raw in
List.fold_left
@@ -439,7 +418,9 @@ print_endline ("id_to_uris: " ^ (DisambiguatingParser.EnvironmentP3.to_string id
(String.concat "
"
(List.map
(fun (id, value) ->
- (sprintf "alias id %s = %s" id value))
+ let id = javascript_quote id in
+ let value = javascript_quote value in
+ sprintf "alias id %s = %s" id value)
l)) ^
"\'")
interpretations)
@@ -452,10 +433,12 @@ print_endline ("id_to_uris: " ^ (DisambiguatingParser.EnvironmentP3.to_string id
(String.concat " "
(List.map
(fun (id, value) ->
- (sprintf "alias id %s = %s"
+ let id = javascript_quote id in
+ let value = javascript_quote value in
+ sprintf "alias id %s = %s"
id
(MQueryMisc.wrong_xpointer_format_from_wrong_xpointer_format'
- value)))
+ value))
l)) ^
"\'")
interpretations)
@@ -481,128 +464,105 @@ print_endline ("id_to_uris: " ^ (DisambiguatingParser.EnvironmentP3.to_string id
in
let module Disambiguate' = DisambiguatingParser.Make(Chat) in
let (id_to_uris', metasenv', term') =
+ match
Disambiguate'.disambiguate_term mqi_handle
context metasenv term_string id_to_uris
+ with
+ [id_to_uris',metasenv',term'] -> id_to_uris',metasenv',term'
+ | _ -> assert false
in
- (match metasenv' with
- | [] ->
- let universe,
- ((must_obj, must_rel, must_sort) as must'),
- ((only_obj, only_rel, only_sort) as only) =
- get_constraints term' req#path
- in
- let must'', only' =
- (try
- add_user_constraints
- ~constraints:(req#param "constraints")
- (must', only)
- with Http_types.Param_not_found _ ->
- let variables =
- "var aliases = '" ^ id_to_uris_raw ^ "';\n" ^
- "var constr_obj_len = " ^
- string_of_int (List.length must_obj) ^ ";\n" ^
- "var constr_rel_len = " ^
- string_of_int (List.length must_rel) ^ ";\n" ^
- "var constr_sort_len = " ^
- string_of_int (List.length must_sort) ^ ";\n" in
- let form =
- (if must_obj = [] then "" else
- "