aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Kotlin/ContentBuilder.kt5
-rw-r--r--src/Kotlin/DocumentationBuilder.kt7
-rw-r--r--test/data/format/tripleBackticks.html18
-rw-r--r--test/data/format/tripleBackticks.kt7
-rw-r--r--test/src/format/HtmlFormatTest.kt6
5 files changed, 42 insertions, 1 deletions
diff --git a/src/Kotlin/ContentBuilder.kt b/src/Kotlin/ContentBuilder.kt
index abe24917..60b0e9e9 100644
--- a/src/Kotlin/ContentBuilder.kt
+++ b/src/Kotlin/ContentBuilder.kt
@@ -95,6 +95,11 @@ public fun DocumentationBuilder.buildContentTo(tree: MarkdownNode, target: Conte
processChildren()
parent.append(nodeStack.pop())
}
+ MarkdownTokenTypes.CODE -> {
+ val block = ContentBlockCode()
+ block.append(ContentText(node.text))
+ parent.append(block)
+ }
MarkdownElementTypes.PARAGRAPH -> {
nodeStack.push(ContentParagraph())
processChildren()
diff --git a/src/Kotlin/DocumentationBuilder.kt b/src/Kotlin/DocumentationBuilder.kt
index c9c45214..d166fa82 100644
--- a/src/Kotlin/DocumentationBuilder.kt
+++ b/src/Kotlin/DocumentationBuilder.kt
@@ -45,7 +45,12 @@ class DocumentationBuilder(val session: ResolveSession, val options: Documentati
if (kdoc == null) {
return Content.Empty
}
- val tree = parseMarkdown(kdoc.getContent())
+ var kdocText = kdoc.getContent()
+ // workaround for code fence parsing problem in IJ markdown parser
+ if (kdocText.endsWith("```") || kdocText.endsWith("~~~")) {
+ kdocText += "\n"
+ }
+ val tree = parseMarkdown(kdocText)
//println(tree.toTestString())
val content = buildContent(tree)
if (kdoc is KDocSection) {
diff --git a/test/data/format/tripleBackticks.html b/test/data/format/tripleBackticks.html
new file mode 100644
index 00000000..ad4251a9
--- /dev/null
+++ b/test/data/format/tripleBackticks.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<title>test / f</title>
+</HEAD>
+<BODY>
+<a href="out.html">test</a>&nbsp;/&nbsp;<a href="out.html"></a>&nbsp;/&nbsp;<a href="out.html">f</a><br/>
+<br/>
+<h1>f</h1>
+<pre><code><span class="keyword">fun </span><span class="identifier">f</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">Unit</span></code></pre><p>Description</p>
+<br/>
+<br/>
+<h3>Description</h3>
+<pre><code>
+code sample
+</code></pre><br/>
+<br/>
+</BODY>
+</HTML>
diff --git a/test/data/format/tripleBackticks.kt b/test/data/format/tripleBackticks.kt
new file mode 100644
index 00000000..54dfa6d5
--- /dev/null
+++ b/test/data/format/tripleBackticks.kt
@@ -0,0 +1,7 @@
+/**
+ * Description
+ * ```
+ * code sample
+ * ```
+ */
+fun f() {}
diff --git a/test/src/format/HtmlFormatTest.kt b/test/src/format/HtmlFormatTest.kt
index e180a86c..7dfa80be 100644
--- a/test/src/format/HtmlFormatTest.kt
+++ b/test/src/format/HtmlFormatTest.kt
@@ -57,4 +57,10 @@ public class HtmlFormatTest {
htmlService.appendNodes(tempLocation, output, model.members.single().members)
}
}
+
+ Test fun tripleBackticks() {
+ verifyOutput("test/data/format/tripleBackticks.kt", ".html") { model, output ->
+ htmlService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
}