diff options
author | Dmitry Jemerov <yole@jetbrains.com> | 2015-02-13 15:36:13 +0100 |
---|---|---|
committer | Dmitry Jemerov <yole@jetbrains.com> | 2015-02-13 15:36:13 +0100 |
commit | acb49b47437b1534b910e23927f8fddca26c69f3 (patch) | |
tree | c3a3d1bb80e8e3c58ba23eb8ae43aea716f5ede7 | |
parent | 7697bed83f4f4c1e7b853e415053107e45d8aded (diff) | |
download | dokka-acb49b47437b1534b910e23927f8fddca26c69f3.tar.gz dokka-acb49b47437b1534b910e23927f8fddca26c69f3.tar.bz2 dokka-acb49b47437b1534b910e23927f8fddca26c69f3.zip |
process modifiers of Java elements
-rw-r--r-- | src/Java/JavaDocumentationBuilder.kt | 18 | ||||
-rw-r--r-- | test/data/java/memberWithModifiers.java | 12 | ||||
-rw-r--r-- | test/src/model/JavaTest.kt | 14 |
3 files changed, 43 insertions, 1 deletions
diff --git a/src/Java/JavaDocumentationBuilder.kt b/src/Java/JavaDocumentationBuilder.kt index c9379386..7443db06 100644 --- a/src/Java/JavaDocumentationBuilder.kt +++ b/src/Java/JavaDocumentationBuilder.kt @@ -11,6 +11,8 @@ import com.intellij.psi.PsiNamedElement import com.intellij.psi.PsiDocCommentOwner import com.intellij.psi.PsiClassType import com.intellij.psi.PsiPrimitiveType +import com.intellij.psi.PsiModifierListOwner +import com.intellij.psi.PsiModifier public class JavaDocumentationBuilder() { fun appendFile(file: PsiJavaFile, module: DocumentationModule) { @@ -31,6 +33,9 @@ public class JavaDocumentationBuilder() { fun DocumentationNode(element: PsiNamedElement, kind: Kind): DocumentationNode { val docComment = if (element is PsiDocCommentOwner) parseDocumentation(element.getDocComment()) else Content.Empty val node = DocumentationNode(element.getName() ?: "<anonymous>", docComment, kind) + if (element is PsiModifierListOwner) { + node.appendModifiers(element) + } return node } @@ -67,6 +72,19 @@ public class JavaDocumentationBuilder() { return node } + fun DocumentationNode.appendModifiers(element: PsiModifierListOwner) { + val modifierList = element.getModifierList() + if (modifierList == null) { + return + } + PsiModifier.MODIFIERS.forEach { + if (modifierList.hasExplicitModifier(it)) { + val modifierNode = DocumentationNode(it, Content.Empty, Kind.Modifier) + append(modifierNode, DocumentationReference.Kind.Detail) + } + } + } + fun DocumentationNode.appendType(psiType: PsiType?, kind: DocumentationNode.Kind = DocumentationNode.Kind.Type) { if (psiType == null) { return diff --git a/test/data/java/memberWithModifiers.java b/test/data/java/memberWithModifiers.java new file mode 100644 index 00000000..2b14b2e1 --- /dev/null +++ b/test/data/java/memberWithModifiers.java @@ -0,0 +1,12 @@ +package test + +abstract class Test { + /** + * Summary for Function + * @param name is String parameter + * @param value is int parameter + */ + protected final void fn(String name, int value) { + + } +}
\ No newline at end of file diff --git a/test/src/model/JavaTest.kt b/test/src/model/JavaTest.kt index 602e1382..281d51ef 100644 --- a/test/src/model/JavaTest.kt +++ b/test/src/model/JavaTest.kt @@ -6,7 +6,7 @@ import org.junit.* public class JavaTest { Test fun function() { - verifyModel("test/data/java/") { model -> + verifyModel("test/data/java/member.java") { model -> val pkg = model.members.single() with(pkg.members.single()) { assertEquals("Test", name) @@ -30,4 +30,16 @@ public class JavaTest { } } } + + Test fun memberWithModifiers() { + verifyModel("test/data/java/memberWithModifiers.java") { model -> + val pkg = model.members.single() + with(pkg.members.single()) { + assertEquals("abstract", details[0].name) + with(members.single()) { + assertEquals("protected", details[0].name) + } + } + } + } } |