aboutsummaryrefslogtreecommitdiff
path: root/src/Analysis/CommentsAPI.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/Analysis/CommentsAPI.kt')
-rw-r--r--src/Analysis/CommentsAPI.kt30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Analysis/CommentsAPI.kt b/src/Analysis/CommentsAPI.kt
new file mode 100644
index 00000000..a32ee734
--- /dev/null
+++ b/src/Analysis/CommentsAPI.kt
@@ -0,0 +1,30 @@
+package org.jetbrains.dokka
+
+import org.jetbrains.jet.lang.descriptors.*
+import org.jetbrains.jet.lang.resolve.*
+import org.jetbrains.jet.kdoc.psi.api.*
+import org.jetbrains.jet.lang.psi.*
+
+fun BindingContext.getDocumentation(descriptor: DeclarationDescriptor): KDoc? {
+ val psiElement = DescriptorToSourceUtils.descriptorToDeclaration(descriptor)
+ if (psiElement == null)
+ throw IllegalArgumentException("$descriptor doesn't have connection to source code, is it synthetic?")
+
+ return psiElement.previousSiblings().takeWhile { it !is JetDeclaration }.firstOrNull { it is KDoc } as KDoc?
+}
+
+fun KDoc?.extractText(): String {
+ if (this == null)
+ return ""
+ val text = getText()
+ if (text == null)
+ return ""
+ val lines = text.replace("\r", "").split("\n")
+ return lines.map {
+ it.dropWhile { java.lang.Character.isWhitespace(it) }
+ .dropWhile { it == '/' }
+ .dropWhile { it == '*' }
+ .dropWhile { it == '/' }
+ .dropWhile { java.lang.Character.isWhitespace(it) }
+ }.filter { it.any() }.join("\n")
+} \ No newline at end of file