summaryrefslogtreecommitdiff
path: root/math/mathml.ml
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2006-10-11 18:12:39 +0000
committerPierre Schmitz <pierre@archlinux.de>2006-10-11 18:12:39 +0000
commit183851b06bd6c52f3cae5375f433da720d410447 (patch)
treea477257decbf3360127f6739c2f9d0ec57a03d39 /math/mathml.ml
MediaWiki 1.7.1 wiederhergestellt
Diffstat (limited to 'math/mathml.ml')
-rw-r--r--math/mathml.ml20
1 files changed, 20 insertions, 0 deletions
diff --git a/math/mathml.ml b/math/mathml.ml
new file mode 100644
index 00000000..b6c76af2
--- /dev/null
+++ b/math/mathml.ml
@@ -0,0 +1,20 @@
+open Tex
+open Render_info
+
+type t = TREE_MN of string | TREE_MO of string | TREE_MI of string
+
+let rec make_mathml_tree = function
+ TREE_MN a::otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MN,b))::itr -> make_mathml_tree(TREE_MN (a^b)::otr,itr)
+ | otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MN,a))::itr -> make_mathml_tree(TREE_MN a::otr,itr)
+ | otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MO,a))::itr -> make_mathml_tree(TREE_MO a::otr,itr)
+ | otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MI,a))::itr -> make_mathml_tree(TREE_MI a::otr,itr)
+ | otr,TEX_CURLY(crl)::itr -> make_mathml_tree(otr,crl@itr)
+ | otr,[] -> List.rev otr
+ | _ -> failwith "failed to render mathml"
+
+let render_mathml_tree = function
+ TREE_MN s -> "<mn>"^s^"</mn>"
+ | TREE_MI s -> "<mi>"^s^"</mi>"
+ | TREE_MO s -> "<mo>"^s^"</mo>"
+
+let render tree = try Some (Util.mapjoin render_mathml_tree (make_mathml_tree ([],tree))) with _ -> None