{"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]}