diff --git a/CrossDown.py b/CrossDown.py
index 8c641b6..e8612f8 100644
--- a/CrossDown.py
+++ b/CrossDown.py
@@ -10,30 +10,6 @@ except ModuleNotFoundError:
EXTRA_ABLE = False
-class Header:
- def __init__(self, text: str):
- self.text = text
-
- def __call__(self, *args, **kwargs):
- """
- 渲染标题
- # 一级标题
- ## 二级标题
- ### 三级标题
- #### 四级标题
- ##### 五级标题
- ###### 六级标题
- :return: 处理后的文本
- """
- h6 = re.sub(r'###### (.*?)\n', r'
\1
\n', self.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:
"""
渲染字体样式
@@ -46,20 +22,6 @@ class Style:
"""
self.text = text
- def italic(self):
- """
- *斜体*
- :return:
- """
- self.text = re.sub(r'\*([^*\n]+)\*', r'\1', self.text)
-
- def bold(self):
- """
- **粗体**
- :return:
- """
- self.text = re.sub(r'\*\*([^*\n]+)\*\*', r'\1', self.text)
-
def underline(self):
"""
~下划线~
@@ -95,19 +57,6 @@ class Style:
"""
self.text = re.sub(r'\[(.*?)]-\((.*?)\)', r'\1', self.text)
- def split_line(self):
- """
- 添
- ***
- 加
- ___
- 分
- ---
- 隔
- :return:
- """
- self.text = re.sub(r'([*_-]){3}\n', r'
', self.text)
-
def __call__(self, *args, **kwargs):
"""
一键运行
@@ -115,52 +64,11 @@ class Style:
:param kwargs:
:return:
"""
- # self.bold()
- # self.italic()
self.strikethrough()
self.underline()
self.highlight()
self.up()
self.hide()
- # self.split_line()
- return self.text
-
-
-class Link:
- """
- 添加链接
- """
-
- def __init__(self, text: str):
- """
- 初始化
- :param text: cd文本
- """
- self.text = text
-
- def image(self):
- """
- ![链接图片](链接地址)
- :return:
- """
- self.text = re.sub(r'!\[([^\[\]\n]+)]\(([^()\n]+)\)', r'', self.text)
-
- def link(self):
- """
- [链接文本](链接地址)
- :return:
- """
- self.text = re.sub(r'\[([^\[\]\n]+)]\(([^()\n]+)\)', r'\1', self.text)
-
- def __call__(self, *args, **kwargs):
- """
- 一键运行
- :param args:
- :param kwargs:
- :return:
- """
- self.image()
- self.link()
return self.text
@@ -269,70 +177,6 @@ class CodeBlock:
return new_text
-class Escape: # TODO 还有点问题
- """
- 转义\后字符
- """
-
- def __init__(self, text: str):
- """
- 找出转义符并转义
- :param text: 输入的文本
- """
- self.text = text
- self.escapes = {
- i: f'\0\1\2{i}\2\1\0' for i in re.findall(r'(\\.)', text)
- } # 找出要转义的字符
-
- def __call__(self, *args, **kwargs):
- """
- 临时移除代码块
- :param args:
- :param kwargs:
- :return: 不含代码的文本
- """
- for index, item in self.escapes.items(): # 替换代码块为\0\1\2(id)\2\1\0
- self.text = re.sub(fr'{re.escape(index)}', re.escape(item), self.text) # 同时转译特殊字符
- print(item)
- return self.text
-
- def back(self, text):
- """
- 将被转义的字符放回文本中
- :param text: 新文本
- :return: 放回转义字符的文本
- """
- for index, item in self.escapes.items(): # 替换\0\1\2(id)\2\1\0为转义字符
- print(item)
- self.text = re.sub(item, '', text) # 同时转译特殊字符
- return self.text
-
- def restore(self, new_text: str):
- """
- 将渲染好的代码重新放回处理好的正文
- :param new_text: 处理好的正文
- :return: 加上代码的文章
- """
- for index, item in enumerate(self.escapes):
- new_text = re.sub(fr'-@@-{index}-@@-', f'{item}', new_text, flags=re.DOTALL)
- return new_text
-
-
-class Cite:
- """
- > 渲染引用 --[引用来源]
- """
-
- def __init__(self, text):
- self.text = text
-
- def __call__(self, *args, **kwargs) -> str:
- self.text = re.sub('> (.*?) --\[(.*?)]\n', r'\1
',
- self.text) # 渲染有来源的引用
- self.text = re.sub('> (.*?)\n', r'\1
\n', self.text) # 渲染没有来源的引用
- return self.text
-
-
class Syllabus:
"""
1. 找到提纲
@@ -343,7 +187,7 @@ class Syllabus:
def __init__(self, text: str):
self.text = text
- def __call__(self, *args, **kwargs):
+ def __call__(self, *args, **kwargs) -> str:
return '\n'.join([
(lambda match, origen:
re.sub(f'^({match.groups()[0]})', # 按照提纲等级添加#和锚点
@@ -381,26 +225,6 @@ class Basic:
"""
return re.sub('// .*?\n', '\n', text)
- def paragraph(self):
- """
- 为普通的行套上段落标签
- """
- # TODO 有点问题
- self.text = re.sub(r'(<.+?>.*?<.+?>)
\n',
- r'\1\n', # 移除已被标签包裹的行的额外的标签
- '\n'.join(
- [
- f'
{line}
' if not re.search('\0.+?\0', line) else line # 识别-@@-n-@@-并保留
- for line in self.text.splitlines() # 把所有非空的行都套上标签
- if not re.search(r'^\s*\n?$', line) # 识别空行或空白行
- ]
- )
- )
-
- def __call__(self, *args, **kwargs):
- self.paragraph()
- return self.text
-
def add_indent_to_string(input_string: str, indent_spaces: int = 4):
"""
@@ -424,20 +248,11 @@ def body(text: str) -> Tuple[str, Dict[str, str]]:
:param text: 输入正文
:return: 输出渲染后的正文
"""
- # escape = Escape(text) # 转义
- # text = escape()
text = Basic.week_annotation(text) # 移除弱注释
text = Syllabus(text)() # 渲染提纲
text, values = Value(text)() # 提取变量并赋值到文本中
- # text = Header(text)() # 渲染标题
text = Style(text)() # 渲染字体样式
- # text = Link(text)() # 渲染特殊功能
- # text = Cite(text)() # 渲染引用
- # text = Basic(text)() # 渲染基础格式
text = markdown.markdown(text, extensions=['markdown.extensions.extra']) # 渲染标准markdown
- # text = escape.back(text) # 放回被转义的字符
-
- # text = Basic.paragraph(text) # 渲染段落
return text, values
diff --git a/README.html b/README.html
index 91a8835..3dfd315 100644
--- a/README.html
+++ b/README.html
@@ -127,6 +127,8 @@
点不能出现在开头或结尾,例如
.6.1.2 错误示范
6.1.3. 错误示范
+ 不能出现两个及以上连续的点,例如:
+ 6..1...4 错误示范
提纲号会被自动配置为锚点,可直接使用66.1
7 注释
7.1 强注释
diff --git a/README.md b/README.md
index 4e39604..d185482 100644
--- a/README.md
+++ b/README.md
@@ -97,6 +97,10 @@ graph LR
6.1.3. 错误示范
+不能出现两个及以上连续的点,例如:
+
+6..1...4 错误示范
+
提纲号会被自动配置为锚点,可直接使用{6}{6.1}
7 注释