From 972118bcffbdf13ebd3aefd495618c4670bdc7b3 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 4 Nov 2015 19:10:38 +0100 Subject: generate @deprecated tags for javadoc --- javadoc/src/main/kotlin/docbase.kt | 23 ++++++++++++++++++----- javadoc/src/main/kotlin/tags.kt | 21 +++++++++++++++++++-- 2 files changed, 37 insertions(+), 7 deletions(-) (limited to 'javadoc/src') diff --git a/javadoc/src/main/kotlin/docbase.kt b/javadoc/src/main/kotlin/docbase.kt index 318aa3d5..cdb4bbc7 100644 --- a/javadoc/src/main/kotlin/docbase.kt +++ b/javadoc/src/main/kotlin/docbase.kt @@ -63,12 +63,25 @@ open class DocumentationNodeBareAdapter(override val node: DocumentationNode) : open class DocumentationNodeAdapter(override val module: ModuleNodeAdapter, node: DocumentationNode) : DocumentationNodeBareAdapter(node), HasModule { override fun inlineTags(): Array = buildInlineTags(module, this, node.content).toTypedArray() override fun firstSentenceTags(): Array = buildInlineTags(module, this, node.summary).toTypedArray() - override fun tags(): Array = (buildInlineTags(module, this, node.content) + node.content.sections.flatMap { - when (it.tag) { - ContentTags.SeeAlso -> buildInlineTags(module, this, it) - else -> emptyList() + + override fun tags(): Array { + val result = ArrayList(buildInlineTags(module, this, node.content)) + node.content.sections.flatMapTo(result) { + when (it.tag) { + ContentTags.SeeAlso -> buildInlineTags(module, this, it) + else -> emptyList() + } } - }).toTypedArray() + + node.deprecation?.let { + val content = it.content.asText() + if (content != null) { + result.add(TagImpl(this, "deprecated", content)) + } + } + + return result.toTypedArray() + } } // should be extension property but can't because of KT-8745 diff --git a/javadoc/src/main/kotlin/tags.kt b/javadoc/src/main/kotlin/tags.kt index 9fdf86f2..5c38bbee 100644 --- a/javadoc/src/main/kotlin/tags.kt +++ b/javadoc/src/main/kotlin/tags.kt @@ -4,6 +4,19 @@ import com.sun.javadoc.* import org.jetbrains.dokka.* import java.util.* +class TagImpl(val holder: Doc, val name: String, val text: String): Tag { + override fun text(): String? = text + + override fun holder(): Doc = holder + override fun firstSentenceTags(): Array? = arrayOf() + override fun inlineTags(): Array? = arrayOf() + + override fun name(): String = name + override fun kind(): String = name + + override fun position(): SourcePosition = holder.position() +} + class TextTag(val holder: Doc, val content: ContentText) : Tag { val plainText: String get() = content.text @@ -32,8 +45,7 @@ class SeeExternalLinkTagAdapter(val holder: Doc, val link: ContentExternalLink) override fun inlineTags(): Array = emptyArray() // TODO override fun label(): String { - val contentText = link.children.singleOrNull() as? ContentText - val label = contentText?.text ?: link.href + val label = link.asText() ?: link.href return "$label" } @@ -48,6 +60,11 @@ class SeeExternalLinkTagAdapter(val holder: Doc, val link: ContentExternalLink) override fun kind(): String = "@see" } +fun ContentBlock.asText(): String? { + val contentText = children.singleOrNull() as? ContentText + return contentText?.text +} + class SeeMethodTagAdapter(holder: Doc, val method: MethodAdapter, content: ContentNodeLink) : SeeTagAdapter(holder, content) { override fun referencedMember(): MemberDoc = method override fun referencedMemberName(): String = method.name() -- cgit