"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.highlightLinePlugin = void 0; const RE = /{([\d,-]+)}/; const wrapperRE = /^
/;
exports.highlightLinePlugin = (md) => {
    const fence = md.renderer.rules.fence;
    md.renderer.rules.fence = (...args) => {
        const [tokens, idx, options] = args;
        const token = tokens[idx];
        const rawInfo = token.info;
        if (!rawInfo || !RE.test(rawInfo)) {
            return fence(...args);
        }
        const langName = rawInfo.replace(RE, '').trim();
        // ensure the next plugin get the correct lang.
        token.info = langName;
        const lineNumbers = RE.exec(rawInfo)[1]
            .split(',')
            .map((v) => v.split('-').map((v) => parseInt(v, 10)));
        const code = options.highlight
            ? options.highlight(token.content, langName)
            : token.content;
        const rawCode = code.replace(wrapperRE, '');
        const highlightLinesCode = rawCode
            .split('\n')
            .map((split, index) => {
            const lineNumber = index + 1;
            const inRange = lineNumbers.some(([start, end]) => {
                if (start && end) {
                    return lineNumber >= start && lineNumber <= end;
                }
                return lineNumber === start;
            });
            if (inRange) {
                return `
 
`; } return '
'; }) .join(''); const highlightLinesWrapperCode = `
${highlightLinesCode}
`; return highlightLinesWrapperCode + code; }; }; //# sourceMappingURL=highlightLines.js.map