diff options
| author | Kamil Doległo <kamilok1965@interia.pl> | 2019-11-19 19:53:35 +0100 |
|---|---|---|
| committer | Błażej Kardyś <bkardys@virtuslab.com> | 2019-11-25 16:24:16 +0100 |
| commit | 954664352b2f2dc22bfc624a65069ce45db7e2bf (patch) | |
| tree | 199d080f5201d6500daddfa749429af8614661e2 /core/src/main/kotlin/pages | |
| parent | 562cce04558c0f6b9e266a8e39f0254d6594e84e (diff) | |
| download | dokka-954664352b2f2dc22bfc624a65069ce45db7e2bf.tar.gz dokka-954664352b2f2dc22bfc624a65069ce45db7e2bf.tar.bz2 dokka-954664352b2f2dc22bfc624a65069ce45db7e2bf.zip | |
Initial XML plugin
Diffstat (limited to 'core/src/main/kotlin/pages')
| -rw-r--r-- | core/src/main/kotlin/pages/transformers/XmlAttributesTransformer.kt | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/core/src/main/kotlin/pages/transformers/XmlAttributesTransformer.kt b/core/src/main/kotlin/pages/transformers/XmlAttributesTransformer.kt new file mode 100644 index 00000000..7a74cb65 --- /dev/null +++ b/core/src/main/kotlin/pages/transformers/XmlAttributesTransformer.kt @@ -0,0 +1,80 @@ +package org.jetbrains.dokka.pages.transformers + +import org.jetbrains.dokka.DefaultExtra +import org.jetbrains.dokka.Model.DocumentationNode +import org.jetbrains.dokka.Model.dfs +import org.jetbrains.dokka.links.DRI +import org.jetbrains.dokka.pages.* +import org.jetbrains.dokka.renderers.platforms + +object XmlAttributesTransformer : PageNodeTransformer { + enum class XMLKind : Kind { + Main, XmlList + } + + override fun invoke(original: ModulePageNode): ModulePageNode { + original.findAll { it is ClassPageNode }.forEach { node -> + val refs = node.documentationNode?.extra?.filterIsInstance<DefaultExtra>()?.filter { it.key == "@attr ref"}.orEmpty() + val elementsToAdd = mutableListOf<DocumentationNode<*>>() + + refs.forEach { ref -> + val toFind = DRI.from(ref.value) + original.documentationNode?.dfs { it.dri == toFind }?.let { elementsToAdd.add(it) } + } + + val refTable = ContentGroup( + listOf( + ContentHeader( + listOf( + ContentText( + "XML Attributes", + DCI(node.dri, XMLKind.XmlList), + node.platforms().toSet(), emptySet(), emptySet() + ) + ), + 2, + DCI(node.dri, XMLKind.Main), + node.platforms().toSet(), emptySet(), emptySet() + ), + ContentTable( + emptyList(), + elementsToAdd.map { + ContentGroup( + listOf( + ContentDRILink( + listOf( + ContentText( + it.descriptors.first().name.toString(), + DCI(node.dri, XMLKind.Main), + node.platforms().toSet(), emptySet(), emptySet() + ) + ), + it.dri, + DCI(it.dri, XMLKind.XmlList), + it.platformData.toSet(), emptySet(), emptySet() + ), + ContentText( + it.briefDocstring, + DCI(it.dri, XMLKind.XmlList), + it.platformData.toSet(), emptySet(), emptySet() + ) + ), + DCI(node.dri, XMLKind.XmlList), + node.platforms().toSet(), emptySet(), emptySet() + ) + }, + DCI(node.dri, XMLKind.XmlList), + node.platforms().toSet(), emptySet(), emptySet() + ) + ), + DCI(node.dri, XMLKind.XmlList), + node.platforms().toSet(), emptySet(), emptySet() + ) + + val content = node.content as ContentGroup + val children = (node.content as ContentGroup).children + node.content = content.copy(children = children + refTable) + } + return original + } +} |
