mume-with-litvis
Version:
Fork of mume with added http://litvis.org/
75 lines • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const parse_math_1 = require("../parse-math");
exports.default = (md, config) => {
// @ts-ignore
md.inline.ruler.before("escape", "math", (state, silent) => {
if (config.mathRenderingOption === "None") {
return false;
}
let openTag = null;
let closeTag = null;
let displayMode = true;
const { mathBlockDelimiters: blockDelimiters, mathInlineDelimiters: inlineDelimiters, } = config;
for (const tagPair of blockDelimiters) {
if (state.src.startsWith(tagPair[0], state.pos)) {
[openTag, closeTag] = tagPair;
break;
}
}
if (!openTag) {
for (const tagPair of inlineDelimiters) {
if (state.src.startsWith(tagPair[0], state.pos)) {
[openTag, closeTag] = tagPair;
displayMode = false;
break;
}
}
}
if (!openTag) {
return false; // not math
}
let content = null;
let end = -1;
let i = state.pos + openTag.length;
while (i < state.src.length) {
if (state.src.startsWith(closeTag, i)) {
end = i;
break;
}
else if (state.src[i] === "\\") {
i += 1;
}
i += 1;
}
if (end >= 0) {
content = state.src.slice(state.pos + openTag.length, end);
}
else {
return false;
}
if (content && !silent) {
const token = state.push("math");
token.content = content.trim();
token.openTag = openTag;
token.closeTag = closeTag;
token.displayMode = displayMode;
state.pos += content.length + openTag.length + closeTag.length;
return true;
}
else {
return false;
}
});
md.renderer.rules.math = (tokens, idx) => {
const content = tokens[idx] ? tokens[idx].content : null;
return (0, parse_math_1.default)({
content,
openTag: tokens[idx].openTag,
closeTag: tokens[idx].closeTag,
renderingOption: config.mathRenderingOption,
displayMode: tokens[idx].displayMode,
});
};
};
//# sourceMappingURL=math.js.map