Skip to content

Commit e17e3a3

Browse files
committed
feat(parser): add test for Markdown to HTML conversion #331
- Added `MarkdownToHtmlConverterTest` to verify conversion of markdown to HTML. - Updated `MarkdownToHtmlConverter` to handle `<THOUGHT>` and `<PLAN>` tags. - Simplified `SketchToolWindow` panel initialization. - Refactored `CustomLLMProvider` logic for plan model updates.
1 parent d4581f5 commit e17e3a3

File tree

4 files changed

+75
-13
lines changed

4 files changed

+75
-13
lines changed

core/src/main/kotlin/cc/unitmesh/devti/llms/custom/CustomLLMProvider.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,11 @@ class CustomLLMProvider(val project: Project, var llmConfig: LlmConfig = LlmConf
121121
*/
122122
private fun CustomLLMProvider.tryUpdateModelForPlan(systemPrompt: String): LlmConfig {
123123
val canBePlanLength = 3
124-
if (messages.size == canBePlanLength) {
125-
messages[0] = Message("system", systemPrompt)
126-
}
127-
128124
return if (messages.size == canBePlanLength && LlmConfig.hasPlanModel()) {
125+
if (messages.size == canBePlanLength) {
126+
messages[0] = Message("system", systemPrompt)
127+
}
128+
129129
backupLlmConfigForPlan = llmConfig
130130
LlmConfig.load(ModelType.Plan).first()
131131
} else {

core/src/main/kotlin/cc/unitmesh/devti/sketch/SketchToolWindow.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,8 @@ open class SketchToolWindow(
6868

6969
private var thinkingHighlight: CodeHighlightSketch =
7070
CodeHighlightSketch(project, "<Thinking />", PlainTextLanguage.INSTANCE)
71-
private var thinkingPanel = panel {
72-
row {
73-
cell(thinkingHighlight).fullWidth()
74-
}
75-
}
71+
72+
private var thinkingPanel = thinkingHighlight
7673

7774
private var inputSection: AutoDevInputSection = AutoDevInputSection(project, this, showAgent = false)
7875

core/src/main/kotlin/cc/unitmesh/devti/util/parser/MarkdownToHtmlConverter.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import org.intellij.markdown.parser.MarkdownParser
1010
private val embeddedHtmlType = IElementType("ROOT")
1111

1212
fun convertMarkdownToHtml(markdownText: String): String {
13-
val flavour = GFMFlavourDescriptor()
14-
val parsedTree = MarkdownParser(flavour).parse(embeddedHtmlType, markdownText)
15-
return HtmlGenerator(markdownText, parsedTree, flavour).generateHtml()
16-
}
13+
val flavour = GFMFlavourDescriptor()
14+
val markdownText = markdownText
15+
.replace("<THOUGHT>\n<PLAN>", "```plan\n")
16+
.replace("</PLAN>\n</THOUGHT>", "```\n")
17+
18+
val parsedTree = MarkdownParser(flavour).parse(embeddedHtmlType, markdownText)
19+
return HtmlGenerator(markdownText, parsedTree, flavour, false).generateHtml()
20+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package cc.unitmesh.devti.util.parser
2+
3+
import org.assertj.core.api.Assertions.assertThat
4+
import kotlin.test.Test
5+
6+
class MarkdownConverterTest {
7+
8+
@Test
9+
fun should_convert_simple_markdown_to_html() {
10+
// Given
11+
val markdownText = """
12+
<THOUGHT>
13+
<PLAN>
14+
1. 领域模型重构:
15+
- 将BlogPost实体合并到Blog聚合根,建立完整的领域对象
16+
- 添加领域行为方法(发布、审核、评论等)
17+
- 引入值对象(BlogId、Content等)
18+
19+
2. 分层结构调整:
20+
- 清理entity层冗余对象,建立清晰的domain层
21+
- 实现领域服务与基础设施层分离
22+
- 重构数据持久化接口
23+
24+
3. 战术模式实现:
25+
- 使用工厂模式处理复杂对象创建
26+
- 实现仓储接口与领域层的依赖倒置
27+
- 添加领域事件机制
28+
29+
4. 测试保障:
30+
- 重构单元测试,验证领域模型行为
31+
- 添加聚合根不变性约束测试
32+
</PLAN>
33+
</THOUGHT>
34+
""".trimIndent()
35+
val expectedHtml = "<pre><code class=\"language-plan\">\n" +
36+
"1. 领域模型重构:\n" +
37+
"- 将BlogPost实体合并到Blog聚合根,建立完整的领域对象\n" +
38+
"- 添加领域行为方法(发布、审核、评论等)\n" +
39+
"- 引入值对象(BlogId、Content等)\n" +
40+
"\n" +
41+
"2. 分层结构调整:\n" +
42+
"- 清理entity层冗余对象,建立清晰的domain层\n" +
43+
"- 实现领域服务与基础设施层分离\n" +
44+
"- 重构数据持久化接口\n" +
45+
"\n" +
46+
"3. 战术模式实现:\n" +
47+
"- 使用工厂模式处理复杂对象创建\n" +
48+
"- 实现仓储接口与领域层的依赖倒置\n" +
49+
"- 添加领域事件机制\n" +
50+
"\n" +
51+
"4. 测试保障:\n" +
52+
"- 重构单元测试,验证领域模型行为\n" +
53+
"- 添加聚合根不变性约束测试\n" +
54+
"</code></pre>"
55+
// When
56+
val resultHtml = convertMarkdownToHtml(markdownText)
57+
58+
// Then
59+
assertThat(resultHtml).isEqualTo(expectedHtml)
60+
}
61+
}

0 commit comments

Comments
 (0)