blob: 3c31ba57f3892d4a365c09e90aeaf680f5bf080c [file] [log] [blame]
package org.jetbrains.dokka
import java.io.File
/**
* Service for building the outline of the package contents.
*/
interface OutlineFormatService {
fun getOutlineFileName(location: Location): File
fun appendOutlineHeader(location: Location, node: DocumentationNode, to: StringBuilder)
fun appendOutlineLevel(to: StringBuilder, body: () -> Unit)
/** Appends formatted outline to [StringBuilder](to) using specified [location] */
fun appendOutline(location: Location, to: StringBuilder, nodes: Iterable<DocumentationNode>) {
for (node in nodes) {
appendOutlineHeader(location, node, to)
if (node.members.any()) {
val sortedMembers = node.members.sortedBy { it.name }
appendOutlineLevel(to) {
appendOutline(location, to, sortedMembers)
}
}
}
}
fun formatOutline(location: Location, nodes: Iterable<DocumentationNode>): String =
StringBuilder().apply { appendOutline(location, this, nodes) }.toString()
}