import markdown
|
|
from pygments import highlight
|
|
from pygments.lexers import guess_lexer
|
|
from pygments.formatters import HtmlFormatter
|
|
|
|
|
|
class MarkdownRenderer:
|
|
def __init__(self):
|
|
self.formatter = HtmlFormatter(
|
|
style='default',
|
|
noclasses=False,
|
|
cssclass='highlight'
|
|
)
|
|
self.md = markdown.Markdown(
|
|
extensions=[
|
|
'codehilite',
|
|
'fenced_code',
|
|
'tables',
|
|
'nl2br',
|
|
'sane_lists'
|
|
],
|
|
extension_configs={
|
|
'codehilite': {
|
|
'css_class': 'highlight',
|
|
'linenos': False,
|
|
'guess_lang': False
|
|
}
|
|
}
|
|
)
|
|
|
|
def render(self, markdown_text: str) -> str:
|
|
return self.md.convert(markdown_text)
|