diff --git a/idea/src/org/jetbrains/kotlin/idea/kdoc/KDocRenderer.kt b/idea/src/org/jetbrains/kotlin/idea/kdoc/KDocRenderer.kt index 3c986dec142..814e0b22446 100644 --- a/idea/src/org/jetbrains/kotlin/idea/kdoc/KDocRenderer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/kdoc/KDocRenderer.kt @@ -118,79 +118,36 @@ object KDocRenderer { public fun MarkdownNode.toHtml(): String { val sb = StringBuilder() visit { node, processChildren -> + fun wrapChildren(tag: String, newline: Boolean = false) { + sb.append("<$tag>") + if (newline) sb.appendln() + processChildren() + sb.append("$tag>") + if (newline) sb.appendln() + } + val nodeType = node.type val nodeText = node.text when (nodeType) { - MarkdownElementTypes.UNORDERED_LIST -> { - sb.appendln("
") - processChildren() - sb.append("") - } + MarkdownElementTypes.UNORDERED_LIST -> wrapChildren("ul", newline = true) + MarkdownElementTypes.ORDERED_LIST -> wrapChildren("ol", newline = true) + MarkdownElementTypes.LIST_ITEM -> wrapChildren("li") + MarkdownElementTypes.EMPH -> wrapChildren("em") + MarkdownElementTypes.STRONG -> wrapChildren("strong") + MarkdownElementTypes.ATX_1 -> wrapChildren("h1") + MarkdownElementTypes.ATX_2 -> wrapChildren("h2") + MarkdownElementTypes.ATX_3 -> wrapChildren("h3") + MarkdownElementTypes.ATX_4 -> wrapChildren("h4") + MarkdownElementTypes.ATX_5 -> wrapChildren("h5") + MarkdownElementTypes.ATX_6 -> wrapChildren("h6") + MarkdownElementTypes.BLOCK_QUOTE -> wrapChildren("blockquote") MarkdownElementTypes.PARAGRAPH -> { - sb.append("
") - processChildren() - sb.appendln("
") - } - MarkdownElementTypes.CODE_SPAN -> { - sb.append("")
- processChildren()
- sb.append("")
+ while (sb.length() > 0 && sb[sb.length() - 1] == ' ') {
+ sb.deleteCharAt(sb.length() - 1)
+ }
+ wrapChildren("p", newline = true)
}
+ MarkdownElementTypes.CODE_SPAN -> wrapChildren("code")
MarkdownElementTypes.CODE_BLOCK -> {
sb.append("")
processChildren()
@@ -218,6 +175,7 @@ object KDocRenderer {
MarkdownTokenTypes.TEXT,
MarkdownTokenTypes.WHITE_SPACE,
MarkdownTokenTypes.COLON,
+ MarkdownTokenTypes.SINGLE_QUOTE,
MarkdownTokenTypes.DOUBLE_QUOTE,
MarkdownTokenTypes.LPAREN,
MarkdownTokenTypes.RPAREN,
@@ -225,6 +183,9 @@ object KDocRenderer {
MarkdownTokenTypes.RBRACKET -> {
sb.append(nodeText)
}
+ MarkdownTokenTypes.EOL -> {
+ sb.append(" ")
+ }
MarkdownTokenTypes.GT -> sb.append(">")
MarkdownTokenTypes.LT -> sb.append("<")
else -> {
diff --git a/idea/testData/editor/quickDoc/OnMethodUsageMultiline.kt b/idea/testData/editor/quickDoc/OnMethodUsageMultiline.kt
new file mode 100644
index 00000000000..ca871fb8889
--- /dev/null
+++ b/idea/testData/editor/quickDoc/OnMethodUsageMultiline.kt
@@ -0,0 +1,14 @@
+/**
+ * Some documentation
+ * on two lines.
+ */
+fun testMethod() {
+
+}
+
+fun test() {
+ testMethod()
+}
+
+//INFO: internal fun testMethod(): Unit defined in root package
Some documentation on two lines.
+//INFO:
diff --git a/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt b/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt
index 4b4f39acae9..7c54a82a753 100644
--- a/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt
+++ b/idea/testData/editor/quickDoc/OnMethodUsageWithMarkdown.kt
@@ -1,5 +1,5 @@
/**
- * Some documentation. **Bold** *underline* `code` foo: bar (baz) [quux]
+ * Some documentation. **Bold** *underline* `code` foo: bar (baz) [quux] 'apos'
*
* [Kotlin](http://www.kotlinlang.org)
*
@@ -18,9 +18,13 @@ fun test() {
testMethod(1, "value")
}
-//INFO: internal fun testMethod(): Unit defined in root package
Some documentation. Bold underline code foo: bar (baz) quux
-//INFO: a href="http://www.kotlinlang.org">Kotlin
-//INFO:
-//INFO:
+//INFO: internal fun testMethod(): Unit defined in root package
+//INFO: Some documentation. Bold underline code foo: bar (baz) quux 'apos'
+//INFO:
+//INFO: a href="http://www.kotlinlang.org">Kotlin
+//INFO:
+//INFO: C
+//INFO:
+//INFO: See this class
//INFO:
//INFO:
diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/JetQuickDocProviderTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/JetQuickDocProviderTestGenerated.java
index 1432881e7b4..0980bbdf440 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/JetQuickDocProviderTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/editor/quickDoc/JetQuickDocProviderTestGenerated.java
@@ -113,6 +113,12 @@ public class JetQuickDocProviderTestGenerated extends AbstractJetQuickDocProvide
doTest(fileName);
}
+ @TestMetadata("OnMethodUsageMultiline.kt")
+ public void testOnMethodUsageMultiline() throws Exception {
+ String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/quickDoc/OnMethodUsageMultiline.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("OnMethodUsageWithBracketsInParam.kt")
public void testOnMethodUsageWithBracketsInParam() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/quickDoc/OnMethodUsageWithBracketsInParam.kt");