From d57651aee1a4a1ce7308b36210be7b59a49a07ed Mon Sep 17 00:00:00 2001
From: crossdark 自制的markdown,添加了一些自定义的语法
- 效果请见README.html
- 1 基本语法
- 1.1 标题
'
elif head in ('shell', 'python'):
- self.codes[index] = f'{code}
'
+ self.codes[
+ index] = f'{re.sub(f"({head})", "", code)}
'
elif head in ('mermaid',):
self.codes[index] = f'{re.sub(f"({head})", "", code)}
\1
', self.text) # 渲染有来源的引用
+ self.text = re.sub('> (.*?) --\[(.*?)]\n', r'\1
',
+ self.text) # 渲染有来源的引用
self.text = re.sub('> (.*?)\n', r'\1
\n', self.text) # 渲染没有来源的引用
return self.text
@@ -312,15 +316,19 @@ class Syllabus:
2 找到符合若干个‘数字+点+数字’且首尾都是数字的行
每个提纲编号全文只能出现一次
"""
+
def __init__(self, text: str):
self.text = text
- self.syllabus = {tuple(syllabus[0].split('.')): syllabus[1] for syllabus in [re.match(r'([\.|\d]+) ([^ ]+?)\n', i) for i in self.text.split('\n')] if syllabus is not None} # 找出提纲
- print(self.syllabus)
def __call__(self, *args, **kwargs):
- for num, txt in self.syllabus.items():
- self.text = re.sub(f'{".".join(num)} {re.escape(txt)}', f'{"#" * len(num)}{".".join(num)} {txt}{{#' + '.'.join(num) + f'}}\n', self.text) # 按照层级为提纲添加不同等级的标题并创建锚点
- return self.text
+ return '\n'.join([
+ (lambda match, origen:
+ re.sub(f'^({match.groups()[0]})',
+ fr'{"#" * len(match.groups()[0].split("."))} \1{{#' + match.groups()[0] + '}', origen)
+ if match is not None else origen) # 对于不是提纲的行,直接返回原始字符
+ (re.match(r'^([\d.]+) ', line), line) # 匹配提纲号
+ for line in self.text.splitlines() # 分割并遍历文本的每一行
+ ])
class Basic:
diff --git a/README.html b/README.html
index a36aaa0..ea74e2c 100644
--- a/README.html
+++ b/README.html
@@ -25,52 +25,52 @@
CrossDown
1.2 样式
- 1.2.1 斜体
- 1.2.2 粗体
- 1.2.3 粗斜体
- 1.2.4 下划线
- 1.2.5 删除线
- 1.2.6 高亮
- 1.2.7 在文本的正上方添加一行小文本
- 1.2.8 在指定的文本里面隐藏一段文本
- 1.2.9 分割线
1.3 链接 - 1.3.1 普通链接 - 链接文本 - CrossDark - 1.3.2 图片 - - - 1.3.3 变量链接 - 链接文本
-2 变量 - 2.1 定义
-2.2 赋值 - 值 锚点名 - 提纲的编号已经自动配置为了锚点,可直接使用{2} - 2.3 添加锚点 - - 3 代码块 - 3.1 单行 - 3.1.1 LaTex -
\(CO_2\)
-\(H_2O\)
- 3.2 多行 - 3.2.1 YAML -
+ 1.3 链接
+ 1.3.1 普通链接
+
+ 1.3.2 图片
+
+
+ 1.3.3 变量链接
+
+ 2 变量
+ 2.1 定义
+ 2.2 赋值
+ 值 锚点名
+ 提纲的编号已经自动配置为了锚点,可直接使用2
+ 2.3 添加锚点
+
+ 3 代码块
+ 3.1 单行
+ 3.1.1 LaTex
+ \(CO_2\)
+ \(H_2O\)
+ 3.2 多行
+ 3.2.1 YAML
+
A:
1. a
2. b
@@ -79,24 +79,24 @@
- a
- b
- c
-
- 3.2.2 Python
-
+
+ 3.2.2 Python
+
print('CrossDown')
-
- 3.2.3 Mermaid
-
+
+ 3.2.3 Mermaid
+
graph LR
A-->B
A-->C
B-->D
C-->D
-
- 4 转义
- \
+
+ 4 转义
+ \
\a
- *
- 5 引用
+ *
+ 5 引用
一级引用
@@ -116,27 +116,46 @@
引文内添加斜体粗体下划线删除线高亮
- 6 提纲
- 7 注释
- 7.1 强注释
- 7.2 弱注释
- 只有在
- // 代码中的注释弱不会被移除
- 8 列表
- 8.1 有序列表
- 1. a
- 2. b
- 3. c
- 4. d
- 8.2 无序列表
- - A
- - B
- - C
- - D
- 9 表格
- | 表头1 | 表头2 | 表头3 |
- | :--: | :--: | :--: |
- | 单元格1 | 单元格2 | 单元格3 |
- | 单元格4 | 单元格5 | 单元格6 |
+ 6 提纲
+ 7 注释
+ 7.1 强注释
+ 7.2 弱注释
+ 只有在
+ // 代码中的注释弱不会被移除
+ 8 列表
+ 8.1 有序列表
+ 1. a
+ 2. b
+ 3. c
+ 4. d
+ 8.2 无序列表
+
+ - A
+ - B
+ - C
+ - D
+
+ 9 表格
+
+
+
+ 表头1
+ 表头2
+ 表头3
+
+
+
+
+ 单元格1
+ 单元格2
+ 单元格3
+
+
+ 单元格4
+ 单元格5
+ 单元格6
+
+
+