UNPKG

vue-files-preview-inno

Version:

A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.

1 lines 4.05 kB
{"version":3,"file":"fence.mjs","sources":["../../../../../../node_modules/markdown-it/lib/rules_block/fence.mjs"],"sourcesContent":["// fences (``` lang, ~~~ lang)\n\nexport default function fence (state, startLine, endLine, silent) {\n let pos = state.bMarks[startLine] + state.tShift[startLine]\n let max = state.eMarks[startLine]\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n if (pos + 3 > max) { return false }\n\n const marker = state.src.charCodeAt(pos)\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false\n }\n\n // scan marker length\n let mem = pos\n pos = state.skipChars(pos, marker)\n\n let len = pos - mem\n\n if (len < 3) { return false }\n\n const markup = state.src.slice(mem, pos)\n const params = state.src.slice(pos, max)\n\n if (marker === 0x60 /* ` */) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false\n }\n }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true }\n\n // search end of block\n let nextLine = startLine\n let haveEndMarker = false\n\n for (;;) {\n nextLine++\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]\n max = state.eMarks[nextLine]\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue\n }\n\n pos = state.skipChars(pos, marker)\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos)\n\n if (pos < max) { continue }\n\n haveEndMarker = true\n // found!\n break\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine]\n\n state.line = nextLine + (haveEndMarker ? 1 : 0)\n\n const token = state.push('fence', 'code', 0)\n token.info = params\n token.content = state.getLines(startLine + 1, nextLine, len, true)\n token.markup = markup\n token.map = [startLine, state.line]\n\n return true\n}\n"],"names":["fence","state","startLine","endLine","silent","pos","max","marker","mem","len","markup","params","nextLine","haveEndMarker","token"],"mappings":"AAEe,SAASA,EAAOC,GAAOC,GAAWC,GAASC,GAAQ;AAChE,MAAIC,IAAMJ,EAAM,OAAOC,CAAS,IAAID,EAAM,OAAOC,CAAS,GACtDI,IAAML,EAAM,OAAOC,CAAS;AAKhC,MAFID,EAAM,OAAOC,CAAS,IAAID,EAAM,aAAa,KAE7CI,IAAM,IAAIC;AAAO,WAAO;AAE5B,QAAMC,IAASN,EAAM,IAAI,WAAWI,CAAG;AAEvC,MAAIE,MAAW,OAAeA,MAAW;AACvC,WAAO;AAIT,MAAIC,IAAMH;AACV,EAAAA,IAAMJ,EAAM,UAAUI,GAAKE,CAAM;AAEjC,MAAIE,IAAMJ,IAAMG;AAEhB,MAAIC,IAAM;AAAK,WAAO;AAEtB,QAAMC,IAAST,EAAM,IAAI,MAAMO,GAAKH,CAAG,GACjCM,IAASV,EAAM,IAAI,MAAMI,GAAKC,CAAG;AAEvC,MAAIC,MAAW,MACTI,EAAO,QAAQ,OAAO,aAAaJ,CAAM,CAAC,KAAK;AACjD,WAAO;AAKX,MAAIH;AAAU,WAAO;AAGrB,MAAIQ,IAAWV,GACXW,IAAgB;AAEpB,SACED,KACI,EAAAA,KAAYT,MAMhBE,IAAMG,IAAMP,EAAM,OAAOW,CAAQ,IAAIX,EAAM,OAAOW,CAAQ,GAC1DN,IAAML,EAAM,OAAOW,CAAQ,GAEvBP,IAAMC,KAAOL,EAAM,OAAOW,CAAQ,IAAIX,EAAM;AAOhD,QAAIA,EAAM,IAAI,WAAWI,CAAG,MAAME,KAE9B,EAAAN,EAAM,OAAOW,CAAQ,IAAIX,EAAM,aAAa,OAKhDI,IAAMJ,EAAM,UAAUI,GAAKE,CAAM,GAG7B,EAAAF,IAAMG,IAAMC,OAGhBJ,IAAMJ,EAAM,WAAWI,CAAG,GAEtB,EAAAA,IAAMC,MAEV;AAAA,MAAAO,IAAgB;AAEhB;AAAA;AAIF,EAAAJ,IAAMR,EAAM,OAAOC,CAAS,GAE5BD,EAAM,OAAOW,KAAYC,IAAgB,IAAI;AAE7C,QAAMC,IAAUb,EAAM,KAAK,SAAS,QAAQ,CAAC;AAC7C,SAAAa,EAAM,OAAUH,GAChBG,EAAM,UAAUb,EAAM,SAASC,IAAY,GAAGU,GAAUH,GAAK,EAAI,GACjEK,EAAM,SAAUJ,GAChBI,EAAM,MAAU,CAACZ,GAAWD,EAAM,IAAI,GAE/B;AACT;","x_google_ignoreList":[0]}