X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fmathql_interpreter%2Fpattern.ml;h=5dcb8a585dfee96099f4636396a42ce571851ee0;hb=d59d2f93956bcbe4dd7bb3407e3c53de8b66c003;hp=c9dde8b6ab39f4e50f77bef332d7ede617a090c3;hpb=8abd42ec1af0d5daef1d026ec550b49b07de8340;p=helm.git diff --git a/helm/ocaml/mathql_interpreter/pattern.ml b/helm/ocaml/mathql_interpreter/pattern.ml index c9dde8b6a..5dcb8a585 100644 --- a/helm/ocaml/mathql_interpreter/pattern.ml +++ b/helm/ocaml/mathql_interpreter/pattern.ml @@ -20,24 +20,34 @@ * MA 02111-1307, USA. * * For details, see the HELM World-Wide-Web page, - * http://cs.unibo.it/helm/. + * http://www.cs.unibo.it/helm/. *) -(* - * implementazione del comando PATTERN - *) - -open Dbconn;; open Utility;; -open Eval;; -let pattern_ex apreamble apattern afragid = - let c = pgc () in - let r1 = helm_class_id "MathResource" in - let qq = "select att0 from t" ^ r1 ^ " where att0 " ^ (pattern_match apreamble apattern afragid) in - (*let _ = print_endline qq in*) - let res = - c#exec (qq) - in - [["retVal"]] @ List.map (fun l -> [l]) (pgresult_to_string_list res) +let cat l1 l2 = + if l1 > l2 then + l2 @ l1 + else + l1 @ l2 +;; + +let rec pattern_ex handle l = + match l with + [] -> [] + | s::tl -> let result = + let c = MQIConn.pgc handle in + let quoted_s = + Str.global_substitute (Str.regexp "'") + (function _ -> "\\'") s in + let qq = "select uri from registry where uri ~ '" ^ quoted_s ^ "' order by registry.uri asc" in + let res = c#exec (qq) in + List.map (function uri -> (List.hd uri,[])) res#get_list + (*for i = 0 to res#ntuples do + List.map (function uri -> (uri,[])) (res#get_tuple_list i) + done*) + + in + cat result (pattern_ex handle tl) ;; +