mathpix-markdown-it
Version:
Mathpix-markdown-it is an open source implementation of the mathpix-markdown spec written in Typescript. It relies on the following open source libraries: MathJax v3 (to render math with SVGs), markdown-it (for standard Markdown parsing)
127 lines • 5.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getListToDisableByOptions = exports.applyFootnoteRulesToDisableRules = exports.applyRefRulesToDisableRules = exports.applyRulesToDisableRules = exports.getListRulesToDisable = exports.getDisableRuleTypes = void 0;
var mmdRules_1 = require("./mmdRules");
var consts_1 = require("./consts");
var findRule = function (md, rule) {
var mdBlock = md.block;
var mdInline = md.inline;
var mdCore = md.core;
var blockRuler = mdBlock.ruler;
var inlineRuler = mdInline.ruler;
var inlineRuler2 = mdInline.ruler2;
var coreRuler = mdCore.ruler;
switch (rule.rule) {
case mmdRules_1.eRule.block:
return blockRuler.__find__(rule.name) >= 0;
case mmdRules_1.eRule.inline:
return inlineRuler.__find__(rule.name) >= 0;
case mmdRules_1.eRule.inline2:
return inlineRuler2.__find__(rule.name) >= 0;
case mmdRules_1.eRule.core:
return coreRuler.__find__(rule.name) >= 0;
default:
return false;
}
};
var getDisableRuleTypes = function (renderOptions) {
var _a = renderOptions.enable_markdown, enable_markdown = _a === void 0 ? true : _a, _b = renderOptions.enable_latex, enable_latex = _b === void 0 ? true : _b, _c = renderOptions.enable_markdown_mmd_extensions, enable_markdown_mmd_extensions = _c === void 0 ? true : _c;
var disableRuleTypes = [];
if (!enable_markdown) {
disableRuleTypes = [
mmdRules_1.eMmdRuleType.markdown,
mmdRules_1.eMmdRuleType.chem,
mmdRules_1.eMmdRuleType.html,
mmdRules_1.eMmdRuleType.asciiMath,
mmdRules_1.eMmdRuleType.mathML
];
}
else {
if (!enable_markdown_mmd_extensions) {
disableRuleTypes = [
mmdRules_1.eMmdRuleType.chem,
mmdRules_1.eMmdRuleType.asciiMath,
mmdRules_1.eMmdRuleType.mathML
];
}
}
if (!enable_latex) {
disableRuleTypes.push(mmdRules_1.eMmdRuleType.latex);
disableRuleTypes.push(mmdRules_1.eMmdRuleType.math);
disableRuleTypes.push(mmdRules_1.eMmdRuleType.simpleMath);
}
return disableRuleTypes;
};
exports.getDisableRuleTypes = getDisableRuleTypes;
var getListRulesToDisable = function (md, renderOptions) {
var rules = [];
var disableRuleTypes = (0, exports.getDisableRuleTypes)(renderOptions);
if (!(disableRuleTypes === null || disableRuleTypes === void 0 ? void 0 : disableRuleTypes.length)) {
return rules;
}
for (var i = 0; i < mmdRules_1.mmdRuleList.length; i++) {
var rule = mmdRules_1.mmdRuleList[i];
if (!findRule(md, rule)) {
continue;
}
if (disableRuleTypes.includes(rule.type)) {
rules.push(rule.name);
}
}
return rules;
};
exports.getListRulesToDisable = getListRulesToDisable;
var getMmdRuleByName = function (name) {
return mmdRules_1.mmdRuleList === null || mmdRules_1.mmdRuleList === void 0 ? void 0 : mmdRules_1.mmdRuleList.find(function (item) { return item.name === name; });
};
var applyRulesToDisableRules = function (md, rules, disableRules) {
for (var i = 0; i < rules.length; i++) {
var rule = getMmdRuleByName(rules[i]);
if (rule && findRule(md, rule)) {
if (disableRules.indexOf(rule.name) === -1) {
disableRules.push(rule.name);
}
}
}
return disableRules;
};
exports.applyRulesToDisableRules = applyRulesToDisableRules;
var applyRefRulesToDisableRules = function (md, disableRules) {
var refRules = ['refs', 'refsInline'];
return (0, exports.applyRulesToDisableRules)(md, refRules, disableRules);
};
exports.applyRefRulesToDisableRules = applyRefRulesToDisableRules;
var applyFootnoteRulesToDisableRules = function (md, disableRules) {
var footnoteRules = [
'mmd_footnote_tail',
'latex_footnote_block',
'latex_footnotetext_block',
'latex_footnote',
'latex_footnotemark',
'latex_footnotetext',
'grab_footnote_ref',
'footnote_tail',
'footnote_def',
'footnote_inline',
'footnote_ref'
];
return (0, exports.applyRulesToDisableRules)(md, footnoteRules, disableRules);
};
exports.applyFootnoteRulesToDisableRules = applyFootnoteRulesToDisableRules;
var getListToDisableByOptions = function (md, options) {
var _a = options.renderOptions, renderOptions = _a === void 0 ? null : _a, _b = options.isDisableRefs, isDisableRefs = _b === void 0 ? false : _b, _c = options.isDisableFootnotes, isDisableFootnotes = _c === void 0 ? false : _c;
renderOptions = Object.assign({}, consts_1.renderOptionsDef, renderOptions);
var disableRules = [];
if (renderOptions) {
disableRules = (0, exports.getListRulesToDisable)(md, renderOptions);
}
if (isDisableRefs) {
disableRules = (0, exports.applyRefRulesToDisableRules)(md, disableRules);
}
if (isDisableFootnotes) {
disableRules = (0, exports.applyFootnoteRulesToDisableRules)(md, disableRules);
}
return disableRules;
};
exports.getListToDisableByOptions = getListToDisableByOptions;
//# sourceMappingURL=mmdRulesToDisable.js.map