Skip to content

Commit

Permalink
fix: fix markdown code error issue
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Jan 2, 2024
1 parent 4d25054 commit 08fd4a7
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cc.unitmesh.cf.core.parser

class MarkdownCode(val language: String, val text: String, isComplete: Boolean = true) {
class MarkdownCode(val language: String, val text: String, val isComplete: Boolean = true) {
companion object {
fun parse(content: String): MarkdownCode {
val regex = Regex("```([\\w#+]*)")
Expand Down Expand Up @@ -45,7 +45,12 @@ class MarkdownCode(val language: String, val text: String, isComplete: Boolean =
}

if (!codeClosed) {
return MarkdownCode(languageId ?: "", codeBuilder.toString(), false)
val text = codeBuilder.toString()
if (text.isBlank()) {
return MarkdownCode(languageId ?: "", content, true)
}

return MarkdownCode(languageId ?: "", text, false)
}

val trimmedCode = codeBuilder.substring(startIndex, endIndex + 1).toString()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package cc.unitmesh.cf.core.parser;

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class MarkdownCodeTest {

@Test
fun should_parseMarkdownCode_when_validContentProvided() {
// given
val content = """
```kotlin
val message = "Hello, World!"
println(message)
```
""".trimIndent()

// when
val markdownCode = MarkdownCode.parse(content)

// then
assertEquals("kotlin", markdownCode.language)
assertEquals("val message = \"Hello, World!\"\nprintln(message)", markdownCode.text)
}

@Test
fun should_parseMarkdownCode_withEmptyLanguage_when_noLanguageSpecified() {
// given
val content = """
```
val message = "Hello, World!"
println(message)
```
""".trimIndent()

// when
val markdownCode = MarkdownCode.parse(content)

// then
assertEquals("", markdownCode.language)
assertEquals("val message = \"Hello, World!\"\nprintln(message)", markdownCode.text)
}

@Test
fun should_parseMarkdownCode_withIncompleteCode_when_codeNotClosed() {
// given
val content = """
```kotlin
val message = "Hello, World!"
println(message)
""".trimIndent()

// when
val markdownCode = MarkdownCode.parse(content)

// then
assertEquals("kotlin", markdownCode.language)
assertEquals("val message = \"Hello, World!\"\nprintln(message)\n", markdownCode.text)
assertEquals(false, markdownCode.isComplete)
}

@Test
fun should_parseMarkdownCode_withTrimmedCode_when_codeHasLeadingAndTrailingWhitespace() {
// given
val content = """
```kotlin
val message = "Hello, World!"
println(message)
```
""".trimIndent()

// when
val markdownCode = MarkdownCode.parse(content)

// then
assertEquals("kotlin", markdownCode.language)
assertEquals("val message = \"Hello, World!\"\nprintln(message)", markdownCode.text)
}

@Test
fun should_parseMarkdownCode_withTrimmedCode_when_codeHasLeadingAndTrailingWhitespaceAndNewLine() {
// given
val content = """
val message = "Hello, World!"
println(message)
""".trimIndent()

// when
val markdownCode = MarkdownCode.parse(content)

// then
assertEquals("", markdownCode.language)
assertEquals("val message = \"Hello, World!\"\nprintln(message)", markdownCode.text)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ class CodeCompletionValidator(
val beforeCursorCode: String = JsonPath.parse(dataItem.toString()).read(selection)
val fullCode = "$beforeCursorCode\n$afterCursorCode"

logger.info("code completion: $fullCode")

when (language) {
"java" -> {
val datastructures = try {
Expand Down

0 comments on commit 08fd4a7

Please sign in to comment.