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)
73 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.inlineTabular = void 0;
var begin_tabular_1 = require("../md-block-rule/begin-tabular");
var parse_tabular_1 = require("../md-block-rule/begin-tabular/parse-tabular");
var inlineTabular = function (state, silent) {
var _a;
var startMathPos = state.pos;
if (state.src.charCodeAt(startMathPos) !== 0x5c /* \ */) {
return false;
}
var match = state.src
.slice(++startMathPos)
.match(/^(?:begin\s{0,}{tabular})/);
if (!match) {
return false;
}
var endMarker = '\\end{tabular}';
var endMarkerPos = state.src
.slice(startMathPos)
.lastIndexOf(endMarker);
if (endMarkerPos === -1) {
return false;
}
endMarkerPos += startMathPos;
var nextPos = endMarkerPos + endMarker.length;
if (!silent) {
var token = state.push("tabular_inline", "", 0);
token.content = state.src.slice(startMathPos - 1, endMarkerPos + '\\end{tabular}'.length);
token.children = [];
var cTabular = (0, begin_tabular_1.parseInlineTabular)(token.content);
if (!cTabular) {
return false;
}
for (var i = 0; i < cTabular.length; i++) {
if (cTabular[i].type === 'inline') {
continue;
}
var res = (0, parse_tabular_1.ParseTabular)(cTabular[i].content, 0, cTabular[i].align, state.md.options);
for (var j = 0; j < res.length; j++) {
var tok = res[j];
if (tok.token === 'table_open' && ((_a = state.md.options) === null || _a === void 0 ? void 0 : _a.forDocx)) {
tok.attrs.push(['data-type', 'subtable']);
}
if (tok.token === 'inline') {
var children = [];
if (state.env.tabulare) {
state.md.inline.parse(tok.content, state.md, state.env, children);
}
else {
state.env.tabulare = state.md.options.outMath.include_tsv
|| state.md.options.outMath.include_csv
|| (state.md.options.outMath.include_table_markdown
&& state.md.options.outMath.table_markdown && state.md.options.outMath.table_markdown.math_as_ascii);
state.md.inline.parse(tok.content, state.md, state.env, children);
state.env.tabulare = false;
}
tok.children = children;
}
else {
if (res[j].token === 'inline_decimal') {
tok = (0, begin_tabular_1.inlineDecimalParse)(tok);
}
}
token.children.push(tok);
}
}
}
state.pos = nextPos;
return true;
};
exports.inlineTabular = inlineTabular;
//# sourceMappingURL=tabular.js.map