vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
65 lines (64 loc) • 2.28 kB
JavaScript
import u from "./ruler.mjs";
import s from "./rules_block/state_block.mjs";
import k from "./rules_block/table.mjs";
import b from "./rules_block/code.mjs";
import g from "./rules_block/fence.mjs";
import d from "./rules_block/blockquote.mjs";
import q from "./rules_block/hr.mjs";
import w from "./rules_block/list.mjs";
import y from "./rules_block/reference.mjs";
import E from "./rules_block/html_block.mjs";
import x from "./rules_block/heading.mjs";
import S from "./rules_block/lheading.mjs";
import _ from "./rules_block/paragraph.mjs";
const t = [
// First 2 params - rule name & source. Secondary array - list of rules,
// which can be terminated by this one.
["table", k, ["paragraph", "reference"]],
["code", b],
["fence", g, ["paragraph", "reference", "blockquote", "list"]],
["blockquote", d, ["paragraph", "reference", "blockquote", "list"]],
["hr", q, ["paragraph", "reference", "blockquote", "list"]],
["list", w, ["paragraph", "reference", "blockquote"]],
["reference", y],
["html_block", E, ["paragraph", "reference", "blockquote"]],
["heading", x, ["paragraph", "reference", "blockquote"]],
["lheading", S],
["paragraph", _]
];
function c() {
this.ruler = new u();
for (let e = 0; e < t.length; e++)
this.ruler.push(t[e][0], t[e][1], { alt: (t[e][2] || []).slice() });
}
c.prototype.tokenize = function(e, n, o) {
const l = this.ruler.getRules(""), i = l.length, m = e.md.options.maxNesting;
let r = n, p = !1;
for (; r < o && (e.line = r = e.skipEmptyLines(r), !(r >= o || e.sCount[r] < e.blkIndent)); ) {
if (e.level >= m) {
e.line = o;
break;
}
const h = e.line;
let f = !1;
for (let a = 0; a < i; a++)
if (f = l[a](e, r, o, !1), f) {
if (h >= e.line)
throw new Error("block rule didn't increment state.line");
break;
}
if (!f) throw new Error("none of the block rules matched");
e.tight = !p, e.isEmpty(e.line - 1) && (p = !0), r = e.line, r < o && e.isEmpty(r) && (p = !0, r++, e.line = r);
}
};
c.prototype.parse = function(e, n, o, l) {
if (!e)
return;
const i = new this.State(e, n, o, l);
this.tokenize(i, i.line, i.lineMax);
};
c.prototype.State = s;
export {
c as default
};
//# sourceMappingURL=parser_block.mjs.map