Generate docs for class like elements
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtmlFormat.kt b/core/src/main/kotlin/Formats/JavaLayoutHtmlFormat.kt
index 3f0dbc2..4dd65e8 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtmlFormat.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtmlFormat.kt
@@ -63,9 +63,9 @@
private fun TBODY.formatFunctionSummaryRow(node: DocumentationNode) = tr {
td {
for (modifier in node.details(NodeKind.Modifier)) {
- metaMarkup(languageService.render(modifier, SUMMARY))
+ renderedSignature(modifier, SUMMARY)
}
- metaMarkup(languageService.render(node.detail(NodeKind.Type), SUMMARY))
+ renderedSignature(node.detail(NodeKind.Type), SUMMARY)
}
td {
div {
@@ -76,10 +76,14 @@
}
}
+ private fun FlowContent.renderedSignature(node: DocumentationNode, mode: LanguageService.RenderMode = SUMMARY) {
+ metaMarkup(languageService.render(node, mode))
+ }
+
private fun FlowContent.fullFunctionDocs(node: DocumentationNode) {
div {
h3 { +node.name }
- pre { metaMarkup(languageService.render(node, FULL)) }
+ pre { renderedSignature(node, FULL) }
metaMarkup(node.content)
for ((name, sections) in node.content.sections.groupBy { it.tag }) {
table {
@@ -125,7 +129,18 @@
}
fun appendClassLike(node: DocumentationNode) = with(htmlConsumer) {
+ html {
+ head {}
+ body {
+ h1 { +node.name }
+ pre { renderedSignature(node, FULL) }
+ metaMarkup(node.content)
+ h2 { +"Summary" }
+ hr()
+
+ }
+ }
}
}
@@ -154,7 +169,6 @@
}
is ContentHeading -> hN(level = content.level) { appendContent(content.children) }
- is ContentBlock -> appendContent(content.children)
is ContentEntity -> +content.text
@@ -172,8 +186,8 @@
is ContentCode -> pre { code { appendContent(content.children) } }
- is ContentBlockCode -> pre { code {} }
is ContentBlockSampleCode -> pre { code {} }
+ is ContentBlockCode -> pre { code {} }
is ContentNonBreakingSpace -> +nbsp
@@ -186,8 +200,10 @@
a(href = "#local") { appendContent(content.children) }
}
is ContentExternalLink -> {
- a(href = "#external") { appendContent(content.children) }
+ a(href = content.href) { appendContent(content.children) }
}
+
+ is ContentBlock -> appendContent(content.children)
}
}
}
@@ -196,26 +212,24 @@
fun buildClass(node: DocumentationNode, parentDir: File) {
-
+ val fileForClass = parentDir.resolve(node.simpleName() + ".html")
+ fileForClass.bufferedWriter().use {
+ JavaLayoutHtmlFormatOutputBuilder(it, languageService).appendClassLike(node)
+ }
}
fun buildPackage(node: DocumentationNode, parentDir: File) {
assert(node.kind == NodeKind.Package)
val members = node.members
- val directoryForPackage = parentDir.resolve(node.name)
+ val directoryForPackage = parentDir.resolve(node.name.replace('.', File.separatorChar))
directoryForPackage.mkdirsOrFail()
directoryForPackage.resolve("package-summary.html").bufferedWriter().use {
JavaLayoutHtmlFormatOutputBuilder(it, languageService).appendPackage(node)
}
- for (member in members) {
- when (member.kind) {
- NodeKind.Package -> buildPackage(member, directoryForPackage)
- in classLike -> buildClass(node, directoryForPackage)
- else -> {
- }
- }
+ members.filter { it.kind in classLike }.forEach {
+ buildClass(it, directoryForPackage)
}
}
@@ -223,7 +237,8 @@
override fun buildPages(nodes: Iterable<DocumentationNode>) {
val module = nodes.single()
- module.members.filter { it.kind == NodeKind.Package }.forEach { buildPackage(it, root.resolve(module.name)) }
+ val moduleRoot = root.resolve(module.name)
+ module.members.filter { it.kind == NodeKind.Package }.forEach { buildPackage(it, moduleRoot) }
}
override fun buildOutlines(nodes: Iterable<DocumentationNode>) {