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 • 8.38 kB
Source Map (JSON)
{"version":3,"file":"parser_inline.mjs","sources":["../../../../../node_modules/markdown-it/lib/parser_inline.mjs"],"sourcesContent":["/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateInline from './rules_inline/state_inline.mjs'\n\nimport r_text from './rules_inline/text.mjs'\nimport r_linkify from './rules_inline/linkify.mjs'\nimport r_newline from './rules_inline/newline.mjs'\nimport r_escape from './rules_inline/escape.mjs'\nimport r_backticks from './rules_inline/backticks.mjs'\nimport r_strikethrough from './rules_inline/strikethrough.mjs'\nimport r_emphasis from './rules_inline/emphasis.mjs'\nimport r_link from './rules_inline/link.mjs'\nimport r_image from './rules_inline/image.mjs'\nimport r_autolink from './rules_inline/autolink.mjs'\nimport r_html_inline from './rules_inline/html_inline.mjs'\nimport r_entity from './rules_inline/entity.mjs'\n\nimport r_balance_pairs from './rules_inline/balance_pairs.mjs'\nimport r_fragments_join from './rules_inline/fragments_join.mjs'\n\n// Parser rules\n\nconst _rules = [\n ['text', r_text],\n ['linkify', r_linkify],\n ['newline', r_newline],\n ['escape', r_escape],\n ['backticks', r_backticks],\n ['strikethrough', r_strikethrough.tokenize],\n ['emphasis', r_emphasis.tokenize],\n ['link', r_link],\n ['image', r_image],\n ['autolink', r_autolink],\n ['html_inline', r_html_inline],\n ['entity', r_entity]\n]\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nconst _rules2 = [\n ['balance_pairs', r_balance_pairs],\n ['strikethrough', r_strikethrough.postProcess],\n ['emphasis', r_emphasis.postProcess],\n // rules for pairs separate '**' into its own text tokens, which may be left unused,\n // rule below merges unused segments back with the rest of the text\n ['fragments_join', r_fragments_join]\n]\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline () {\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler()\n\n for (let i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1])\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler()\n\n for (let i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1])\n }\n}\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n const pos = state.pos\n const rules = this.ruler.getRules('')\n const len = rules.length\n const maxNesting = state.md.options.maxNesting\n const cache = state.cache\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos]\n return\n }\n\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++\n ok = rules[i](state, true)\n state.level--\n\n if (ok) {\n if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax\n }\n\n if (!ok) { state.pos++ }\n cache[pos] = state.pos\n}\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n const rules = this.ruler.getRules('')\n const len = rules.length\n const end = state.posMax\n const maxNesting = state.md.options.maxNesting\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n const prevPos = state.pos\n let ok = false\n\n if (state.level < maxNesting) {\n for (let i = 0; i < len; i++) {\n ok = rules[i](state, false)\n if (ok) {\n if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n break\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break }\n continue\n }\n\n state.pending += state.src[state.pos++]\n }\n\n if (state.pending) {\n state.pushPending()\n }\n}\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n const state = new this.State(str, md, env, outTokens)\n\n this.tokenize(state)\n\n const rules = this.ruler2.getRules('')\n const len = rules.length\n\n for (let i = 0; i < len; i++) {\n rules[i](state)\n }\n}\n\nParserInline.prototype.State = StateInline\n\nexport default ParserInline\n"],"names":["_rules","r_text","r_linkify","r_newline","r_escape","r_backticks","r_strikethrough","r_emphasis","r_link","r_image","r_autolink","r_html_inline","r_entity","_rules2","r_balance_pairs","r_fragments_join","ParserInline","Ruler","i","state","pos","rules","len","maxNesting","cache","ok","end","prevPos","str","md","env","outTokens","StateInline"],"mappings":"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","x_google_ignoreList":[0]}