|
97 | 97 | config: CONFIG,
|
98 | 98 | div1: document.createElement("div"), // for CSS processing
|
99 | 99 | div2: document.createElement("div"),
|
| 100 | + |
| 101 | + // |
| 102 | + // Methods called for MathML attribute processing |
| 103 | + // |
| 104 | + filter: { |
| 105 | + "class": "filterClass", |
| 106 | + style: "filterStyles", |
| 107 | + id: "filterID", |
| 108 | + fontsize: "filterFontSize", |
| 109 | + mathsize: "filterFontSize", |
| 110 | + scriptminsize: "filterFontSize", |
| 111 | + scriptsizemultiplier: "filterSizeMultiplier", |
| 112 | + scriptlevel: "filterScriptLevel" |
| 113 | + }, |
100 | 114 |
|
101 | 115 | //
|
102 | 116 | // Filter HREF URL's
|
|
113 | 127 | //
|
114 | 128 | filterClass: function (CLASS) {
|
115 | 129 | if (ALLOW.classes === "none" ||
|
116 |
| - (ALLOW.classes !== "all" && !CLASS.match(/^MJX-/))) {CLASS = null} |
| 130 | + (ALLOW.classes !== "all" && !CLASS.match(/^MJX-[-a-zA-Z0-9_.]+$/))) {CLASS = null} |
117 | 131 | return CLASS;
|
118 | 132 | },
|
119 | 133 | filterID: function (id) {
|
120 | 134 | if (ALLOW.cssIDs === "none" ||
|
121 |
| - (ALLOW.cssIDs !== "all" && !id.match(/^MJX-/))) {id = null} |
| 135 | + (ALLOW.cssIDs !== "all" && !id.match(/^MJX-[-a-zA-Z0-9_.]+$/))) {id = null} |
122 | 136 | return id;
|
123 | 137 | },
|
124 | 138 |
|
|
171 | 185 | return (ALLOW.fontsize === "all" ? size: null);
|
172 | 186 | },
|
173 | 187 |
|
| 188 | + // |
| 189 | + // Filter scriptsizemultiplier |
| 190 | + // |
| 191 | + filterSizeMultiplier: function (size) { |
| 192 | + if (ALLOW.fontsize === "none") {size = null} |
| 193 | + else if (ALLOW.fontsize !== "all") {size = Math.min(1,Math.max(.6,size)).toString()} |
| 194 | + return size; |
| 195 | + }, |
| 196 | + // |
| 197 | + // Filter scriptLevel |
| 198 | + // |
| 199 | + filterScriptLevel: function (level) { |
| 200 | + if (ALLOW.fontsize === "none") {level = null} |
| 201 | + else if (ALLOW.fontsize !== "all") {level = Math.max(0,level).toString()} |
| 202 | + return level; |
| 203 | + }, |
| 204 | + |
174 | 205 | //
|
175 | 206 | // Filter TeX extension names
|
176 | 207 | //
|
|
242 | 273 | });
|
243 | 274 |
|
244 | 275 | HUB.Register.StartupHook("TeX Jax Ready",function () {
|
245 |
| - var TEX = MathJax.InputJax.TeX; |
| 276 | + var TEX = MathJax.InputJax.TeX, |
| 277 | + PARSE = TEX.Parse, METHOD = SAFE.filter; |
246 | 278 |
|
247 |
| - TEX.Parse.Augment({ |
| 279 | + PARSE.Augment({ |
248 | 280 |
|
249 | 281 | //
|
250 | 282 | // Implements \require{name} with filtering
|
|
258 | 290 | //
|
259 | 291 | // Controls \mmlToken attributes
|
260 | 292 | //
|
261 |
| - MmlTokenAllow: { |
262 |
| - fontsize: (ALLOW.fontsize === "all"), |
263 |
| - id: (ALLOW.cssIDs === "all"), |
264 |
| - "class": (ALLOW.classes === "all"), |
265 |
| - style: (ALLOW.styles === "all") |
| 293 | + MmlFilterAttribute: function (name,value) { |
| 294 | + if (METHOD[name]) {value = SAFE[METHOD[name]](value)} |
| 295 | + return value; |
266 | 296 | },
|
267 | 297 |
|
268 | 298 | //
|
|
292 | 322 | });
|
293 | 323 |
|
294 | 324 | HUB.Register.StartupHook("MathML Jax Ready",function () {
|
295 |
| - var PARSE = MathJax.InputJax.MathML.Parse; |
| 325 | + var PARSE = MathJax.InputJax.MathML.Parse, |
| 326 | + METHOD = SAFE.filter; |
296 | 327 |
|
297 |
| - var METHOD = { |
298 |
| - href: "filterURL", |
299 |
| - "class": "filterClass", |
300 |
| - id: "filterID", |
301 |
| - fontsize: "filterFontSize", |
302 |
| - style: "filterStyles" |
303 |
| - }; |
304 |
| - |
305 | 328 | //
|
306 | 329 | // Filter MathML attributes
|
307 | 330 | //
|
|
0 commit comments