Merge pull request #563 from JetBrains/kdoc-render-package

as a workaround for KT-4502, wrap KDoc rendering functions in an object
This commit is contained in:
Evgeny Gerashchenko
2015-02-05 16:26:33 +04:00
2 changed files with 38 additions and 35 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.asJava.KotlinLightMethod; import org.jetbrains.kotlin.asJava.KotlinLightMethod;
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
import org.jetbrains.kotlin.idea.kdoc.KDocRenderer;
import org.jetbrains.kotlin.kdoc.KdocPackage; import org.jetbrains.kotlin.kdoc.KdocPackage;
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag; import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag;
import org.jetbrains.kotlin.psi.JetDeclaration; import org.jetbrains.kotlin.psi.JetDeclaration;
@@ -92,7 +93,7 @@ public class JetQuickDocumentationProvider extends AbstractDocumentationProvider
KDocTag comment = KdocPackage.findKDoc(declarationDescriptor); KDocTag comment = KdocPackage.findKDoc(declarationDescriptor);
if (comment != null) { if (comment != null) {
renderedDecl = renderedDecl + "<br/>" + org.jetbrains.kotlin.idea.kdoc.KdocPackage.renderKDoc(comment); renderedDecl = renderedDecl + "<br/>" + KDocRenderer.INSTANCE$.renderKDoc(comment);
} }
return renderedDecl; return renderedDecl;
@@ -20,7 +20,8 @@ import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.kdoc.psi.impl.KDocSection import org.jetbrains.kotlin.kdoc.psi.impl.KDocSection
fun renderKDoc(docComment: KDocTag): String { object KDocRenderer {
fun renderKDoc(docComment: KDocTag): String {
val content = docComment.getContent() val content = docComment.getContent()
val result = StringBuilder("<p>") val result = StringBuilder("<p>")
result.append(markdownToHtml(content)) result.append(markdownToHtml(content))
@@ -39,9 +40,9 @@ fun renderKDoc(docComment: KDocTag): String {
} }
result.append("</p>") result.append("</p>")
return result.toString() return result.toString()
} }
private fun renderTagList(tags: List<KDocTag>, title: String, to: StringBuilder) { private fun renderTagList(tags: List<KDocTag>, title: String, to: StringBuilder) {
if (tags.isEmpty()) { if (tags.isEmpty()) {
return return
} }
@@ -50,17 +51,18 @@ private fun renderTagList(tags: List<KDocTag>, title: String, to: StringBuilder)
to.append("<dd><code>${it.getSubjectName()}</code> - ${markdownToHtml(it.getContent().trimLeading())}</dd>") to.append("<dd><code>${it.getSubjectName()}</code> - ${markdownToHtml(it.getContent().trimLeading())}</dd>")
} }
to.append("</dl>") to.append("</dl>")
} }
private fun renderTag(tag: KDocTag?, title: String, to: StringBuilder) { private fun renderTag(tag: KDocTag?, title: String, to: StringBuilder) {
if (tag != null) { if (tag != null) {
to.append("<dl><dt><b>${title}:</b></dt>") to.append("<dl><dt><b>${title}:</b></dt>")
to.append("<dd>${markdownToHtml(tag.getContent())}</dd>") to.append("<dd>${markdownToHtml(tag.getContent())}</dd>")
to.append("</dl>") to.append("</dl>")
} }
} }
fun markdownToHtml(markdown: String): String { fun markdownToHtml(markdown: String): String {
// TODO Integrate a real Markdown parser // TODO Integrate a real Markdown parser
return StringUtil.replace(markdown, "\n", "<br/>"); return StringUtil.replace(markdown, "\n", "<br/>");
}
} }