diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Kotlin/DocumentationBuilder.kt | 33 | ||||
-rw-r--r-- | src/Model/Content.kt | 4 |
2 files changed, 28 insertions, 9 deletions
diff --git a/src/Kotlin/DocumentationBuilder.kt b/src/Kotlin/DocumentationBuilder.kt index 1680b407..c9c45214 100644 --- a/src/Kotlin/DocumentationBuilder.kt +++ b/src/Kotlin/DocumentationBuilder.kt @@ -51,13 +51,17 @@ class DocumentationBuilder(val session: ResolveSession, val options: Documentati if (kdoc is KDocSection) { val tags = kdoc.getTags() tags.forEach { - if (it.getName() == "sample") { - content.append(functionBody(descriptor, it.getSubjectName())) - } else { - val section = content.addSection(displayName(it.getName()), it.getSubjectName()) - val sectionContent = it.getContent() - val markdownNode = parseMarkdown(sectionContent) - buildInlineContentTo(markdownNode, section) + when (it.getName()) { + "sample" -> + content.append(functionBody(descriptor, it.getSubjectName())) + "see" -> + content.addTagToSeeAlso(it) + else -> { + val section = content.addSection(displayName(it.getName()), it.getSubjectName()) + val sectionContent = it.getContent() + val markdownNode = parseMarkdown(sectionContent) + buildInlineContentTo(markdownNode, section) + } } } } @@ -73,6 +77,18 @@ class DocumentationBuilder(val session: ResolveSession, val options: Documentati else -> sectionName?.capitalize() } + private fun Content.addTagToSeeAlso(seeTag: KDocTag) { + val subjectName = seeTag.getSubjectName() + if (subjectName != null) { + val seeSection = findSectionByTag("See Also") ?: addSection("See Also", null) + val link = ContentExternalLink(subjectName) + link.append(ContentText(subjectName)) + val para = ContentParagraph() + para.append(link) + seeSection.append(para) + } + } + fun link(node: DocumentationNode, descriptor: DeclarationDescriptor) { links.put(node, descriptor) } @@ -505,6 +521,9 @@ class DocumentationBuilder(val session: ResolveSession, val options: Documentati } resolveContentLinks(node, node.content) + for (section in node.content.sections) { + resolveContentLinks(node, section) + } for (child in node.members) { resolveReferences(child) diff --git a/src/Model/Content.kt b/src/Model/Content.kt index e59037d2..bb0ff00f 100644 --- a/src/Model/Content.kt +++ b/src/Model/Content.kt @@ -58,8 +58,8 @@ public class Content() : ContentNode() { public val sections: List<ContentSection> get() = sectionList - fun addSection(name: String?, subjectName: String?): ContentSection { - val section = ContentSection(name ?: "", subjectName) + fun addSection(tag: String?, subjectName: String?): ContentSection { + val section = ContentSection(tag ?: "", subjectName) sectionList.add(section) return section } |