forked from CrossDark/CrossDown
V0.3.2
This commit is contained in:
parent
79bd36867f
commit
c7b9d29b99
30
CrossDown.py
30
CrossDown.py
@ -164,9 +164,7 @@ class CodeBlock:
|
|||||||
if re.search(r'\n', code): # 是多行代码
|
if re.search(r'\n', code): # 是多行代码
|
||||||
head = re.findall(r'(.*?)\n', code)[0]
|
head = re.findall(r'(.*?)\n', code)[0]
|
||||||
if head in ('', 'yaml'):
|
if head in ('', 'yaml'):
|
||||||
pass
|
self.codes[index] = f'<pre><code class="language-yaml">{code}</code></pre>'
|
||||||
elif head == 'python':
|
|
||||||
pass
|
|
||||||
elif head == 'shell':
|
elif head == 'shell':
|
||||||
pass
|
pass
|
||||||
elif re.match(r'\$[^$]*\$', code): # 是LaTex代码
|
elif re.match(r'\$[^$]*\$', code): # 是LaTex代码
|
||||||
@ -211,34 +209,13 @@ class Escape:
|
|||||||
self.text = re.sub(fr'{index}', f'-@@-{index}-@@-', self.text) # 同时转译特殊字符
|
self.text = re.sub(fr'{index}', f'-@@-{index}-@@-', self.text) # 同时转译特殊字符
|
||||||
return self.text
|
return self.text
|
||||||
|
|
||||||
def rendering(self, values: Dict[str, str]):
|
|
||||||
"""
|
|
||||||
渲染代码
|
|
||||||
:param values: 变量字典
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
for index, code in enumerate(self.codes):
|
|
||||||
if re.match(r'\{[^$]*}', code): # 是变量
|
|
||||||
# 给变量赋值
|
|
||||||
key = re.findall(r'\{([^}]+)}', code)[0] # 查找变量名
|
|
||||||
code = re.sub(r'\{' + key + '}', fr'{values[key]}', code)
|
|
||||||
self.codes[index] = code # 给变量赋值
|
|
||||||
if re.search(r'\n', code): # 是多行代码
|
|
||||||
head = re.findall(r'(.*?)\n', code)[0]
|
|
||||||
if head == 'python':
|
|
||||||
pass
|
|
||||||
elif head == 'shell':
|
|
||||||
pass
|
|
||||||
elif re.match(r'\$[^$]*\$', code): # 是LaTex代码
|
|
||||||
self.codes[index] = re.sub(fr'\$([^$]*)\$', r'\(\1\)', code)
|
|
||||||
|
|
||||||
def restore(self, new_text: str):
|
def restore(self, new_text: str):
|
||||||
"""
|
"""
|
||||||
将渲染好的代码重新放回处理好的正文
|
将渲染好的代码重新放回处理好的正文
|
||||||
:param new_text: 处理好的正文
|
:param new_text: 处理好的正文
|
||||||
:return: 加上代码的文章
|
:return: 加上代码的文章
|
||||||
"""
|
"""
|
||||||
for index, item in enumerate(self.codes):
|
for index, item in enumerate(self.escapes):
|
||||||
new_text = re.sub(fr'-@@-{index}-@@-', f'{item}', new_text, flags=re.DOTALL)
|
new_text = re.sub(fr'-@@-{index}-@@-', f'{item}', new_text, flags=re.DOTALL)
|
||||||
return new_text
|
return new_text
|
||||||
|
|
||||||
@ -257,7 +234,7 @@ class Basic:
|
|||||||
[
|
[
|
||||||
f'<p>{line}</p>' for line in self.text.splitlines() if
|
f'<p>{line}</p>' for line in self.text.splitlines() if
|
||||||
not re.search( # 把所有非空的行都套上<p>标签
|
not re.search( # 把所有非空的行都套上<p>标签
|
||||||
r'^\s*\n?$', line # 识别空行或空白行
|
r'^\s*\n?$', line # 识别空行或空白行 TODO 还应识别-@@-n-@@-
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -324,6 +301,7 @@ if __name__ == '__main__':
|
|||||||
<script type="text/javascript" async
|
<script type="text/javascript" async
|
||||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML">
|
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML">
|
||||||
</script>
|
</script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-yaml.min.js"></script>
|
||||||
<!-- 可以在这里添加其他元数据和CSS链接 -->
|
<!-- 可以在这里添加其他元数据和CSS链接 -->
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
Loading…
Reference in New Issue
Block a user