]> matita.cs.unibo.it Git - helm.git/commitdiff
- embedded ClientHTTP module (not very nice, but ClientHTTP shouldn't
authorStefano Zacchiroli <zack@upsilon.cc>
Mon, 19 Apr 2004 12:06:25 +0000 (12:06 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Mon, 19 Apr 2004 12:06:25 +0000 (12:06 +0000)
  belongs to Getter module!)
- added PxpHelmConf module, repository of Pxp configurations for helm

helm/ocaml/pxp/.depend
helm/ocaml/pxp/Makefile
helm/ocaml/pxp/pxpHelmConf.ml [new file with mode: 0644]
helm/ocaml/pxp/pxpHelmConf.mli [new file with mode: 0644]
helm/ocaml/pxp/pxpUrlResolver.ml

index c2a1a4be6c0cc914ae324ea87eac919d02ca2c20..194343c475581fb7843a0afe2d56876d90d8e8ae 100644 (file)
@@ -1,2 +1,4 @@
 pxpUrlResolver.cmo: pxpUrlResolver.cmi 
 pxpUrlResolver.cmx: pxpUrlResolver.cmi 
+pxpHelmConf.cmo: pxpHelmConf.cmi 
+pxpHelmConf.cmx: pxpHelmConf.cmi 
index 40f698344d8f4336ed480600a9b2781eb0a03ec2..9086aa0c237308ed9a2ccce6601788334e691afb 100644 (file)
@@ -1,8 +1,8 @@
 PACKAGE = pxp
-REQUIRES = helm-getter
+REQUIRES = pxp-engine pxp-lex-utf8 pxp-lex-iso88591 pxp-lex-iso885915 http
 PREDICATES =
 
-INTERFACE_FILES = pxpUrlResolver.mli
+INTERFACE_FILES = pxpUrlResolver.mli pxpHelmConf.mli
 IMPLEMENTATION_FILES = $(INTERFACE_FILES:%.mli=%.ml)
 EXTRA_OBJECTS_TO_INSTALL =
 EXTRA_OBJECTS_TO_CLEAN =
diff --git a/helm/ocaml/pxp/pxpHelmConf.ml b/helm/ocaml/pxp/pxpHelmConf.ml
new file mode 100644 (file)
index 0000000..88969df
--- /dev/null
@@ -0,0 +1,38 @@
+(* Copyright (C) 2004, HELM Team.
+ * 
+ * This file is part of HELM, an Hypertextual, Electronic
+ * Library of Mathematics, developed at the Computer Science
+ * Department, University of Bologna, Italy.
+ * 
+ * HELM is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * HELM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HELM; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * For details, see the HELM World-Wide-Web page,
+ * http://helm.cs.unibo.it/
+ *)
+
+class warner =
+  object 
+    method warn w = prerr_endline ("Pxp warning: " ^ w)
+  end
+
+let pxp_config =
+  { Pxp_types.default_config with
+      Pxp_types.encoding = `Enc_utf8;
+      Pxp_types.warner = new warner
+  }
+
+let pxp_spec = Pxp_tree_parser.default_spec
+
diff --git a/helm/ocaml/pxp/pxpHelmConf.mli b/helm/ocaml/pxp/pxpHelmConf.mli
new file mode 100644 (file)
index 0000000..d18d632
--- /dev/null
@@ -0,0 +1,28 @@
+(* Copyright (C) 2004, HELM Team.
+ * 
+ * This file is part of HELM, an Hypertextual, Electronic
+ * Library of Mathematics, developed at the Computer Science
+ * Department, University of Bologna, Italy.
+ * 
+ * HELM is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * HELM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HELM; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * For details, see the HELM World-Wide-Web page,
+ * http://helm.cs.unibo.it/
+ *)
+
+val pxp_config: Pxp_types.config
+val pxp_spec:   ('a Pxp_document.node Pxp_document.extension as 'a) Pxp_document.spec
+
index 89d540e62fcb0b58c2ad388ae259f4bda95c58d5..ec94b4e5ee4d2c7e6a4b46fd57acebd1fd7fa7d9 100644 (file)
  * http://cs.unibo.it/helm/.
  *)
 
-(* This resolver uses ClientHTTP to download the files from the Web *)
+(* cut and paste from ../getter/clientHTTP.ml *)
+exception HttpClientError of string * string;; (* reason, uri *)
+
+let send cmd =
+ try
+  ignore (Http_client.http_get cmd)
+ with
+  e -> raise (HttpClientError (Printexc.to_string e, cmd))
+;;
+
+let get uri =
+ try
+  Http_client.http_get uri
+ with
+  e -> raise (HttpClientError (Printexc.to_string e, uri))
+;;
+
+let get_and_save uri dest_filename =
+ let reply = get uri
+ and out_channel = open_out dest_filename in
+  output_string out_channel reply ;
+  close_out out_channel
+;;
+
+let get_and_save_to_tmp uri =
+ let flat_string s s' c =
+  let cs = String.copy s in
+   for i = 0 to (String.length s) - 1 do
+    if String.contains s' s.[i] then cs.[i] <- c
+   done ;
+   cs
+ in
+  let user = try Unix.getlogin () with _ -> "" in
+  let tmp_file =
+    Filename.temp_file (user ^ flat_string uri ".-=:;!?/&" '_') ""
+  in
+  get_and_save uri tmp_file ;
+  tmp_file
+;;
+(* / cut and paste from ../getter/clientHTTP.ml *)
+
 let url_resolver =
  let url_of_id =
   function
@@ -33,7 +73,7 @@ let url_resolver =
    | _ -> raise Pxp_reader.Not_competent
  in
  let channel_of_url _ url =
-  let file = ClientHTTP.get_and_save_to_tmp (Neturl.string_of_url url) in
+  let file = get_and_save_to_tmp (Neturl.string_of_url url) in
   let ch = open_in file in
    Unix.unlink file ;
    ch,None
@@ -41,3 +81,4 @@ let url_resolver =
   new Pxp_reader.resolve_read_url_channel
    ~url_of_id ~channel_of_url ()
 ;;
+