From ef0da15e3da2cdc6ee1368d0cfe936f9346eabf4 Mon Sep 17 00:00:00 2001 From: Steven Zeck <8315038+stevenzeck@users.noreply.github.com> Date: Thu, 7 Oct 2021 21:24:41 -0500 Subject: [PATCH] Fix for strikethrough of consecutive context texts --- .../dokka/gfm/renderer/CommonmarkRenderer.kt | 5 +- .../kotlin/renderers/gfm/ParseRenderTest.kt | 54 +++++++++++++++++++ .../renderers/gfm/SimpleElementsTest.kt | 2 +- 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 plugins/gfm/src/test/kotlin/renderers/gfm/ParseRenderTest.kt 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 c05bd07e23..f7b486f181 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 @@ -213,10 +213,11 @@ open class CommonmarkRenderer( append(textNode.text) } else if (textNode.text.isNotBlank()) { val decorators = decorators(textNode.style) + val containsStrikethrough = textNode.style.contains(TextStyle.Strikethrough) append(textNode.text.takeWhile { it == ' ' }) - append(decorators) + if (containsStrikethrough) append("") else append(decorators) append(textNode.text.trim().htmlEscape()) - append(decorators.reversed()) + if (containsStrikethrough) append("") else append(decorators.reversed()) append(textNode.text.takeLastWhile { it == ' ' }) } } diff --git a/plugins/gfm/src/test/kotlin/renderers/gfm/ParseRenderTest.kt b/plugins/gfm/src/test/kotlin/renderers/gfm/ParseRenderTest.kt new file mode 100644 index 0000000000..44ba9e4c98 --- /dev/null +++ b/plugins/gfm/src/test/kotlin/renderers/gfm/ParseRenderTest.kt @@ -0,0 +1,54 @@ +package renderers.gfm + +import org.jetbrains.dokka.base.testApi.testRunner.BaseAbstractTest +import org.jetbrains.dokka.gfm.GfmPlugin +import org.junit.Assert.assertEquals +import org.junit.jupiter.api.Test +import utils.TestOutputWriterPlugin + +class ParseRenderTest : BaseAbstractTest() { + + @Test + fun `deprecated fun markdown`() { + val configuration = dokkaConfiguration { + sourceSets { + sourceSet { + sourceRoots = listOf("src/main/kotlin/test/Test.kt") + } + } + } + val source = + """ + |/src/main/kotlin/test/Test.kt + |package example + | /** + | * Just a deprecated function + | */ + | @Deprecated("This is deprecated") + | fun simpleFun(test: Int): String = "This is the one ring" + """.trimIndent() + val expected = + """ + //[root](../../index.md)/[example](index.md) + + # Package example + + ## Functions + + | Name | Summary | + |---|---| + | [simpleFun](simple-fun.md) | [JVM]
fun [simpleFun](simple-fun.md)(test: Int): String
Just a deprecated function | + """.trimIndent() + val writerPlugin = TestOutputWriterPlugin() + + testInline( + source, + configuration, + pluginOverrides = listOf(writerPlugin, GfmPlugin()) + ) { + renderingStage = { _, _ -> + assertEquals(expected, writerPlugin.writer.contents["root/example/index.md"]) + } + } + } +} \ No newline at end of file diff --git a/plugins/gfm/src/test/kotlin/renderers/gfm/SimpleElementsTest.kt b/plugins/gfm/src/test/kotlin/renderers/gfm/SimpleElementsTest.kt index b4af12b2f0..76d82ec20a 100644 --- a/plugins/gfm/src/test/kotlin/renderers/gfm/SimpleElementsTest.kt +++ b/plugins/gfm/src/test/kotlin/renderers/gfm/SimpleElementsTest.kt @@ -78,7 +78,7 @@ class SimpleElementsTest : GfmRenderingOnlyTestBase() { ) } val expect = - "//[testPage](test-page.md)\n\n~~A day may come when the courage of men fails… but it is not THIS day~~" + "//[testPage](test-page.md)\n\nA day may come when the courage of men fails… but it is not THIS day" CommonmarkRenderer(context).render(page) assertEquals(expect, renderedContent) }