Merge branch 'v2.2-beta' of https://github.com/dpvc/MathJax into v2.2-beta
This commit is contained in:
commit
a4c5c9a8e6
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
|
||||
*/
|
||||
|
||||
if(!MathJax.Hub.config.extensions){MathJax.Hub.config.extensions=[]}MathJax.Hub.config.extensions.push("Safe.js");MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js");
|
||||
MathJax.Hub.Register.StartupHook("End Config",function(){if(!MathJax.Hub.config.extensions){MathJax.Hub.config.extensions=[]}MathJax.Hub.config.extensions.push("Safe.js")});MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js");
|
||||
|
||||
|
|
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
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
|
||||
*/
|
||||
|
||||
(function(d,c){var f="2.2";var a=MathJax.Hub.CombineConfig("Safe",{allow:{URLs:"safe",classes:"safe",cssIDs:"safe",styles:"safe",fontsize:"all",require:"safe"},sizeMin:0.7,sizeMax:1.44,safeProtocols:{http:true,https:true,file:true,javascript:false},safeStyles:{color:true,backgroundColor:true,border:true,cursor:true,margin:true,padding:true,textShadow:true,fontFamily:true,fontSize:true,fontStyle:true,fontWeight:true,opacity:true,outline:true},safeRequire:{action:true,amscd:true,amsmath:true,amssymbols:true,autobold:false,"autoload-all":false,bbox:true,begingroup:true,boldsymbol:true,cancel:true,color:true,enclose:true,extpfeil:true,HTML:true,mathchoice:true,mhchem:true,newcommand:true,noErrors:false,noUndefined:false,unicode:true,verb:true}});var e=a.allow;if(e.fontsize!=="all"){a.safeStyles.fontSize=false}var b=MathJax.Extension.Safe={version:f,config:a,div1:document.createElement("div"),div2:document.createElement("div"),filterURL:function(g){var h=(g.match(/^\s*([a-z]+):/i)||[null,""])[1].toLowerCase();if(e.URLs==="none"||(e.URLs!=="all"&&!a.safeProtocols[h])){g=null}return g},filterClass:function(g){if(e.classes==="none"||(e.classes!=="all"&&!g.match(/^MJX-/))){g=null}return g},filterID:function(g){if(e.cssIDs==="none"||(e.cssIDs!=="all"&&!g.match(/^MJX-/))){g=null}return g},filterStyles:function(j){if(e.styles==="all"){return j}if(e.styles==="none"){return null}try{var i=this.div1.style,h=this.div2.style;i.cssText=j;h.cssText="";for(var g in a.safeStyles){if(a.safeStyles.hasOwnProperty(g)){var k=this.filterStyle(g,i[g]);if(k!=null){h[g]=k}}}j=h.cssText}catch(l){j=null}return j},filterStyle:function(g,h){if(typeof h!=="string"){return null}if(h.match(/^\s*expression/)){return null}if(h.match(/javascript:/)){return null}return(a.safeStyles[g]?h:null)},filterSize:function(g){if(e.fontsize==="none"){return null}if(e.fontsize!=="all"){g=Math.min(Math.max(g,a.sizeMin),a.sizeMax)}return g},filterFontSize:function(g){return(e.fontsize==="all"?g:null)},filterRequire:function(g){if(e.require==="none"||(e.require!=="all"&&!a.safeRequire[g.toLowerCase()])){g=null}return g}};d.Register.StartupHook("TeX HTML Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({HREF_attribute:function(j){var i=b.filterURL(this.GetArgument(j)),h=this.GetArgumentMML(j);if(i){h.With({href:i})}this.Push(h)},CLASS_attribute:function(i){var j=b.filterClass(this.GetArgument(i)),h=this.GetArgumentMML(i);if(j){if(h["class"]!=null){j=h["class"]+" "+j}h.With({"class":j})}this.Push(h)},STYLE_attribute:function(i){var j=b.filterStyles(this.GetArgument(i)),h=this.GetArgumentMML(i);if(j){if(h.style!=null){if(j.charAt(j.length-1)!==";"){j+=";"}j=h.style+" "+j}h.With({style:j})}this.Push(h)},ID_attribute:function(j){var i=b.filterID(this.GetArgument(j)),h=this.GetArgumentMML(j);if(i){h.With({id:i})}this.Push(h)}})});d.Register.StartupHook("TeX Jax Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({Require:function(h){var i=this.GetArgument(h).replace(/.*\//,"").replace(/[^a-z0-9_.-]/ig,"");i=b.filterRequire(i);if(i){this.Extension(null,i)}},MmlTokenAllow:{fontsize:(e.fontsize==="all"),id:(e.cssIDs==="all"),"class":(e.classes==="all"),style:(e.styles==="all")},SetSize:function(h,i){i=b.filterSize(i);if(i){this.stack.env.size=i;this.Push(g.Stack.Item.style().With({styles:{mathsize:i+"em"}}))}}})});d.Register.StartupHook("TeX bbox Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({BBoxStyle:function(h){return b.filterStyles(h)}})});d.Register.StartupHook("MathML Jax Ready",function(){var h=MathJax.InputJax.MathML.Parse;var g={href:"filterURL","class":"filterClass",id:"filterID",fontsize:"filterFontSize",style:"filterStyles"};h.Augment({filterAttribute:function(i,j){if(g[i]){j=b[g[i]](j)}return j}})});d.Startup.signal.Post("Safe Extension Ready");c.loadComplete("[MathJax]/extensions/Safe.js")})(MathJax.Hub,MathJax.Ajax);
|
||||
(function(d,c){var f="2.2";var a=MathJax.Hub.CombineConfig("Safe",{allow:{URLs:"safe",classes:"safe",cssIDs:"safe",styles:"safe",fontsize:"all",require:"safe"},sizeMin:0.7,sizeMax:1.44,safeProtocols:{http:true,https:true,file:true,javascript:false},safeStyles:{color:true,backgroundColor:true,border:true,cursor:true,margin:true,padding:true,textShadow:true,fontFamily:true,fontSize:true,fontStyle:true,fontWeight:true,opacity:true,outline:true},safeRequire:{action:true,amscd:true,amsmath:true,amssymbols:true,autobold:false,"autoload-all":false,bbox:true,begingroup:true,boldsymbol:true,cancel:true,color:true,enclose:true,extpfeil:true,HTML:true,mathchoice:true,mhchem:true,newcommand:true,noErrors:false,noUndefined:false,unicode:true,verb:true}});var e=a.allow;if(e.fontsize!=="all"){a.safeStyles.fontSize=false}var b=MathJax.Extension.Safe={version:f,config:a,div1:document.createElement("div"),div2:document.createElement("div"),filter:{"class":"filterClass",style:"filterStyles",id:"filterID",fontsize:"filterFontSize",mathsize:"filterFontSize",scriptminsize:"filterFontSize",scriptsizemultiplier:"filterSizeMultiplier",scriptlevel:"filterScriptLevel"},filterURL:function(g){var h=(g.match(/^\s*([a-z]+):/i)||[null,""])[1].toLowerCase();if(e.URLs==="none"||(e.URLs!=="all"&&!a.safeProtocols[h])){g=null}return g},filterClass:function(g){if(e.classes==="none"||(e.classes!=="all"&&!g.match(/^MJX-[-a-zA-Z0-9_.]+$/))){g=null}return g},filterID:function(g){if(e.cssIDs==="none"||(e.cssIDs!=="all"&&!g.match(/^MJX-[-a-zA-Z0-9_.]+$/))){g=null}return g},filterStyles:function(j){if(e.styles==="all"){return j}if(e.styles==="none"){return null}try{var i=this.div1.style,h=this.div2.style;i.cssText=j;h.cssText="";for(var g in a.safeStyles){if(a.safeStyles.hasOwnProperty(g)){var k=this.filterStyle(g,i[g]);if(k!=null){h[g]=k}}}j=h.cssText}catch(l){j=null}return j},filterStyle:function(g,h){if(typeof h!=="string"){return null}if(h.match(/^\s*expression/)){return null}if(h.match(/javascript:/)){return null}return(a.safeStyles[g]?h:null)},filterSize:function(g){if(e.fontsize==="none"){return null}if(e.fontsize!=="all"){g=Math.min(Math.max(g,a.sizeMin),a.sizeMax)}return g},filterFontSize:function(g){return(e.fontsize==="all"?g:null)},filterSizeMultiplier:function(g){if(e.fontsize==="none"){g=null}else{if(e.fontsize!=="all"){g=Math.min(1,Math.max(0.6,g)).toString()}}return g},filterScriptLevel:function(g){if(e.fontsize==="none"){g=null}else{if(e.fontsize!=="all"){g=Math.max(0,g).toString()}}return g},filterRequire:function(g){if(e.require==="none"||(e.require!=="all"&&!a.safeRequire[g.toLowerCase()])){g=null}return g}};d.Register.StartupHook("TeX HTML Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({HREF_attribute:function(j){var i=b.filterURL(this.GetArgument(j)),h=this.GetArgumentMML(j);if(i){h.With({href:i})}this.Push(h)},CLASS_attribute:function(i){var j=b.filterClass(this.GetArgument(i)),h=this.GetArgumentMML(i);if(j){if(h["class"]!=null){j=h["class"]+" "+j}h.With({"class":j})}this.Push(h)},STYLE_attribute:function(i){var j=b.filterStyles(this.GetArgument(i)),h=this.GetArgumentMML(i);if(j){if(h.style!=null){if(j.charAt(j.length-1)!==";"){j+=";"}j=h.style+" "+j}h.With({style:j})}this.Push(h)},ID_attribute:function(j){var i=b.filterID(this.GetArgument(j)),h=this.GetArgumentMML(j);if(i){h.With({id:i})}this.Push(h)}})});d.Register.StartupHook("TeX Jax Ready",function(){var i=MathJax.InputJax.TeX,h=i.Parse,g=b.filter;h.Augment({Require:function(j){var k=this.GetArgument(j).replace(/.*\//,"").replace(/[^a-z0-9_.-]/ig,"");k=b.filterRequire(k);if(k){this.Extension(null,k)}},MmlFilterAttribute:function(j,k){if(g[j]){k=b[g[j]](k)}return k},SetSize:function(j,k){k=b.filterSize(k);if(k){this.stack.env.size=k;this.Push(i.Stack.Item.style().With({styles:{mathsize:k+"em"}}))}}})});d.Register.StartupHook("TeX bbox Ready",function(){var g=MathJax.InputJax.TeX;g.Parse.Augment({BBoxStyle:function(h){return b.filterStyles(h)}})});d.Register.StartupHook("MathML Jax Ready",function(){var h=MathJax.InputJax.MathML.Parse,g=b.filter;h.Augment({filterAttribute:function(i,j){if(g[i]){j=b[g[i]](j)}return j}})});d.Startup.signal.Post("Safe Extension Ready");c.loadComplete("[MathJax]/extensions/Safe.js")})(MathJax.Hub,MathJax.Ajax);
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -29,7 +29,9 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
if (!MathJax.Hub.config.extensions) {MathJax.Hub.config.extensions = []}
|
||||
MathJax.Hub.config.extensions.push("Safe.js");
|
||||
MathJax.Hub.Register.StartupHook("End Config", function () {
|
||||
if (!MathJax.Hub.config.extensions) {MathJax.Hub.config.extensions = []}
|
||||
MathJax.Hub.config.extensions.push("Safe.js");
|
||||
});
|
||||
|
||||
MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js");
|
||||
MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js");
|
||||
|
|
|
@ -97,6 +97,20 @@
|
|||
config: CONFIG,
|
||||
div1: document.createElement("div"), // for CSS processing
|
||||
div2: document.createElement("div"),
|
||||
|
||||
//
|
||||
// Methods called for MathML attribute processing
|
||||
//
|
||||
filter: {
|
||||
"class": "filterClass",
|
||||
style: "filterStyles",
|
||||
id: "filterID",
|
||||
fontsize: "filterFontSize",
|
||||
mathsize: "filterFontSize",
|
||||
scriptminsize: "filterFontSize",
|
||||
scriptsizemultiplier: "filterSizeMultiplier",
|
||||
scriptlevel: "filterScriptLevel"
|
||||
},
|
||||
|
||||
//
|
||||
// Filter HREF URL's
|
||||
|
@ -113,12 +127,12 @@
|
|||
//
|
||||
filterClass: function (CLASS) {
|
||||
if (ALLOW.classes === "none" ||
|
||||
(ALLOW.classes !== "all" && !CLASS.match(/^MJX-/))) {CLASS = null}
|
||||
(ALLOW.classes !== "all" && !CLASS.match(/^MJX-[-a-zA-Z0-9_.]+$/))) {CLASS = null}
|
||||
return CLASS;
|
||||
},
|
||||
filterID: function (id) {
|
||||
if (ALLOW.cssIDs === "none" ||
|
||||
(ALLOW.cssIDs !== "all" && !id.match(/^MJX-/))) {id = null}
|
||||
(ALLOW.cssIDs !== "all" && !id.match(/^MJX-[-a-zA-Z0-9_.]+$/))) {id = null}
|
||||
return id;
|
||||
},
|
||||
|
||||
|
@ -171,6 +185,23 @@
|
|||
return (ALLOW.fontsize === "all" ? size: null);
|
||||
},
|
||||
|
||||
//
|
||||
// Filter scriptsizemultiplier
|
||||
//
|
||||
filterSizeMultiplier: function (size) {
|
||||
if (ALLOW.fontsize === "none") {size = null}
|
||||
else if (ALLOW.fontsize !== "all") {size = Math.min(1,Math.max(.6,size)).toString()}
|
||||
return size;
|
||||
},
|
||||
//
|
||||
// Filter scriptLevel
|
||||
//
|
||||
filterScriptLevel: function (level) {
|
||||
if (ALLOW.fontsize === "none") {level = null}
|
||||
else if (ALLOW.fontsize !== "all") {level = Math.max(0,level).toString()}
|
||||
return level;
|
||||
},
|
||||
|
||||
//
|
||||
// Filter TeX extension names
|
||||
//
|
||||
|
@ -242,9 +273,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 +290,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 +322,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
|
||||
//
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue
Block a user