diff options
Diffstat (limited to 'javadoc/src')
-rw-r--r-- | javadoc/src/main/kotlin/docbase.kt | 23 | ||||
-rw-r--r-- | javadoc/src/main/kotlin/tags.kt | 21 |
2 files changed, 37 insertions, 7 deletions
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<out Tag> = buildInlineTags(module, this, node.content).toTypedArray() override fun firstSentenceTags(): Array<out Tag> = buildInlineTags(module, this, node.summary).toTypedArray() - override fun tags(): Array<out Tag> = (buildInlineTags(module, this, node.content) + node.content.sections.flatMap { - when (it.tag) { - ContentTags.SeeAlso -> buildInlineTags(module, this, it) - else -> emptyList<Tag>() + + override fun tags(): Array<out Tag> { + val result = ArrayList<Tag>(buildInlineTags(module, this, node.content)) + node.content.sections.flatMapTo(result) { + when (it.tag) { + ContentTags.SeeAlso -> buildInlineTags(module, this, it) + else -> emptyList<Tag>() + } } - }).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<out Tag>? = arrayOf() + override fun inlineTags(): Array<out Tag>? = 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<out Tag> = 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 "<a href=\"${link.href}\">$label</a>" } @@ -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() |