{"version":3,"file":"replacements.mjs","sources":["../../../../../../node_modules/markdown-it/lib/rules_core/replacements.mjs"],"sourcesContent":["// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → &ndash;, --- → &mdash;\n//\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig\nconst SCOPED_ABBR = {\n  c: '©',\n  r: '®',\n  tm: '™'\n}\n\nfunction replaceFn (match, name) {\n  return SCOPED_ABBR[name.toLowerCase()]\n}\n\nfunction replace_scoped (inlineTokens) {\n  let inside_autolink = 0\n\n  for (let i = inlineTokens.length - 1; i >= 0; i--) {\n    const token = inlineTokens[i]\n\n    if (token.type === 'text' && !inside_autolink) {\n      token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn)\n    }\n\n    if (token.type === 'link_open' && token.info === 'auto') {\n      inside_autolink--\n    }\n\n    if (token.type === 'link_close' && token.info === 'auto') {\n      inside_autolink++\n    }\n  }\n}\n\nfunction replace_rare (inlineTokens) {\n  let inside_autolink = 0\n\n  for (let i = inlineTokens.length - 1; i >= 0; i--) {\n    const token = inlineTokens[i]\n\n    if (token.type === 'text' && !inside_autolink) {\n      if (RARE_RE.test(token.content)) {\n        token.content = token.content\n          .replace(/\\+-/g, '±')\n          // .., ..., ....... -> …\n          // but ?..... & !..... -> ?.. & !..\n          .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n          .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n          // em-dash\n          .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n          // en-dash\n          .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n          .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013')\n      }\n    }\n\n    if (token.type === 'link_open' && token.info === 'auto') {\n      inside_autolink--\n    }\n\n    if (token.type === 'link_close' && token.info === 'auto') {\n      inside_autolink++\n    }\n  }\n}\n\nexport default function replace (state) {\n  let blkIdx\n\n  if (!state.md.options.typographer) { return }\n\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== 'inline') { continue }\n\n    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n      replace_scoped(state.tokens[blkIdx].children)\n    }\n\n    if (RARE_RE.test(state.tokens[blkIdx].content)) {\n      replace_rare(state.tokens[blkIdx].children)\n    }\n  }\n}\n"],"names":["RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","replaceFn","match","name","replace_scoped","inlineTokens","inside_autolink","i","token","replace_rare","replace","state","blkIdx"],"mappings":"AAeA,MAAMA,IAAU,gCAIVC,IAAsB,iBAEtBC,IAAiB,kBACjBC,IAAc;AAAA,EAClB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AACN;AAEA,SAASC,EAAWC,GAAOC,GAAM;AAC/B,SAAOH,EAAYG,EAAK,YAAW,CAAE;AACvC;AAEA,SAASC,EAAgBC,GAAc;AACrC,MAAIC,IAAkB;AAEtB,WAASC,IAAIF,EAAa,SAAS,GAAGE,KAAK,GAAGA,KAAK;AACjD,UAAMC,IAAQH,EAAaE,CAAC;AAE5B,IAAIC,EAAM,SAAS,UAAU,CAACF,MAC5BE,EAAM,UAAUA,EAAM,QAAQ,QAAQT,GAAgBE,CAAS,IAG7DO,EAAM,SAAS,eAAeA,EAAM,SAAS,UAC/CF,KAGEE,EAAM,SAAS,gBAAgBA,EAAM,SAAS,UAChDF;AAAA,EAEJ;AACF;AAEA,SAASG,EAAcJ,GAAc;AACnC,MAAIC,IAAkB;AAEtB,WAASC,IAAIF,EAAa,SAAS,GAAGE,KAAK,GAAGA,KAAK;AACjD,UAAMC,IAAQH,EAAaE,CAAC;AAE5B,IAAIC,EAAM,SAAS,UAAU,CAACF,KACxBT,EAAQ,KAAKW,EAAM,OAAO,MAC5BA,EAAM,UAAUA,EAAM,QACnB,QAAQ,QAAQ,GAAG,EAGnB,QAAQ,WAAW,GAAG,EAAE,QAAQ,YAAY,MAAM,EAClD,QAAQ,eAAe,QAAQ,EAAE,QAAQ,UAAU,GAAG,EAEtD,QAAQ,2BAA2B,KAAU,EAE7C,QAAQ,sBAAsB,KAAU,EACxC,QAAQ,8BAA8B,KAAU,IAInDA,EAAM,SAAS,eAAeA,EAAM,SAAS,UAC/CF,KAGEE,EAAM,SAAS,gBAAgBA,EAAM,SAAS,UAChDF;AAAA,EAEJ;AACF;AAEe,SAASI,EAASC,GAAO;AACtC,MAAIC;AAEJ,MAAKD,EAAM,GAAG,QAAQ;AAEtB,SAAKC,IAASD,EAAM,OAAO,SAAS,GAAGC,KAAU,GAAGA;AAClD,MAAID,EAAM,OAAOC,CAAM,EAAE,SAAS,aAE9Bd,EAAoB,KAAKa,EAAM,OAAOC,CAAM,EAAE,OAAO,KACvDR,EAAeO,EAAM,OAAOC,CAAM,EAAE,QAAQ,GAG1Cf,EAAQ,KAAKc,EAAM,OAAOC,CAAM,EAAE,OAAO,KAC3CH,EAAaE,EAAM,OAAOC,CAAM,EAAE,QAAQ;AAGhD;","x_google_ignoreList":[0]}