webTemplate/renderMD.py
2021-10-20 17:23:31 +02:00

49 lines
1.4 KiB
Python

import html
from misaka import Markdown, HtmlRenderer
import latex2mathml.converter
import re
def renderLatex(code):
code = code.strip()
code = code.replace("=>", "\\Rightarrow")
code = code.replace("->", "\\rightarrow")
code = code.replace("*", "\\cdot")
a = re.search(r"{[^{}]*} */ *{[^{}]*}", code)
while a is not None:
print(a)
print(code[a.span()[0] : a.span()[1]])
newcode = code[:a.span()[0]]
newcode += "\\frac"
newcode += re.sub(r'}[ ]*/[ ]*{', '}{', code[a.span()[0] : a.span()[1]])
newcode += code[a.span()[1]:]
code = newcode
print(code)
a = re.search(r"{[^{}}]*} */ *{[^{}}]*}", code)
return latex2mathml.converter.convert(code)
class HighlighterRenderer(HtmlRenderer):
def codespan(self, code):
lang = code.split(' ')[0]
if(lang == 'tex'):
return '{}\n'.format(renderLatex(' '.join(code.split(' ')[1:]).strip()))
return '<code>{}</code>\n'.format(code.strip())
def blockcode(self, code, lang):
if(lang == 'latex/equetion'):
return '<p data-latex="{}">{}</p>\n'.format(code.strip(), renderLatex(code))
return '<pre><code class="{}">{}</code></pre>\n'.format(lang.replace('/', '-'), code)
renderer = HighlighterRenderer()
md = Markdown(renderer, extensions=('fenced-code','tables'))
# print(md(markdown_example))
def renderMD(src):
srcFile = open(src, 'r')
html = md(srcFile.read())
srcFile.close()
return html
# print(renderMD('../notes/HR/DIS10/week-2.md'))