1
0

mathjax.js 833 B

123456789101112131415161718192021222324252627282930313233343536
  1. md.mathjax = () => {
  2. var delimiters = new RegExp([
  3. /\$\$[^`]*?\$\$/,
  4. /\\\([^`]*?\\\)/,
  5. /\\\[[^`]*?\\\]/,
  6. /\\begin\{.*?\}[^`]*?\\end\{.*?\}/,
  7. /\$[^`\n]*?\$/,
  8. ]
  9. .map((regex) => `(?:${regex.source})`).join('|'), 'gi')
  10. var escape = (math) =>
  11. math.replace(/[<>&]/gi, (symbol) =>
  12. symbol === '>' ? '&gt;' :
  13. symbol === '<' ? '&lt;' :
  14. symbol === '&' ? '&amp;': null
  15. )
  16. var ctor = (map = {}) => ({
  17. tokenize: (markdown) =>
  18. markdown.replace(delimiters, (str, offset) => (
  19. map[offset] = str,
  20. `?${offset}?`
  21. ))
  22. ,
  23. detokenize: (html) =>
  24. Object.keys(map)
  25. .reduce((html, offset) =>
  26. html = html.replace(`?${offset}?`, () => escape(map[offset])),
  27. html
  28. )
  29. })
  30. return Object.assign(ctor, {delimiters, escape})
  31. }