import re
class Header:
@staticmethod
def header(text: str) -> str:
"""
渲染标题
:param text: 原始文本
:return: 处理后的文本
"""
h6 = re.sub(r'###### (.*?)\n', r'
\1
\n', text) # H6
h5 = re.sub(r'##### (.*?)\n', r'\1
\n', h6) # H5
h4 = re.sub(r'#### (.*?)\n', r'\1
\n', h5) # H4
h3 = re.sub(r'### (.*?)\n', r'\1
\n', h4) # H3
h2 = re.sub(r'## (.*?)\n', r'\1
\n', h3) # H2
h1 = re.sub(r'# (.*?)\n', r'\1
\n', h2) # H1
return h1
class Style:
"""
渲染字体样式
"""
def __init__(self, text: str):
"""
初始化
:param text: cd文本
"""
self.text = text
def italic(self):
"""
斜体
:return:
"""
self.text = re.sub(r'\*([^*\n]+)\*', r'\1\n', self.text)
def bold(self):
"""
粗体
:return:
"""
self.text = re.sub(r'\*\*([^*\n]+)\*\*', r'\1\n', self.text)
def underline(self):
"""
下划线
:return:
"""
self.text = re.sub(r'~([^~\n]+)~', r'\1\n', self.text)
def strikethrough(self):
"""
删除线
:return:
"""
self.text = re.sub(r'~~([^~\n]+)~~', r'\1\n', self.text)
def highlight(self):
"""
高亮
:return:
"""
self.text = re.sub(r'==([^=\n]+)==', r'\1\n', self.text)
def __call__(self, *args, **kwargs):
"""
一键运行
:param args:
:param kwargs:
:return:
"""
self.bold()
self.italic()
self.strikethrough()
self.underline()
self.highlight()
return self.text
class Function:
"""
添加特殊功能
"""
def __init__(self, text: str):
"""
初始化
:param text: cd文本
"""
self.text = text
def link(self):
self.text = re.sub(r'\[([^\[\]\n]+)]\(([^()\n]+)\)', r'\1\n', self.text)
def __call__(self, *args, **kwargs):
"""
一键运行
:param args:
:param kwargs:
:return:
"""
self.link()
return self.text
class Basic:
@ staticmethod
def paragraph(text):
return re.sub(r'(.*?)\n', r'\1
\n', text)
def main(text: str) -> str:
text = Header.header(text) # 渲染标题
text = Style(text)()
text = Function(text)()
# text = Basic.paragraph(text) # 渲染段落
return text
if __name__ == '__main__':
with open('test.md', encoding='utf-8') as test:
cd = f"""
页面标题
{main(test.read())}
"""
with open('test.html', 'w', encoding='utf-8') as html:
html.write(cd)