diff options
Diffstat (limited to 'plugins/gfm/src')
-rw-r--r-- | plugins/gfm/src/main/kotlin/org/jetbrains/dokka/gfm/renderer/CommonmarkRenderer.kt | 16 | ||||
-rw-r--r-- | plugins/gfm/src/test/kotlin/renderers/gfm/CodeWrappingTest.kt | 48 |
2 files changed, 64 insertions, 0 deletions
diff --git a/plugins/gfm/src/main/kotlin/org/jetbrains/dokka/gfm/renderer/CommonmarkRenderer.kt b/plugins/gfm/src/main/kotlin/org/jetbrains/dokka/gfm/renderer/CommonmarkRenderer.kt index 13322944..d192b9a6 100644 --- a/plugins/gfm/src/main/kotlin/org/jetbrains/dokka/gfm/renderer/CommonmarkRenderer.kt +++ b/plugins/gfm/src/main/kotlin/org/jetbrains/dokka/gfm/renderer/CommonmarkRenderer.kt @@ -311,6 +311,22 @@ open class CommonmarkRenderer( } } + override fun StringBuilder.buildCodeBlock(code: ContentCodeBlock, pageContext: ContentPage) { + append("```") + append(code.language.ifEmpty { "kotlin" }) + buildNewLine() + code.children.forEach { it.build(this, pageContext) } + buildNewLine() + append("```") + buildNewLine() + } + + override fun StringBuilder.buildCodeInline(code: ContentCodeInline, pageContext: ContentPage) { + append("`") + code.children.forEach { it.build(this, pageContext) } + append("`") + } + private fun decorators(styles: Set<Style>) = buildString { styles.forEach { when (it) { diff --git a/plugins/gfm/src/test/kotlin/renderers/gfm/CodeWrappingTest.kt b/plugins/gfm/src/test/kotlin/renderers/gfm/CodeWrappingTest.kt new file mode 100644 index 00000000..ce0c3d0c --- /dev/null +++ b/plugins/gfm/src/test/kotlin/renderers/gfm/CodeWrappingTest.kt @@ -0,0 +1,48 @@ +package renderers.gfm + +import org.jetbrains.dokka.gfm.renderer.CommonmarkRenderer +import org.jetbrains.dokka.pages.TextStyle +import org.junit.jupiter.api.Test +import kotlin.test.assertEquals +import renderers.* + +class CodeWrappingTest : GfmRenderingOnlyTestBase() { + @Test + fun wrappedCodeBlock() { + val page = testPage { + codeBlock { + text("fun myCode(): String") + } + } + val expect = """|//[testPage](test-page.md) + | + |```kotlin + |fun myCode(): String + |```""".trimMargin() + + CommonmarkRenderer(context).render(page) + assertEquals(expect, renderedContent) + } + + @Test + fun wrappedInlineCode() { + val page = testPage { + text("This function adds the values of ") + codeInline("") { + text("left") + } + text(" and ") + codeInline("") { + text("right") + } + text(".\nBoth numbers must be finite, or an exception occurs.\n") + } + val expect = """|//[testPage](test-page.md) + | + |This function adds the values of `left` and `right`. + |Both numbers must be finite, or an exception occurs.""".trimMargin() + + CommonmarkRenderer(context).render(page) + assertEquals(expect, renderedContent) + } +} |