diff --git a/CrossDown/Core.py b/CrossDown/Core.py index 9939cab..f11b38b 100644 --- a/CrossDown/Core.py +++ b/CrossDown/Core.py @@ -150,9 +150,12 @@ class Syllabus(BlockProcessor): return re.match(self.syllabus_re, block) def run(self, parent, blocks): - # 处理匹配的块 - for num, block in enumerate(blocks): - pass + syllabus = re.match(self.syllabus_re, blocks[0]) # 匹配提纲的号和内容 + header = xml.etree.ElementTree.SubElement(parent, f'h{len(syllabus.group(1).split("."))}') # 按照提纲号等级创建标题 + header.set('id', syllabus.group(1)) # 设置提纲ID + header.text = syllabus.group(1) + ' ' + syllabus.group(3) # 设置提纲内容 + blocks[0] = '' + return False class BoxBlockProcessor(BlockProcessor): @@ -201,9 +204,19 @@ class Basic(Extension): r'\[(.*?)]-\((.*?)\)', tag='span', property_='title'), 'hide', 0 ) # [在指定的文本里面隐藏一段文本]-(只有鼠标放在上面才会显示隐藏文本) md.inlinePatterns.register(Emoji(r':(.+?):'), 'emoji', 0) # 将emoji短代码转换为emoji字符 - md.inlinePatterns.register(Syllabus(r'(\d+(\.\d+)*)\s+(.*)'), 'syllabus', 0) # 渲染提纲 + md.parser.blockprocessors.register(Syllabus(md.parser), 'syllabus', 11) # 渲染提纲 + + +class Box(Extension): + """ + 渲染外框 + """ + + def extendMarkdown(self, md): + md.registerExtension(self) # 注册扩展 + md.parser.blockprocessors.register(BoxBlockProcessor(md.parser), 'box', 175) def main(text: str) -> Tuple[str, Dict[str, List[str]]]: - md = Markdown(extensions=[Basic()] + list(Extensions.values()), safe_mode=False) + md = Markdown(extensions=[Basic(), Box()] + list(Extensions.values()), safe_mode=False) return md.convert(text), md.Meta diff --git a/README.html b/README.html index c4f3dfb..8a5a5ce 100644 --- a/README.html +++ b/README.html @@ -94,12 +94,10 @@
自制的markdown,添加了一些自定义的语法klzzwxh:0001效果请见klzzwxh:0000
-
直接在文本中使用 缩写 即可
-
{#锚点名}
-
单行
$CO_2$
$H_2O$
¥y=x*2+1¥
// 不定义范围
¥y=x**2¥€-50,50€
// 定义了x范围
¥y=x**3¥€-50,50|-100,100€
// 定义了y范围
{强调文本}
A:
1. a
2. b
@@ -238,15 +185,11 @@
- c
print('CrossDown')
graph LR
A-->B
A-->C
@@ -254,15 +197,11 @@
C-->D
\
\a
*
-
-一级引用
@@ -280,58 +219,36 @@
引文内添加klzzwxhklzzwxhklzzwxh:00990096klzzwxh:0097
+引文内添加klzzwxhklzzwxhklzzwxh:00420039klzzwxh:0040
-
以数字和点组成,通过空格与提纲名分隔,例如:
-
点不能出现在开头或结尾,例如
-.
.7.1.2 错误示范
7.1.3. 错误示范
不能出现两个及以上连续的点,例如:
-7..1…
7..1…4 错误示范
提纲号会被自动配置为锚点,可直接使用{7}76.1}
-
|=klzzwxhklzzwxhklzzwxh:00690064klzzwxh:0067=|
-+
|=klzzwxhklzzwxhklzzwxh:00310026klzzwxh:0029=|
只有在 // 后面才会被移除
// 代码中的注释弱不会被移除
-
+
警告标题
警告内容
🚴
这是一个笑脸😃图案
-
这是一个1
-
通过一下代码可以将文章中所有的脚注定义集中于一处
否则所有定义将被集中在文章末尾
--
!!!警告!!!
+这是一条警告
+