2ae37b0ba221f759c73ce87b4bda12eeac5c36f9d0a8d28940a04f9bc31e5090.json 8.3 KB

1
  1. {"ast":null,"code":"// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\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;\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig;\nconst SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n};\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\nfunction replace_scoped(inlineTokens) {\n let inside_autolink = 0;\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i];\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\nfunction replace_rare(inlineTokens) {\n let inside_autolink = 0;\n for (let i = inlineTokens.length - 1; i >= 0; i--) {\n const token = inlineTokens[i];\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content.replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..').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').replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013');\n }\n }\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\nexport default function replace(state) {\n let blkIdx;\n if (!state.md.options.typographer) {\n return;\n }\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') {\n continue;\n }\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n }\n}","map":{"version":3,"names":["RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","c","r","tm","replaceFn","match","name","toLowerCase","replace_scoped","inlineTokens","inside_autolink","i","length","token","type","content","replace","info","replace_rare","test","state","blkIdx","md","options","typographer","tokens","children"],"sources":["F:/workspace/202226701027/huinongbao-app/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// -- → –, --- → —\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"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}