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 5.87 kB
{"version":3,"file":"emphasis.mjs","sources":["../../../../../../node_modules/markdown-it/lib/rules_inline/emphasis.mjs"],"sourcesContent":["// Process *this* and _that_\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction emphasis_tokenize (state, silent) {\n const start = state.pos\n const marker = state.src.charCodeAt(start)\n\n if (silent) { return false }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false }\n\n const scanned = state.scanDelims(state.pos, marker === 0x2A)\n\n for (let i = 0; i < scanned.length; i++) {\n const token = state.push('text', '', 0)\n token.content = String.fromCharCode(marker)\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n })\n }\n\n state.pos += scanned.length\n\n return true\n}\n\nfunction postProcess (state, delimiters) {\n const max = delimiters.length\n\n for (let i = max - 1; i >= 0; i--) {\n const startDelim = delimiters[i]\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue\n }\n\n const endDelim = delimiters[startDelim.end]\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n //\n const isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1\n\n const ch = String.fromCharCode(startDelim.marker)\n\n const token_o = state.tokens[startDelim.token]\n token_o.type = isStrong ? 'strong_open' : 'em_open'\n token_o.tag = isStrong ? 'strong' : 'em'\n token_o.nesting = 1\n token_o.markup = isStrong ? ch + ch : ch\n token_o.content = ''\n\n const token_c = state.tokens[endDelim.token]\n token_c.type = isStrong ? 'strong_close' : 'em_close'\n token_c.tag = isStrong ? 'strong' : 'em'\n token_c.nesting = -1\n token_c.markup = isStrong ? ch + ch : ch\n token_c.content = ''\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = ''\n state.tokens[delimiters[startDelim.end + 1].token].content = ''\n i--\n }\n }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction emphasis_post_process (state) {\n const tokens_meta = state.tokens_meta\n const max = state.tokens_meta.length\n\n postProcess(state, state.delimiters)\n\n for (let curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters)\n }\n }\n}\n\nexport default {\n tokenize: emphasis_tokenize,\n postProcess: emphasis_post_process\n}\n"],"names":["emphasis_tokenize","state","silent","start","marker","scanned","i","token","postProcess","delimiters","max","startDelim","endDelim","isStrong","ch","token_o","token_c","emphasis_post_process","tokens_meta","curr","r_emphasis"],"mappings":"AAKA,SAASA,EAAmBC,GAAOC,GAAQ;AACzC,QAAMC,IAAQF,EAAM,KACdG,IAASH,EAAM,IAAI,WAAWE,CAAK;AAIzC,MAFID,KAEAE,MAAW,MAAgBA,MAAW;AAAgB,WAAO;AAEjE,QAAMC,IAAUJ,EAAM,WAAWA,EAAM,KAAKG,MAAW,EAAI;AAE3D,WAASE,IAAI,GAAGA,IAAID,EAAQ,QAAQC,KAAK;AACvC,UAAMC,IAAQN,EAAM,KAAK,QAAQ,IAAI,CAAC;AACtC,IAAAM,EAAM,UAAU,OAAO,aAAaH,CAAM,GAE1CH,EAAM,WAAW,KAAK;AAAA;AAAA;AAAA,MAGpB,QAAAG;AAAA;AAAA;AAAA,MAIA,QAAQC,EAAQ;AAAA;AAAA;AAAA,MAIhB,OAAOJ,EAAM,OAAO,SAAS;AAAA;AAAA;AAAA;AAAA,MAK7B,KAAK;AAAA;AAAA;AAAA;AAAA,MAKL,MAAMI,EAAQ;AAAA,MACd,OAAOA,EAAQ;AAAA,IACrB,CAAK;AAAA,EACH;AAEA,SAAAJ,EAAM,OAAOI,EAAQ,QAEd;AACT;AAEA,SAASG,EAAaP,GAAOQ,GAAY;AACvC,QAAMC,IAAMD,EAAW;AAEvB,WAASH,IAAII,IAAM,GAAGJ,KAAK,GAAGA,KAAK;AACjC,UAAMK,IAAaF,EAAWH,CAAC;AAO/B,QALIK,EAAW,WAAW,MAAeA,EAAW,WAAW,MAK3DA,EAAW,QAAQ;AACrB;AAGF,UAAMC,IAAWH,EAAWE,EAAW,GAAG,GAOpCE,IAAWP,IAAI,KACVG,EAAWH,IAAI,CAAC,EAAE,QAAQK,EAAW,MAAM;AAAA,IAE3CF,EAAWH,IAAI,CAAC,EAAE,WAAWK,EAAW,UACxCF,EAAWH,IAAI,CAAC,EAAE,UAAUK,EAAW,QAAQ;AAAA,IAE/CF,EAAWE,EAAW,MAAM,CAAC,EAAE,UAAUC,EAAS,QAAQ,GAE/DE,IAAK,OAAO,aAAaH,EAAW,MAAM,GAE1CI,IAAYd,EAAM,OAAOU,EAAW,KAAK;AAC/C,IAAAI,EAAQ,OAAUF,IAAW,gBAAgB,WAC7CE,EAAQ,MAAUF,IAAW,WAAW,MACxCE,EAAQ,UAAU,GAClBA,EAAQ,SAAUF,IAAWC,IAAKA,IAAKA,GACvCC,EAAQ,UAAU;AAElB,UAAMC,IAAYf,EAAM,OAAOW,EAAS,KAAK;AAC7C,IAAAI,EAAQ,OAAUH,IAAW,iBAAiB,YAC9CG,EAAQ,MAAUH,IAAW,WAAW,MACxCG,EAAQ,UAAU,IAClBA,EAAQ,SAAUH,IAAWC,IAAKA,IAAKA,GACvCE,EAAQ,UAAU,IAEdH,MACFZ,EAAM,OAAOQ,EAAWH,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,IAChDL,EAAM,OAAOQ,EAAWE,EAAW,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,IAC7DL;AAAA,EAEJ;AACF;AAIA,SAASW,EAAuBhB,GAAO;AACrC,QAAMiB,IAAcjB,EAAM,aACpBS,IAAMT,EAAM,YAAY;AAE9B,EAAAO,EAAYP,GAAOA,EAAM,UAAU;AAEnC,WAASkB,IAAO,GAAGA,IAAOT,GAAKS;AAC7B,IAAID,EAAYC,CAAI,KAAKD,EAAYC,CAAI,EAAE,cACzCX,EAAYP,GAAOiB,EAAYC,CAAI,EAAE,UAAU;AAGrD;AAEA,MAAAC,IAAe;AAAA,EACb,UAAUpB;AAAA,EACV,aAAaiB;AACf;","x_google_ignoreList":[0]}