diff --git a/CrossDown/Core.py b/CrossDown/Core.py
new file mode 100644
index 0000000..6af8bd2
--- /dev/null
+++ b/CrossDown/Core.py
@@ -0,0 +1,96 @@
+from markdown.extensions import Extension
+from markdown.treeprocessors import Treeprocessor
+from markdown.inlinepatterns import Pattern
+from markdown.preprocessors import Preprocessor
+from markdown import Markdown
+from typing import *
+import re
+
+
+Extensions = {
+ "Extra": "markdown.extensions.extra",
+ "Abbreviations": "markdown.extensions.abbr",
+ "Attribute Lists": "markdown.extensions.attr_list",
+ "Definition Lists": "markdown.extensions.def_list",
+ "Fenced Code Blocks": "markdown.extensions.fenced_code",
+ "Footnotes": "markdown.extensions.footnotes",
+ "Tables": "markdown.extensions.tables",
+ # "Smart Strong": "markdown.extensions.smart_strong",
+ "Admonition": "markdown.extensions.admonition",
+ "CodeHilite": "markdown.extensions.codehilite",
+ # "HeaderId": "markdown.extensions.headerid",
+ "Meta-Data": "markdown.extensions.meta",
+ "New Line to Break": "markdown.extensions.nl2br",
+ "Sane Lists": "markdown.extensions.sane_lists",
+ "SmartyPants": "markdown.extensions.smarty",
+ "Table of Contents": "markdown.extensions.toc",
+ "WikiLinks": "markdown.extensions.wikilinks",
+}
+
+
+class Style(Preprocessor):
+ """
+ 渲染字体样式
+ """
+
+ @staticmethod
+ def underline(text):
+ """
+ ~下划线~
+ :return:
+ """
+ return re.sub(r'~([^~\n]+)~', r'\1', text)
+
+ @staticmethod
+ def strikethrough(text):
+ """
+ ~~删除线~~
+ :return:
+ """
+ return re.sub(r'~~([^~\n]+)~~', r'\1', text)
+
+ @staticmethod
+ def highlight(text):
+ """
+ ==高亮==
+ :return:
+ """
+ return re.sub(r'==([^=\n]+)==', r'\1', text)
+
+ @staticmethod
+ def up(text):
+ """
+ [在文本的正上方添加一行小文本]^(主要用于标拼音)
+ :return:
+ """
+ return re.sub(r'\[(.*?)]\^\((.*?)\)', r'\1', text)
+
+ @staticmethod
+ def hide(text):
+ """
+ [在指定的文本里面隐藏一段文本]-(只有鼠标放在上面才会显示隐藏文本)
+ :return:
+ """
+ return re.sub(r'\[(.*?)]-\((.*?)\)', r'\1', text)
+
+ def run(self, lines):
+ new_line = []
+ for line in lines:
+ line = self.strikethrough(line) # 渲染删除线
+ line = self.underline(line) # 渲染下划线
+ line = self.highlight(line) # 渲染高亮
+ line = self.up(line) # 渲染上部文本
+ line = self.hide(line) # 渲染隐藏文本
+ new_line.append(line)
+ return new_line
+
+
+class Core(Extension):
+ def extendMarkdown(self, md):
+ md.registerExtension(self) # 注册扩展
+ md.preprocessors.register(Style(md), 'custom_preprocessor', 0)
+
+
+def main(text):
+ md = Markdown(extensions=[Core()] + list(Extensions.values()))
+ return md.convert(text), md.Meta
diff --git a/CrossDown/CrossDown.py b/CrossDown/CrossDown.py
deleted file mode 100644
index 3c8321f..0000000
--- a/CrossDown/CrossDown.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from markdown.extensions import Extension
-from markdown.treeprocessors import Treeprocessor
-from markdown.inlinepatterns import Pattern
-from markdown import Markdown
diff --git a/CrossDown/__init__.py b/CrossDown/__init__.py
index e69de29..5f80377 100644
--- a/CrossDown/__init__.py
+++ b/CrossDown/__init__.py
@@ -0,0 +1,54 @@
+from typing import *
+from .Core import main
+
+
+__all__ = [
+ 'main', # 主函数
+ 'indent', # 添加空格
+ 'HEAD', #
+ 'BODY', #
+]
+__version__ = '0.11.2'
+__author__ = 'CrossDark'
+__email__ = 'liuhanbo333@icloud.com'
+__source__ = 'https://crossdark.net/'
+__license__ = """MIT"""
+
+
+HEAD = (
+ '',
+ '',
+ '',
+ '',
+ '',
+ ''
+)
+
+BODY = (
+ '',
+ '',
+)
+
+
+def indent(input_: Union[str, List, Tuple], indent_spaces: int = 4) -> str:
+ """
+ 给字符串中的每一行前面加上缩进。
+ :param input_: 原始字符串,可以包含多行。
+ :param indent_spaces: 每行前面要添加的空格数,默认为4。
+ :return: 带缩进的新字符串。
+ """
+ # 使用字符串的splitlines()方法分割原始字符串为行列表,如果是可迭代对象则直接遍历
+ # 遍历行列表,给每行前面加上相应的缩进,并重新组合成字符串
+ return "\n".join(
+ f"{' ' * indent_spaces}{line}" for line in (lambda x: x.splitlines() if isinstance(x, str) else x)(input_))
diff --git a/CrossDown.py b/CrossDown_.py
similarity index 99%
rename from CrossDown.py
rename to CrossDown_.py
index eddaf31..a161f34 100644
--- a/CrossDown.py
+++ b/CrossDown_.py
@@ -6,7 +6,6 @@ import markdown
try: # 检测当前平台是否支持扩展语法
import CrossMore
-
EXTRA_ABLE = True
except ModuleNotFoundError:
EXTRA_ABLE = False
diff --git a/README.html b/README.html
index 8b77047..17a6056 100644
--- a/README.html
+++ b/README.html
@@ -29,10 +29,6 @@
title: "Markdown文档标题"
- author: "作者姓名"
- date: "2024-09-26"
自制的markdown,添加了一些自定义的语法 +
自制的markdown,添加了一些自定义的语法
效果请见README.html
1 基本语法
+1.1 标题
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 普通链接
-1.3.2 图片
-1.3.3 变量链接
-值 锚点名
-提纲的编号已经自动配置为了锚点,可直接使用2
--
\(CO_2\)
-\(H_2O\)
--
-
-
- A:
+ 2 变量
+ 2.1 定义
+ {变量名} = 值
+ 2.2 赋值
+ {变量名} {锚点名}
+ 提纲的编号已经自动配置为了锚点,可直接使用{2}
+ 2.3 添加锚点
+ {#锚点名}
+ 3 代码块
+ 3.1 单行
+ 3.1.1 LaTex
+ $CO_2$
+ $H_2O$
+ 3.1.2 函数
+ ¥y=x*2+1¥
// 不定义范围
+ ¥y=x**2¥€-50,50€
// 定义了x范围
+ ¥y=x**3¥€-50,50|-100,100€
// 定义了y范围
+ 3.2 多行
+ 3.2.1 YAML
+ A:
1. a
2. b
3. c
B:
- a
- b
- - c
-
-
- print('CrossDown')
-
- 3.2.2 Python
+python
+ print('CrossDown')
3.2.3 Mermaid
+mermaid
graph LR
- A-->B
- A-->C
- B-->D
- C-->D
-
4 转义
\
\a
*
-5 引用
-一级引用
@@ -214,37 +142,37 @@引文内添加斜体粗体下划线
删除线高亮
6 提纲
+6.1 提纲号
以数字和点组成,通过空格与提纲名分隔,例如:
-6.1.1 提纲号示例
点不能出现在开头或结尾,例如
.6.1.2 错误示范
6.1.3. 错误示范
不能出现两个及以上连续的点,例如:
-6..1...4 错误示范
- -只有在
-// 代码中的注释弱不会被移除
-6..1…4 错误示范
+提纲号会被自动配置为锚点,可直接使用{6}{6.1}
+7 注释
+7.1 强注释
+|=
+ 无论如何都会被移除
+ 放在代码块里也没用
+ =|
7.2 弱注释
+只有在 // 后面才会被移除
+// 代码中的注释弱不会被移除
8 列表
+8.1 有序列表
+ 1. a
+ 2. b
+ 3. c
+ 4. d
8.2 无序列表
+ - A
+ - B
+ - C
+ - D
9 表格
10 警告
这是一条警告
🚴
-😃
+11 Emoji
+:person_biking:
+:grinning_face_with_big_eyes: