www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 173f1e22df758a74bda6f777f8a19ab61e9e1662
parent fa7820f393551926556a66ac138a6bdb3da06679
Author: dpvc <dpvc@b8fd5906-0fad-46e2-a0d3-10d94ff285d1>
Date:   Wed, 29 Sep 2010 01:13:30 +0000

Add check for xmlns that specifies MathML, and process tags with namespace prefixes in HTML documents

git-svn-id: https://mathjax.svn.sourceforge.net/svnroot/mathjax/trunk@614 b8fd5906-0fad-46e2-a0d3-10d94ff285d1

Diffstat:
Mmathjax/extensions/mml2jax.js | 2+-
Mmathjax/unpacked/extensions/mml2jax.js | 46++++++++++++++++++++++++++++++++++------------
2 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/mathjax/extensions/mml2jax.js b/mathjax/extensions/mml2jax.js @@ -13,6 +13,6 @@ */ MathJax.Unpack([ - ['MathJax.Extension.mml2jax','={varsion:"1.0.2",config:{element:null,preview:"alttext"},MMLnamespace:"http://www.w3.org/1998/Math/MathML",','PreProcess',':function(','b){if(!','this.configured','){','MathJax.Hub.','Insert(','this.config',',(',7,'config.','mml2jax||{}));if(',9,'.Augment','){',7,8,'this,',9,15,')}',5,'=true}if(typeof(b)==="string"){b=document.getElementById(b)}if(!b){b=',9,'.element||document.body}var c=b.getElementsByTagName("math"),a;if(c.length===0&&','b.getElementsByTagNameNS','){c=',27,'(this.MMLnamespace,"math")}if(this.','msieMathTagBug','){','for(a=c.length-1;a>=0;a--){','if(c[a].nodeName==="MATH"){this.','msieProcessMath','(c[a])}else{','this.ProcessMath(c[a','])}}}else{',33,37,'])}}},ProcessMath',3,'e){var d','=e.parentNode;var a=document.createElement("script");a.type="math/mml";','d','.insertBefore(','a,e);if(this.msieScriptBug){var b=e.outerHTML;b=b.replace(/<\\?import .*?>/i,"").replace(/<\\?xml:namespace .*?\\/>/i,"");b=b.replace(/<(\\/?)m:/g,"<$1").replace(/&nbsp;/g,"&#xA0;");a.text=b;d.removeChild(e)}else{var ','c=MathJax.HTML.Element("span','");c.appendChild(e);MathJax.HTML.addText(a,c.innerHTML)}','if(this.config.preview!=="none"){this.createPreview(e,a)}},',35,3,'e){var c',44,'c',46,'a,e);var b="";while(e&&','e.nodeName','!=="/MATH"){if(',58,'==="#text"||',58,'==="#comment"){b+=e.nodeValue.replace(/&/g,"&#x26;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}else{b+=this.','toLowerCase','(e.outerHTML)}var d=e;e=e.nextSibling;d','.parentNode.removeChild(','d)}if(e&&',58,'==="/MATH"){e',66,'e)}a.text=b+"</math>";',50,64,3,'b){var d=b.split(/"/);for(var c=0,a=d.length;c<a;c+=2){d[c]=d[c].',64,'()}return d.join(\'"\')},createPreview',3,'b,a){var c;if(',9,'.preview','==="alttext"){var d=b.getAttribute("alttext");if(d!=null){c=[this.filterText(d)]}}else{if(',9,81,' instanceof Array){c=',9,81,'}}if(c){',48,'",{className:',7,12,'preRemoveClass},c);a.parentNode',46,'c,a)}},filterText',3,'a){return a}};',7,'Browser.Select({MSIE',3,'a){',7,8,0,',{msieScriptBug:true,',31,':true})}});',7,'Register.PreProcessor(["',2,'",',0,']);MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");'] + ['MathJax.Extension.mml2jax','={varsion:"1.0.3",config:{element:null,preview:"alttext"},','MMLnamespace',':"http://www.w3.org/1998/Math/MathML",','PreProcess',':function(','e){if(!','this.configured','){','MathJax.Hub.','Insert(','this.config',',(',9,'config.','mml2jax||{}));if(',11,'.Augment','){',9,10,'this,',11,17,')}',7,'=true}if(typeof(e)==="string"){e=document.getElementById(e)}if(!e){e=',11,'.element||document.body}','this.ProcessMathArray(e.getElementsByTagName','("math"));if','(e.getElementsByTagNameNS','){this.','ProcessMathArray',31,'(this.',2,',"math"))}var d=document.getElementsByTagName("html")[0];if(d){for(var c=0,b=d.attributes.length;c<b;c++){var a=d.attributes[c];if','(a.nodeName.substr(','0,6)==="xmlns:"&&a.nodeValue===this.',2,'){',29,38,'6)+":math"))}}}},',33,5,'b){var a;if(b.length){if',35,'msieMathTagBug','){','for(a=b.length-1;a>=0;a--){','if(b[a].nodeName==="MATH"){this.','msieProcessMath','(b[a])}else{','this.ProcessMath(b[a','])}}}else{',51,55,'])}}}},ProcessMath',5,'e){var d','=e.parentNode;var a=document.createElement("script");a.type="math/mml";','d','.insertBefore(','a,e);if',35,'msieScriptBug','){var b=e.outerHTML;b=b.replace(/<\\?import .*?>/i,"").replace(/<\\?xml:namespace .*?\\/>/i,"");a.text=b.replace(/&nbsp;/g,"&#xA0;");d.removeChild(e)}else{var ','c=MathJax.HTML.Element("span','");c.appendChild(e);MathJax.HTML.addText(a,c.innerHTML)}','if(this.config.preview!=="none"){this.createPreview(e,a)}},',53,5,'e){var c',62,'c',64,'a,e);var b="";while(e&&','e.nodeName','!=="/MATH"){if(',79,'==="#text"||',79,'==="#comment"){b+=e.nodeValue.replace(/&/g,"&#x26;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}else{b+=this.','toLowerCase','(e.outerHTML)}var d=e;e=e.nextSibling;d','.parentNode.removeChild(','d)}if(e&&',79,'==="/MATH"){e',87,'e)}a.text=b+"</math>";',71,85,5,'b){var d=b.split(/"/);for(var c=0,a=d.length;c<a;c+=2){d[c]=d[c].',85,'()}return d.join(\'"\')},createPreview',5,'b,a){var c;if(',11,'.preview','==="alttext"){var d=b.getAttribute("alttext");if(d!=null){c=[this.filterText(d)]}}else{if(',11,102,' instanceof Array){c=',11,102,'}}if(c){',69,'",{className:',9,14,'preRemoveClass},c);a.parentNode',64,'c,a)}},filterText',5,'a){return a}};',9,'Browser.Select({MSIE',5,'a){',9,10,0,',{',67,':true,',49,':true})}});',9,'Register.PreProcessor(["',4,'",',0,']);MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");'] ]); diff --git a/mathjax/unpacked/extensions/mml2jax.js b/mathjax/unpacked/extensions/mml2jax.js @@ -24,7 +24,7 @@ */ MathJax.Extension.mml2jax = { - varsion: "1.0.2", + varsion: "1.0.3", config: { element: null, // The ID of the element to be processed // (defaults to full document) @@ -45,16 +45,39 @@ MathJax.Extension.mml2jax = { } if (typeof(element) === "string") {element = document.getElementById(element)} if (!element) {element = this.config.element || document.body} - var math = element.getElementsByTagName("math"), i; - if (math.length === 0 && element.getElementsByTagNameNS) - {math = element.getElementsByTagNameNS(this.MMLnamespace,"math")} - if (this.msieMathTagBug) { - for (i = math.length-1; i >= 0; i--) { - if (math[i].nodeName === "MATH") {this.msieProcessMath(math[i])} - else {this.ProcessMath(math[i])} + // + // Handle all math tags with no namespaces + // + this.ProcessMathArray(element.getElementsByTagName("math")); + // + // Handle math with namespaces in XHTML + // + if (element.getElementsByTagNameNS) + {this.ProcessMathArray(element.getElementsByTagNameNS(this.MMLnamespace,"math"))} + // + // Handle math with namespaces in HTML + // + var html = document.getElementsByTagName("html")[0]; + if (html) { + for (var i = 0, m = html.attributes.length; i < m; i++) { + var attr = html.attributes[i]; + if (attr.nodeName.substr(0,6) === "xmlns:" && attr.nodeValue === this.MMLnamespace) + {this.ProcessMathArray(element.getElementsByTagName(attr.nodeName.substr(6)+":math"))} + } + } + }, + + ProcessMathArray: function (math) { + var i; + if (math.length) { + if (this.msieMathTagBug) { + for (i = math.length-1; i >= 0; i--) { + if (math[i].nodeName === "MATH") {this.msieProcessMath(math[i])} + else {this.ProcessMath(math[i])} + } + } else { + for (i = math.length-1; i >= 0; i--) {this.ProcessMath(math[i])} } - } else { - for (i = math.length-1; i >= 0; i--) {this.ProcessMath(math[i])} } }, @@ -66,8 +89,7 @@ MathJax.Extension.mml2jax = { if (this.msieScriptBug) { var html = math.outerHTML; html = html.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,""); - html = html.replace(/<(\/?)m:/g,"<$1").replace(/&nbsp;/g,"&#xA0;"); - script.text = html; + script.text = html.replace(/&nbsp;/g,"&#xA0;"); parent.removeChild(math); } else { var span = MathJax.HTML.Element("span"); span.appendChild(math);