Skip to content

Commit

Permalink
plainsource outpt: first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
pkra committed Nov 18, 2015
1 parent abab9db commit b28461f
Show file tree
Hide file tree
Showing 3 changed files with 298 additions and 4 deletions.
9 changes: 5 additions & 4 deletions unpacked/extensions/MathMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
[["MathMenu",id]].concat([].slice.call(arguments,1))
);
};

var isPC = HUB.Browser.isPC, isMSIE = HUB.Browser.isMSIE, isIE9 = ((document.documentMode||0) > 8);
var ROUND = (isPC ? null : "5px");

Expand Down Expand Up @@ -591,7 +591,7 @@
}
return -1;
}),

saveCookie: function () {HTML.Cookie.Set("menu",this.cookie)},
getCookie: function () {this.cookie = HTML.Cookie.Get("menu")}

Expand Down Expand Up @@ -1015,7 +1015,7 @@
*/
MENU.ITEM.RULE = MENU.ITEM.Subclass({
role: "separator",

Attributes: function(def) {
def = HUB.Insert({"aria-orientation": "vertical"}, def);
def = this.SUPER(arguments).Attributes.call(this, def);
Expand Down Expand Up @@ -1514,6 +1514,7 @@
ITEM.RADIO("Fast HTML", "renderer", {action: MENU.Renderer, value:"PreviewHTML"}),
ITEM.RADIO("MathML", "renderer", {action: MENU.Renderer, value:"NativeMML"}),
ITEM.RADIO("SVG", "renderer", {action: MENU.Renderer}),
ITEM.RADIO("PlainSource","renderer", {action: MENU.Renderer, value:"PlainSource"}),
ITEM.RULE(),
ITEM.CHECKBOX("Fast Preview", "FastPreview"),
ITEM.CHECKBOX("Assistive MathML", "assistiveMML", {hidden:!CONFIG.showAssistiveMML})
Expand Down Expand Up @@ -1607,7 +1608,7 @@
MENU.cookie.showAssistiveMML = CONFIG.showAssistiveMML = show; MENU.saveCookie();
MENU.menu.Find("Math Settings","Math Renderer","Assistive MathML").hidden = !show;
};

MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
if (!MathJax.OutputJax["HTML-CSS"].config.imageFont)
{MENU.menu.Find("Math Settings","Font Preference","TeX (image)").disabled = true}
Expand Down
49 changes: 49 additions & 0 deletions unpacked/jax/output/PlainSource/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*************************************************************
*
* MathJax/jax/output/PlainSource/config.js
*
* Initializes the PlainSource OutputJax (the main definition is in
* MathJax/jax/input/PlainSource/jax.js, which is loaded when needed).
*
* ---------------------------------------------------------------------
*
* Copyright (c) 2015 The MathJax Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

MathJax.OutputJax.PlainSource = MathJax.OutputJax({
id: "PlainSource",
version: "2.6.0-beta",
directory: MathJax.OutputJax.directory + "/PlainSource",
extensionDir: MathJax.OutputJax.extensionDir + "/PlainSource",

config: {
matchFontHeight: false, // try to match math font height to surrounding font?
scale: 100, // scaling factor for all math
minScaleAdjust: 50, // minimum scaling to adjust to surrounding text
// (since the code for that is a bit delicate)

styles: {
"div.MathJax_PlainSource": {
"text-align": "center",
margin: ".75em 0px"
}
}
}
});

if (!MathJax.Hub.config.delayJaxRegistration)
MathJax.OutputJax.PlainSource.Register("jax/mml");

MathJax.OutputJax.PlainSource.loadComplete("config.js");
244 changes: 244 additions & 0 deletions unpacked/jax/output/PlainSource/jax.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
/*************************************************************
*
* MathJax/jax/output/PlainSource/jax.js
*
* Implements the PlainSource OutputJax that displays whatever
* source there was, for assistive technology users who prefer this.
*
* ---------------------------------------------------------------------
*
* Copyright (c) 2015 The MathJax Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


(function(AJAX, HUB, HTML, PlainSource) {
var MML;

var EVENT, TOUCH, HOVER; // filled in later


PlainSource.Augment({
settings: HUB.config.menuSettings,

hideProcessedMath: false, // use display:none until all math is processed

maxStretchyParts: 1000, // limit the number of parts allowed for
// stretchy operators. See issue 366.

Config: function() {
if (!this.require) {
this.require = []
}
this.SUPER(arguments).Config.call(this);
var settings = this.settings;
if (settings.scale) {
this.config.scale = settings.scale
}
this.require.push(MathJax.OutputJax.extensionDir + "/MathEvents.js");
},

Startup: function() {
//
// Set up event handling
//
EVENT = MathJax.Extension.MathEvents.Event;
TOUCH = MathJax.Extension.MathEvents.Touch;
HOVER = MathJax.Extension.MathEvents.Hover;
this.ContextMenu = EVENT.ContextMenu;
this.Mousedown = EVENT.AltContextMenu;
this.Mouseover = HOVER.Mouseover;
this.Mouseout = HOVER.Mouseout;
this.Mousemove = HOVER.Mousemove;

},

preTranslate: function(state) {
var scripts = state.jax[this.id],
i, m = scripts.length,
script, prev, span, div, jax;
//
// Loop through the scripts
//
for (i = 0; i < m; i++) {
script = scripts[i];
if (!script.parentNode) continue;
//
// Remove any existing output
//
prev = script.previousSibling;
if (prev && String(prev.className).match(/^MathJax_PlainSource(_Display)?( MathJax_Processing)?$/)) {
prev.parentNode.removeChild(prev)
}
//
// Add the span, and a div if in display mode,
// then set the role and mark it as being processed
//
jax = script.MathJax.elementJax;
if (!jax) continue;
jax.PlainSource = {
display: (jax.root.Get("display") === "block")
}
span = div = HTML.Element("span", {
className: "MathJax_PlainSource",
id: jax.inputID + "-Frame",
isMathJax: true,
jaxID: this.id,
oncontextmenu: EVENT.Menu,
onmousedown: EVENT.Mousedown,
onmouseover: EVENT.Mouseover,
onmouseout: EVENT.Mouseout,
onmousemove: EVENT.Mousemove,
onclick: EVENT.Click,
ondblclick: EVENT.DblClick,
// Added for keyboard accessible menu.
onkeydown: EVENT.Keydown,
tabIndex: "0"
});
if (HUB.Browser.noContextMenu) {
span.ontouchstart = TOUCH.start;
span.ontouchend = TOUCH.end;
}
if (jax.PlainSource.display) {
div = HTML.Element("div", {
className: "MathJax_PlainSource_Display"
});
div.appendChild(span);
}
//
div.className += " MathJax_Processing";
script.parentNode.insertBefore(div, script);
}
},

Translate: function(script, state) {
if (!script.parentNode) return;

//
// Get the data about the math
//
var jax = script.MathJax.elementJax,
math = jax.root,
span = document.getElementById(jax.inputID + "-Frame"),
div = (jax.PlainSource.display ? span.parentNode : span);
//
// Typeset the math
//
this.initPlainSource(math, span);
// math.setTeXclass();
// try {math.toPreviewHTML(span)} catch (err) {
// if (err.restart) {while (span.firstChild) {span.removeChild(span.firstChild)}}
// throw err;
// }

//NEWSTUFF
if (jax.inputJax === "MathML") {
console.log("Yay! MathML!");
if (jax.root.data[0].data.length > 0) {
if (jax.root.data[0].data[0].type === "semantics") {
if (jax.root.data[0].data[0].data[1].attr.encoding === "application/x-tex"){
span.innerHTML = jax.root.data[0].data[0].data[1].data[0].data[0];
console.log("yay Annotation TeX");
}
}

} else {
span.innerHTML = jax.originalText;
}
}
// span.innerHTML = jax.originalText;



//
// Put it in place, and remove the processing marker
//
div.className = div.className.split(/ /)[0];
//
// Check if we are hiding the math until more is processed
//
if (this.hideProcessedMath) {
//
// Hide the math and don't let its preview be removed
//
div.className += " MathJax_Processed";
if (script.MathJax.preview) {
jax.PlainSource.preview = script.MathJax.preview;
delete script.MathJax.preview;
}
}
},

postTranslate: function(state) {
var scripts = state.jax[this.id];
if (!this.hideProcessedMath) return;
for (var i = 0, m = scripts.length; i < m; i++) {
var script = scripts[i];
if (script && script.MathJax.elementJax) {
//
// Remove the processed marker
//
script.previousSibling.className = script.previousSibling.className.split(/ /)[0];
var data = script.MathJax.elementJax.PlainSource;
//
// Remove the preview, if any
//
if (data.preview) {
data.preview.innerHTML = "";
script.MathJax.preview = data.preview;
delete data.preview;
}
}
}
},

getJaxFromMath: function(math) {
if (math.parentNode.className === "MathJax_PlainSource_Display") {
math = math.parentNode
}
do {
math = math.nextSibling
} while (math && math.nodeName.toLowerCase() !== "script");
return HUB.getJaxFor(math);
},

initPlainSource: function(math, span) {},

Remove: function(jax) {
var span = document.getElementById(jax.inputID + "-Frame");
if (span) {
if (jax.PlainSource.display) {
span = span.parentNode
}
span.parentNode.removeChild(span);
}
delete jax.PlainSource;
},


});

MathJax.Hub.Register.StartupHook("mml Jax Ready", function() {
MathJax.Hub.Register.StartupHook("onLoad", function() {
setTimeout(MathJax.Callback(["loadComplete", PlainSource, "jax.js"]), 0);
});
});

MathJax.Hub.Register.StartupHook("End Cookie", function() {
if (HUB.config.menuSettings.zoom !== "None") {
AJAX.Require("[MathJax]/extensions/MathZoom.js")
}
});

})(MathJax.Ajax, MathJax.Hub, MathJax.HTML, MathJax.OutputJax.PlainSource);

0 comments on commit b28461f

Please sign in to comment.