mathjax.js 828 B

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