diff --git a/unpacked/extensions/Safe.js b/unpacked/extensions/Safe.js index 0d1fe1475..2e2482dfa 100644 --- a/unpacked/extensions/Safe.js +++ b/unpacked/extensions/Safe.js @@ -97,6 +97,17 @@ config: CONFIG, div1: document.createElement("div"), // for CSS processing div2: document.createElement("div"), + + // + // Methods called for MathML attribute processing + // + filter: { + "class": "filterClass", + id: "filterID", + fontsize: "filterFontSize", + mathsize: "filterFontSize", + style: "filterStyles" + }, // // Filter HREF URL's @@ -242,9 +253,10 @@ }); HUB.Register.StartupHook("TeX Jax Ready",function () { - var TEX = MathJax.InputJax.TeX; + var TEX = MathJax.InputJax.TeX, + PARSE = TEX.Parse, METHOD = SAFE.filter; - TEX.Parse.Augment({ + PARSE.Augment({ // // Implements \require{name} with filtering @@ -258,11 +270,9 @@ // // Controls \mmlToken attributes // - MmlTokenAllow: { - fontsize: (ALLOW.fontsize === "all"), - id: (ALLOW.cssIDs === "all"), - "class": (ALLOW.classes === "all"), - style: (ALLOW.styles === "all") + MmlFilterAttribute: function (name,value) { + if (METHOD[name]) {value = SAFE[METHOD[name]](value)} + return value; }, // @@ -292,16 +302,9 @@ }); HUB.Register.StartupHook("MathML Jax Ready",function () { - var PARSE = MathJax.InputJax.MathML.Parse; + var PARSE = MathJax.InputJax.MathML.Parse, + METHOD = SAFE.filter; - var METHOD = { - href: "filterURL", - "class": "filterClass", - id: "filterID", - fontsize: "filterFontSize", - style: "filterStyles" - }; - // // Filter MathML attributes // diff --git a/unpacked/jax/input/TeX/jax.js b/unpacked/jax/input/TeX/jax.js index 711f68995..f8fe94fcb 100644 --- a/unpacked/jax/input/TeX/jax.js +++ b/unpacked/jax/input/TeX/jax.js @@ -1441,15 +1441,18 @@ "%1 is not a recognized attribute for %2", match[1],type]); } - var value = match[2].replace(/^(['"])(.*)\1$/,"$2"); - if (value.toLowerCase() === "true") {value = true} - else if (value.toLowerCase() === "false") {value = false} - def[match[1]] = value; - def.attrNames.push(match[1]); + var value = this.MmlFilterAttribute(match[1],match[2].replace(/^(['"])(.*)\1$/,"$2")); + if (value) { + if (value.toLowerCase() === "true") {value = true} + else if (value.toLowerCase() === "false") {value = false} + def[match[1]] = value; + def.attrNames.push(match[1]); + } attr = attr.substr(match[0].length); } this.Push(this.mmlToken(MML[type](data).With(def))); }, + MmlFilterAttribute: function (name,value) {return value}, MmlTokenAllow: { fontfamily:1, fontsize:1, fontweight:1, fontstyle:1, color:1, background:1,