aboutsummaryrefslogtreecommitdiff
path: root/plugins/gfm/src
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gfm/src')
-rw-r--r--plugins/gfm/src/main/kotlin/org/jetbrains/dokka/gfm/renderer/CommonmarkRenderer.kt16
-rw-r--r--plugins/gfm/src/test/kotlin/renderers/gfm/CodeWrappingTest.kt48
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)
+ }
+}