🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
MarkdownHTML.hpp
浏览该文件的文档.
1
22
23#pragma once
24
25#include "AstGlobal.h"
26#include "MarkdownSax.hpp"
27#include <string>
28#include <vector>
29
30AST_NAMESPACE_BEGIN
31
48class AST_UTIL_API MarkdownHTML: public MarkdownSax
49{
50public:
53 explicit MarkdownHTML(bool compact = false)
54 : compact_(compact) {}
55 ~MarkdownHTML() = default;
56
58 void setCompact(bool compact) { compact_ = compact; }
60 bool isCompact() const { return compact_; }
61
62 // 文档生命周期
63 void startDocument() override;
64 void endDocument() override;
65
66 // 块级元素
67 void startHeading(int level) override;
68 void endHeading(int level) override;
69
70 void startParagraph() override;
71 void endParagraph() override;
72
73 void startCodeBlock(StringView language) override;
74 void codeLine(StringView line) override; // 代码行
75 void endCodeBlock() override;
76
77 void startList(bool ordered) override; // true: 有序, false: 无序
78 void startListItem() override;
79 void endListItem() override;
80 void endList() override;
81
82 void startBlockquote() override;
83 void endBlockquote() override;
84
85 void horizontalRule() override;
86
87 // 表格
88 void startTable() override;
89 void startTableHead() override;
90 void endTableHead() override;
91 void startTableBody() override;
92 void endTableBody() override;
93 void startTableRow() override;
94 void endTableRow() override;
95 void startTableCell(ETableAlign align) override;
96 void endTableCell() override;
97 void endTable() override;
98
99 // 行内元素
100 void text(StringView txt) override;
101 void startEmphasis() override; // 斜体
102 void endEmphasis() override;
103 void startStrong() override; // 粗体
104 void endStrong() override;
105 void startDelete() override; // 删除线
106 void endDelete() override;
107 void codeSpan(StringView code) override;
108 void startLink(StringView url) override;
109 void endLink() override;
110 void image(StringView alt, StringView url) override;
111
112public:
114 std::string& output() { return output_; }
115 const std::string& output() const { return output_; }
116 void clearOutput() { output_.clear(); }
117
118private:
120 static void appendEscaped(std::string& out, StringView text);
121
123 void appendIndent(size_t depth);
124
126 void appendNewline();
127
128 // ---- 输出缓冲 ----
129 std::string output_;
130
131 // ---- 格式化控制 ----
132 bool compact_ = false;
133
134 // ---- 块级状态 ----
135 std::vector<bool> listStack_;
136 int blockquoteDepth_ = 0;
137 int lastEndListDepth_ = -1;
138
139 // ---- 表格状态 ----
140 bool inTableHead_ = false;
141
142 // ---- 链接状态 ----
143 std::string linkUrl_;
144};
145
146
149AST_NAMESPACE_END
Markdown SAX → HTML 渲染器
定义 MarkdownHTML.hpp:49
MarkdownHTML(bool compact=false)
构造函数
定义 MarkdownHTML.hpp:53
bool isCompact() const
获取当前是否为紧凑输出模式
定义 MarkdownHTML.hpp:60
std::string & output()
获取输出的 HTML 字符串
定义 MarkdownHTML.hpp:114
void setCompact(bool compact)
设置紧凑/格式化输出模式
定义 MarkdownHTML.hpp:58
定义 MarkdownSax.hpp:45
virtual void endTableHead()
表头区域结束
定义 MarkdownSax.hpp:86
virtual void startHeading(int level)=0
virtual void endTableBody()
表体区域结束
定义 MarkdownSax.hpp:90
virtual void endTableRow()
表格行结束
定义 MarkdownSax.hpp:94
virtual void startTableRow()
表格行开始
定义 MarkdownSax.hpp:92
virtual void startTableBody()
表体区域开始
定义 MarkdownSax.hpp:88
virtual void endTableCell()
表格单元格结束
定义 MarkdownSax.hpp:99
virtual void endTable()
表格结束
定义 MarkdownSax.hpp:101
virtual void startTableHead()
表头区域开始
定义 MarkdownSax.hpp:84
virtual void startTableCell(ETableAlign align)
表格单元格开始
定义 MarkdownSax.hpp:97
virtual void startTable()
表格开始
定义 MarkdownSax.hpp:82
ETableAlign
表格列对齐方式
定义 MarkdownSax.hpp:36