diff options
Diffstat (limited to 'examples/includes/ASCIIMathPHP-2.0/htmlMathML.js')
-rw-r--r-- | examples/includes/ASCIIMathPHP-2.0/htmlMathML.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/examples/includes/ASCIIMathPHP-2.0/htmlMathML.js b/examples/includes/ASCIIMathPHP-2.0/htmlMathML.js new file mode 100644 index 000000000..f81a1d234 --- /dev/null +++ b/examples/includes/ASCIIMathPHP-2.0/htmlMathML.js @@ -0,0 +1,86 @@ +/* March 19, 2004 MathHTML (c) Peter Jipsen http://www.chapman.edu/~jipsen +This program 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. +This program 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 +(at http://www.gnu.org/copyleft/gpl.html) for more details.*/ + +function convertMath(node) {// for Gecko + if (node.nodeType==1) { + var newnode = + document.createElementNS("http://www.w3.org/1998/Math/MathML", + node.nodeName.toLowerCase()); + for(var i=0; i < node.attributes.length; i++) { + if (node.attributes[i].nodeName == 'displaystyle') { + newnode.setAttribute(node.attributes[i].nodeName,node.attributes[i].nodeValue); + } + } + for (var i=0; i<node.childNodes.length; i++) { + var st = node.childNodes[i].nodeValue; + if (st==null || st.slice(0,1)!=" " && st.slice(0,1)!="\n") + newnode.appendChild(convertMath(node.childNodes[i])); + } + return newnode; + } + else return node; +} +function convert() { + + if (document.createElementNS) { + var mmlnode = document.getElementsByTagName("span"); + + for (var i=0; i<mmlnode.length; i++) { + var tmp_node = mmlnode[i]; + if (tmp_node.className == 'asciimath') { + tmp_node.replaceChild(convertMath(tmp_node.firstChild),tmp_node.firstChild); + /* + for (var j=0;j<tmp_node.childNodes.length;j++) { + if (tmp_node.childNodes[j].nodeType != 3) { + + } + } + */ + } + } + } else { + var st,node,newnode; + var mmlnode = document.getElementsByTagName("math"); + + for (var i=0; i<mmlnode.length; i++) { + var str = ""; + node = mmlnode[i]; + while (node.nodeName!="/MATH" && node.nextSibling) { + st = node.nodeName.toLowerCase(); + if (st=="#text") { + str += node.nodeValue; + } else { + str += (st.slice(0,1)=="/" ? "</m:"+st.slice(1) : "<m:"+st); + if (st.slice(0,1)!="/") { + for(var j=0; j < node.attributes.length; j++) { + if (node.attributes[j].nodeValue!="italic" && + node.attributes[j].nodeValue!="" && + node.attributes[j].nodeValue!="inherit" && + node.attributes[j].nodeValue!=undefined) { + str += " "+node.attributes[j].nodeName+"="+ + "\""+node.attributes[j].nodeValue+"\""; + } + } + } + str += ">"; + } + node = node.nextSibling; + node.parentNode.removeChild(node.previousSibling); + } + + if (str != '') { + str += "</m:math>"; + newnode = document.createElement("span"); + node.parentNode.replaceChild(newnode,node); + newnode.innerHTML = str; + } + } + } +}
\ No newline at end of file |