litvis-integration-mume
Version:
Enables litvis functionality in mume and markdown-preview-enhanced
63 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useTripleHatReference = void 0;
const block_info_1 = require("block-info");
const html_entities_1 = require("html-entities");
const delimiters = [["^^^", "^^^"]];
const useTripleHatReference = (md) => {
md.inline.ruler.before("escape", "litvis:triple-hat-reference", (state, silent) => {
let openTag = null;
let closeTag = null;
for (const tagPair of delimiters) {
if (state.src.startsWith(tagPair[0], state.pos)) {
[openTag, closeTag] = tagPair;
break;
}
}
if (!openTag || !closeTag) {
return false; // not triple hat reference
}
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;
}
const trimmedContent = content.trim();
if (content.length &&
trimmedContent.length === content.length &&
!silent) {
const token = state.push("litvis:triple-hat-reference", "litvis:triple-hat-reference", 0);
token.content = trimmedContent;
token.meta = {
openTag,
closeTag,
};
state.pos += content.length + openTag.length + closeTag.length;
return true;
}
else {
return false;
}
});
md.renderer.rules["litvis:triple-hat-reference"] = (tokens, idx) => {
const token = tokens[idx];
const parsedInfo = (0, block_info_1.parseBlockInfo)(token.content);
return `<span data-role="litvis:triple-hat-reference" data-info="${(0, html_entities_1.encode)(token.content)}" data-parsedInfo="${(0, html_entities_1.encode)(JSON.stringify(parsedInfo))}"><code>${(0, html_entities_1.encode)(token.meta.openTag + token.content + token.meta.closeTag)}</code></span>`;
};
};
exports.useTripleHatReference = useTripleHatReference;
//# sourceMappingURL=useTripleHatReference.js.map