From 87db7c91fe0edf1ed02deb3c8362fdd739d9b3f8 Mon Sep 17 00:00:00 2001 From: crossdark Date: Wed, 28 Aug 2024 15:16:50 +0800 Subject: [PATCH] V0.1 --- CrossDown.py | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 CrossDown.py diff --git a/CrossDown.py b/CrossDown.py new file mode 100644 index 0000000..e79da3e --- /dev/null +++ b/CrossDown.py @@ -0,0 +1,127 @@ +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 = main(test.read()) + with open('test.html', 'w', encoding='utf-8') as html: + html.write(cd)