]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_transformations/box.ml
renamed Http_client to Http_user_agent to avoid clashes with Gerd's
[helm.git] / helm / ocaml / cic_transformations / box.ml
index 764a491eb0d8eb2a876ae1dedcaf841f9d0aae6a..386fabd0bfb65a9b4e721b8e33fe1215bfd7af15 100644 (file)
@@ -49,32 +49,45 @@ let skip = Space([None,"width","1em"]);;
 
 let indent t = H([],[skip;t]);;
 
-(* MathML prefix *)
+(* BoxML prefix *)
 let prefix = "b";;
  
-let rec print_box =
- let module X = Xml in
-  function
-      Text (attr,s) -> X.xml_nempty ~prefix "text" attr (X.xml_cdata s)
-    | Space attr -> X.xml_empty ~prefix "space" attr
-    | Ink attr -> X.xml_empty ~prefix "ink" attr
-    | H (attr,l) ->
-       X.xml_nempty ~prefix "h" attr 
-          [< (List.fold_right (fun x i -> [< (print_box x) ; i >]) l [<>])
-          >]
-    | V (attr,l) ->
-       X.xml_nempty ~prefix "v" attr 
-          [< (List.fold_right (fun x i -> [< (print_box x) ; i >]) l [<>])
-          >]
-    | Object (attr,m) ->
-       X.xml_nempty ~prefix "obj" attr [< Mpresentation.print_mpres m >]
-    | Action (attr,l) ->
-       X.xml_nempty ~prefix "action" attr 
-          [< (List.fold_right (fun x i -> [< (print_box x) ; i >]) l [<>])
-          >]
+let box2xml ~obj2xml box =
+  let rec aux =
+   let module X = Xml in
+    function
+        Text (attr,s) -> X.xml_nempty ~prefix "text" attr (X.xml_cdata s)
+      | Space attr -> X.xml_empty ~prefix "space" attr
+      | Ink attr -> X.xml_empty ~prefix "ink" attr
+      | H (attr,l) ->
+          X.xml_nempty ~prefix "h" attr 
+            [< (List.fold_right (fun x i -> [< (aux x) ; i >]) l [<>])
+            >]
+      | V (attr,l) ->
+          X.xml_nempty ~prefix "v" attr 
+            [< (List.fold_right (fun x i -> [< (aux x) ; i >]) l [<>])
+            >]
+      | Object (attr,m) ->
+          X.xml_nempty ~prefix "obj" attr [< obj2xml m >]
+      | Action (attr,l) ->
+          X.xml_nempty ~prefix "action" attr 
+            [< (List.fold_right (fun x i -> [< (aux x) ; i >]) l [<>]) >]
+  in
+  aux box
 ;;
 
-let document_of_box pres =
+let rec map f = function
+  | (Text _) as box -> box
+  | (Space _) as box -> box
+  | (Ink _) as box -> box
+  | H (attr, l) -> H (attr, List.map (map f) l)
+  | V (attr, l) -> V (attr, List.map (map f) l)
+  | Action (attr, l) -> Action (attr, List.map (map f) l)
+  | Object (attr, obj) -> Object (attr, f obj)
+;;
+
+(*
+let document_of_box ~obj2xml pres =
  [< Xml.xml_cdata "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" ;
     Xml.xml_cdata "\n";
     Xml.xml_nempty ~prefix "box"
@@ -84,6 +97,7 @@ let document_of_box pres =
       Some "xmlns","xlink","http://www.w3.org/1999/xlink"
      ] (print_box pres)
  >]
+*)
 
 let b_h a b = H(a,b)
 let b_v a b = V(a,b)