Merge branch 'issue106' into 1.1a-candidate
This commit is contained in:
commit
3056b41c13
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -12,5 +12,5 @@
|
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
|
||||
MathJax.Extension.mml2jax={version:"1.1.1",config:{preview:"alttext"},MMLnamespace:"http://www.w3.org/1998/Math/MathML",PreProcess:function(e){if(!this.configured){this.config=MathJax.Hub.CombineConfig("mml2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}this.InitBrowser();this.configured=true}if(typeof(e)==="string"){e=document.getElementById(e)}if(!e){e=document.body}this.ProcessMathArray(e.getElementsByTagName("math"));if(e.getElementsByTagNameNS){this.ProcessMathArray(e.getElementsByTagNameNS(this.MMLnamespace,"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.MMLnamespace){this.ProcessMathArray(e.getElementsByTagName(a.nodeName.substr(6)+":math"))}}}},ProcessMathArray:function(b){var a;if(b.length){if(this.msieMathTagBug){for(a=b.length-1;a>=0;a--){if(b[a].nodeName==="MATH"){this.msieProcessMath(b[a])}else{this.ProcessMath(b[a])}}}else{for(a=b.length-1;a>=0;a--){this.ProcessMath(b[a])}}}},ProcessMath:function(e){var d=e.parentNode;var a=document.createElement("script");a.type="math/mml";d.insertBefore(a,e);if(this.msieScriptBug){var b=this.msieOuterHTML(e);b=b.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,"");MathJax.HTML.setScript(a,b.replace(/ /g," "));d.removeChild(e)}else{var c=MathJax.HTML.Element("span");c.appendChild(e);MathJax.HTML.setScript(a,c.innerHTML)}if(this.config.preview!=="none"){this.createPreview(e,a)}},msieProcessMath:function(e){var c=e.parentNode;var a=document.createElement("script");a.type="math/mml";c.insertBefore(a,e);var b="",d;while(e&&e.nodeName!=="/MATH"){d=e;e=e.nextSibling;b+=this.msieNodeHTML(d);d.parentNode.removeChild(d)}if(e&&e.nodeName==="/MATH"){e.parentNode.removeChild(e)}a.text=b+"</math>";if(this.config.preview!=="none"){this.createPreview(e,a)}},msieNodeHTML:function(d){var c,b,a;if(d.nodeName==="#text"){c=d.nodeValue.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}else{if(d.nodeName==="#comment"){c="<!--"+d.nodeValue+"-->"}else{if(this.msieAttributeBug){c="<"+d.nodeName.toLowerCase();for(b=0,a=d.attributes.length;b<a;b++){if(d.attributes[b].specified){c+=" "+d.attributes[b].nodeName.toLowerCase()+"=";c+='"'+d.attributes[b].nodeValue.replace(/\"/g,'\\"')+'"'}}c+=">"}else{c=this.toLowerCase(d.outerHTML);var e=c.split(/\"/);for(b=0,a=e.length;b<a;b+=2){e[b]=e[b].toLowerCase()}c=e.join('"')}}}return c},msieOuterHTML:function(d){if(d.nodeName.charAt(0)==="#"){return this.msieNodeHTML(d)}if(!this.msieAttributeBug){return d.outerHTML}var c=this.msieNodeHTML(d);for(var b=0,a=d.childNodes.length;b<a;b++){c+=this.msieOuterHTML(d.childNodes[b])}c+="</"+d.nodeName.toLowerCase()+">";return c},createPreview:function(b,a){var c;if(this.config.preview==="alttext"){var d=b.getAttribute("alttext");if(d!=null){c=[this.filterText(d)]}}else{if(this.config.preview instanceof Array){c=this.config.preview}}if(c){c=MathJax.HTML.Element("span",{className:MathJax.Hub.config.preRemoveClass},c);a.parentNode.insertBefore(c,a)}},filterText:function(a){return a},InitBrowser:function(){MathJax.Hub.Browser.Select({MSIE:function(a){var b=MathJax.HTML.Element("span",{className:"mathjax"});MathJax.Hub.Insert(MathJax.Extension.mml2jax,{msieScriptBug:true,msieMathTagBug:(MathJax.HTML.Element("span",{innerHTML:"<math><mi>x</mi></math>"}).childNodes.length!==1),msieAttributeBug:(b.outerHTML.substr(12)!=='"')})}})}};MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.mml2jax]);MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");
|
||||
MathJax.Extension.mml2jax={version:"1.1.2",config:{preview:"alttext"},MMLnamespace:"http://www.w3.org/1998/Math/MathML",PreProcess:function(e){if(!this.configured){this.config=MathJax.Hub.CombineConfig("mml2jax",this.config);if(this.config.Augment){MathJax.Hub.Insert(this,this.config.Augment)}this.InitBrowser();this.configured=true}if(typeof(e)==="string"){e=document.getElementById(e)}if(!e){e=document.body}this.ProcessMathArray(e.getElementsByTagName("math"));if(e.getElementsByTagNameNS){this.ProcessMathArray(e.getElementsByTagNameNS(this.MMLnamespace,"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.MMLnamespace){this.ProcessMathArray(e.getElementsByTagName(a.nodeName.substr(6)+":math"))}}}},ProcessMathArray:function(b){var a;if(b.length){if(this.MathTagBug){for(a=b.length-1;a>=0;a--){if(b[a].nodeName==="MATH"){this.ProcessMathFlattened(b[a])}else{this.ProcessMath(b[a])}}}else{for(a=b.length-1;a>=0;a--){this.ProcessMath(b[a])}}}},ProcessMath:function(e){var d=e.parentNode;var a=document.createElement("script");a.type="math/mml";d.insertBefore(a,e);if(this.AttributeBug){var b=this.OuterHTML(e);if(this.CleanupHTML){b=b.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,"");b=b.replace(/ /g," ")}MathJax.HTML.setScript(a,b);d.removeChild(e)}else{var c=MathJax.HTML.Element("span");c.appendChild(e);MathJax.HTML.setScript(a,c.innerHTML)}if(this.config.preview!=="none"){this.createPreview(e,a)}},ProcessMathFlattened:function(e){var c=e.parentNode;var a=document.createElement("script");a.type="math/mml";c.insertBefore(a,e);var b="",d;while(e&&e.nodeName!=="/MATH"){d=e;e=e.nextSibling;b+=this.NodeHTML(d);d.parentNode.removeChild(d)}if(e&&e.nodeName==="/MATH"){e.parentNode.removeChild(e)}a.text=b+"</math>";if(this.config.preview!=="none"){this.createPreview(e,a)}},NodeHTML:function(e){var d,c,a;if(e.nodeName==="#text"){d=this.quoteHTML(e.nodeValue)}else{if(e.nodeName==="#comment"){d="<!--"+e.nodeValue+"-->"}else{d="<"+e.nodeName.toLowerCase();var b=e.attributes;for(c=0,a=b.length;c<a;c++){if(b[c].specified){d+=" "+b[c].nodeName.toLowerCase().replace(/xmlns:xmlns/,"xmlns")+"=";d+='"'+this.quoteHTML(b[c].nodeValue)+'"'}}d+=">"}}return d},OuterHTML:function(d){if(d.nodeName.charAt(0)==="#"){return this.NodeHTML(d)}if(!this.AttributeBug){return d.outerHTML}var c=this.NodeHTML(d);for(var b=0,a=d.childNodes.length;b<a;b++){c+=this.OuterHTML(d.childNodes[b])}c+="</"+d.nodeName.toLowerCase()+">";return c},quoteHTML:function(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},createPreview:function(b,a){var c;if(this.config.preview==="alttext"){var d=b.getAttribute("alttext");if(d!=null){c=[this.filterText(d)]}}else{if(this.config.preview instanceof Array){c=this.config.preview}}if(c){c=MathJax.HTML.Element("span",{className:MathJax.Hub.config.preRemoveClass},c);a.parentNode.insertBefore(c,a)}},filterText:function(a){return a},InitBrowser:function(){var b=MathJax.HTML.Element("span",{id:"<",className:"mathjax",innerHTML:"<math><mi>x</mi><mspace /></math>"});var a=b.outerHTML||"";this.AttributeBug=a!==""&&!(a.match(/id="<"/)&&a.match(/class="mathjax"/)&&a.match(/<\/math>/));this.MathTagBug=b.childNodes.length>1;this.CleanupHTML=MathJax.Hub.Browser.isMSIE}};MathJax.Hub.Register.PreProcessor(["PreProcess",MathJax.Extension.mml2jax]);MathJax.Ajax.loadComplete("[MathJax]/extensions/mml2jax.js");
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
*/
|
||||
|
||||
MathJax.Extension.mml2jax = {
|
||||
version: "1.1.1",
|
||||
version: "1.1.2",
|
||||
config: {
|
||||
preview: "alttext" // Use the <math> element's alttext as the
|
||||
// preview. Set to "none" for no preview,
|
||||
|
@ -68,9 +68,9 @@ MathJax.Extension.mml2jax = {
|
|||
ProcessMathArray: function (math) {
|
||||
var i;
|
||||
if (math.length) {
|
||||
if (this.msieMathTagBug) {
|
||||
if (this.MathTagBug) {
|
||||
for (i = math.length-1; i >= 0; i--) {
|
||||
if (math[i].nodeName === "MATH") {this.msieProcessMath(math[i])}
|
||||
if (math[i].nodeName === "MATH") {this.ProcessMathFlattened(math[i])}
|
||||
else {this.ProcessMath(math[i])}
|
||||
}
|
||||
} else {
|
||||
|
@ -84,11 +84,13 @@ MathJax.Extension.mml2jax = {
|
|||
var script = document.createElement("script");
|
||||
script.type = "math/mml";
|
||||
parent.insertBefore(script,math);
|
||||
if (this.msieScriptBug) {
|
||||
var html = this.msieOuterHTML(math);
|
||||
html = html.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,"");
|
||||
MathJax.HTML.setScript(script,html.replace(/ /g," "));
|
||||
parent.removeChild(math);
|
||||
if (this.AttributeBug) {
|
||||
var html = this.OuterHTML(math);
|
||||
if (this.CleanupHTML) {
|
||||
html = html.replace(/<\?import .*?>/i,"").replace(/<\?xml:namespace .*?\/>/i,"");
|
||||
html = html.replace(/ /g," ");
|
||||
}
|
||||
MathJax.HTML.setScript(script,html); parent.removeChild(math);
|
||||
} else {
|
||||
var span = MathJax.HTML.Element("span"); span.appendChild(math);
|
||||
MathJax.HTML.setScript(script,span.innerHTML);
|
||||
|
@ -96,7 +98,7 @@ MathJax.Extension.mml2jax = {
|
|||
if (this.config.preview !== "none") {this.createPreview(math,script)}
|
||||
},
|
||||
|
||||
msieProcessMath: function (math) {
|
||||
ProcessMathFlattened: function (math) {
|
||||
var parent = math.parentNode;
|
||||
var script = document.createElement("script");
|
||||
script.type = "math/mml";
|
||||
|
@ -104,48 +106,49 @@ MathJax.Extension.mml2jax = {
|
|||
var mml = "", node;
|
||||
while (math && math.nodeName !== "/MATH") {
|
||||
node = math; math = math.nextSibling;
|
||||
mml += this.msieNodeHTML(node);
|
||||
mml += this.NodeHTML(node);
|
||||
node.parentNode.removeChild(node);
|
||||
}
|
||||
if (math && math.nodeName === "/MATH") {math.parentNode.removeChild(math)}
|
||||
script.text = mml + "</math>";
|
||||
if (this.config.preview !== "none") {this.createPreview(math,script)}
|
||||
},
|
||||
msieNodeHTML: function (node) {
|
||||
|
||||
NodeHTML: function (node) {
|
||||
var html, i, m;
|
||||
if (node.nodeName === "#text") {
|
||||
html = node.nodeValue.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
||||
html = this.quoteHTML(node.nodeValue);
|
||||
} else if (node.nodeName === "#comment") {
|
||||
html = "<!--" + node.nodeValue + "-->"
|
||||
}
|
||||
else if (this.msieAttributeBug) {
|
||||
} else {
|
||||
// In IE, outerHTML doesn't properly quote attributes, so quote them by hand
|
||||
// In Opera, HTML special characters aren't quoted in attributes, so quote them
|
||||
html = "<"+node.nodeName.toLowerCase();
|
||||
for (i = 0, m = node.attributes.length; i < m; i++) {
|
||||
if (node.attributes[i].specified) {
|
||||
html += " "+node.attributes[i].nodeName.toLowerCase()+"=";
|
||||
html += '"'+node.attributes[i].nodeValue.replace(/\"/g,'\\"')+'"';
|
||||
var attributes = node.attributes;
|
||||
for (i = 0, m = attributes.length; i < m; i++) {
|
||||
if (attributes[i].specified) {
|
||||
// Opera 11.5 beta turns xmlns into xmlns:xmlns, so put it back
|
||||
// *** FIXME: Similar problems may occur for other attributes?
|
||||
html += " "+attributes[i].nodeName.toLowerCase().replace(/xmlns:xmlns/,"xmlns")+"=";
|
||||
html += '"'+this.quoteHTML(attributes[i].nodeValue)+'"';
|
||||
}
|
||||
}
|
||||
html += ">";
|
||||
} else {
|
||||
html = this.toLowerCase(node.outerHTML)
|
||||
var parts = html.split(/\"/);
|
||||
for (i = 0, m = parts.length; i < m; i += 2) {parts[i] = parts[i].toLowerCase()}
|
||||
html = parts.join('"');
|
||||
}
|
||||
return html;
|
||||
},
|
||||
msieOuterHTML: function (node) {
|
||||
// IE's outerHTML doesn't properly quote
|
||||
if (node.nodeName.charAt(0) === "#") {return this.msieNodeHTML(node)}
|
||||
if (!this.msieAttributeBug) {return node.outerHTML}
|
||||
var html = this.msieNodeHTML(node);
|
||||
OuterHTML: function (node) {
|
||||
if (node.nodeName.charAt(0) === "#") {return this.NodeHTML(node)}
|
||||
if (!this.AttributeBug) {return node.outerHTML}
|
||||
var html = this.NodeHTML(node);
|
||||
for (var i = 0, m = node.childNodes.length; i < m; i++)
|
||||
{html += this.msieOuterHTML(node.childNodes[i])}
|
||||
html += "</"+node.nodeName.toLowerCase()+">"
|
||||
{html += this.OuterHTML(node.childNodes[i]);}
|
||||
html += "</"+node.nodeName.toLowerCase()+">";
|
||||
return html;
|
||||
},
|
||||
quoteHTML: function (string) {
|
||||
return string.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""");
|
||||
},
|
||||
|
||||
createPreview: function (math,script) {
|
||||
var preview;
|
||||
|
@ -162,16 +165,15 @@ MathJax.Extension.mml2jax = {
|
|||
filterText: function (text) {return text},
|
||||
|
||||
InitBrowser: function () {
|
||||
MathJax.Hub.Browser.Select({
|
||||
MSIE: function (browser) {
|
||||
var test = MathJax.HTML.Element("span",{className:"mathjax"});
|
||||
MathJax.Hub.Insert(MathJax.Extension.mml2jax,{
|
||||
msieScriptBug: true,
|
||||
msieMathTagBug: (MathJax.HTML.Element("span", {innerHTML:"<math><mi>x</mi></math>"}).childNodes.length !== 1), // IE < 9 corrupts MathML
|
||||
msieAttributeBug: (test.outerHTML.substr(12) !== '"') // attributes aren't quoted?
|
||||
})
|
||||
}
|
||||
});
|
||||
var test = MathJax.HTML.Element("span",{id:"<", className: "mathjax", innerHTML: "<math><mi>x</mi><mspace /></math>"});
|
||||
var html = test.outerHTML || "";
|
||||
this.AttributeBug = html !== "" && !(
|
||||
html.match(/id="<"/) && // "<" should convert to "<"
|
||||
html.match(/class="mathjax"/) && // IE leaves out quotes
|
||||
html.match(/<\/math>/) // Opera 9 drops tags after self-closing tags
|
||||
);
|
||||
this.MathTagBug = test.childNodes.length > 1; // IE < 9 flattens unknown tags
|
||||
this.CleanupHTML = MathJax.Hub.Browser.isMSIE; // remove namespace and other added tags
|
||||
}
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue
Block a user