* chore: update deprecated import from collections * chore: remove outdated imports from markdown library as it hasn't been supported since 2.0.3 and we're on 3.x. This was deprecated at least as early as 2012! * docs: add docstring and remove lint-amnesty to markdown plugin * chore: remove deprecated etree import * style: remove unnecessary-comprehension for sets * style: resolve a number of amnestied pylint complaints Co-authored-by: stvn <stvn@mit.edu>
31 lines
949 B
Python
31 lines
949 B
Python
"""
|
|
Add MathJax Markdown support
|
|
|
|
Source: https://github.com/mayoff/python-markdown-mathjax
|
|
"""
|
|
from xml.etree import ElementTree
|
|
|
|
import markdown
|
|
from markdown.util import AtomicString
|
|
|
|
|
|
class MathJaxPattern(markdown.inlinepatterns.Pattern): # lint-amnesty, pylint: disable=missing-class-docstring
|
|
|
|
def __init__(self):
|
|
markdown.inlinepatterns.Pattern.__init__(self, r'(?<!\\)(\$\$?)(.+?)\2')
|
|
|
|
def handleMatch(self, m):
|
|
el = ElementTree.Element('span')
|
|
el.text = AtomicString(m.group(2) + m.group(3) + m.group(2))
|
|
return el
|
|
|
|
|
|
class MathJaxExtension(markdown.Extension):
|
|
def extendMarkdown(self, md, md_globals): # lint-amnesty, pylint: disable=arguments-differ, unused-argument
|
|
# Needs to come before escape matching because \ is pretty important in LaTeX
|
|
md.inlinePatterns.add('mathjax', MathJaxPattern(), '<escape')
|
|
|
|
|
|
def makeExtension(**kwargs):
|
|
return MathJaxExtension(**kwargs)
|