diff --git a/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/helper/MdHelper.java b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/helper/MdHelper.java new file mode 100644 index 0000000..5fc9958 --- /dev/null +++ b/leopard-server/src/main/java/com/lanyuanxiaoyao/leopard/server/helper/MdHelper.java @@ -0,0 +1,1246 @@ +package com.lanyuanxiaoyao.leopard.server.helper; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.StringJoiner; +import lombok.Getter; +import lombok.Setter; + +/** + * Markdown文档构建助手类 + * + *
该类提供了一套流畅的API,用于构建结构化的Markdown文档。 + * 支持标题、列表、代码块、表格、链接等多种Markdown元素的构建。
+ * + *MdHelper采用构建器模式和树形结构设计,通过Section(节)组织文档结构, + * 每个Section可以包含子Section,形成树形的文档结构。使用时通过{@link #of()}方法 + * 获取初始构建器,然后通过链式调用添加各种元素,最后调用{@link SectionBuilder#build()} + * 方法生成Markdown文本。
+ * + *使用示例:
+ *
+ * String markdown = MdHelper.of()
+ * .bigTitle("主标题")
+ * .title("副标题")
+ * .text("这是一段普通文本")
+ * .ul()
+ * .text("无序列表项1")
+ * .text("无序列表项2")
+ * .endUl()
+ * .build();
+ *
+ *
+ * @author liuqichun03
+ * @since 2022/11/8
+ */
+public class MdHelper {
+
+
+ /**
+ * 创建一个新的Markdown文档构建器
+ *
+ * @return SectionBuilder 文档构建器实例
+ */
+ public static SectionBuilder of() {
+ return new SectionBuilder(new Section(Section.Type.NORMAL, null, null, null, 0));
+ }
+
+
+ /**
+ * 文本样式枚举
+ *
+ * 定义了Markdown文本支持的各种样式,包括粗体、斜体、颜色等。
+ */ + @Getter + public enum Style { + /** + * 普通文本样式 + */ + NORMAL("normal"), + + /** + * 粗体样式 + */ + BOLD("bold"), + + /** + * 斜体样式 + */ + ITALIC("italic"), + + /** + * 红色文本 + */ + RED("red"), + + /** + * 绿色文本 + */ + GREEN("green"), + + /** + * 灰色文本 + */ + GRAY("gray"), + + /** + * 黄色文本 + */ + YELLOW("gold"), + + /** + * 蓝色文本 + */ + BLUE("blue"); + + private final String name; + + Style(String name) { + this.name = name; + } + } + + /** + * 字体样式处理类 + * + *用于处理文本的样式,支持组合多种样式。
+ */ + public static class Fonts { + /** + * 空字体实例 + */ + public static final Fonts EMPTY = Fonts.of(""); + private final String text; + private Set