blob: 27ebb8ce6d86828cc067ba34f20680b61c822fcc [file] [log] [blame]
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +04001package org.jetbrains.dokka
2
3public class MarkdownFormatService(val locationService: LocationService,
4 val signatureGenerator: SignatureGenerator) : FormatService {
5 override val extension: String = "md"
6 override fun format(node: DocumentationNode, to: StringBuilder) {
7 with (to) {
8 appendln(node.path.map { "[${it.name}](${locationService.relativeLocation(node, it, extension)})" }.joinToString(" / "))
9 appendln()
Ilya Ryzhenkov03d0fd42014-07-14 16:08:17 +040010 appendln("# ${node.name}")
11 appendln("```")
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +040012 appendln(signatureGenerator.render(node))
Ilya Ryzhenkov03d0fd42014-07-14 16:08:17 +040013 appendln("```")
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +040014 appendln(node.doc.summary)
15 appendln()
16 for (section in node.doc.sections) {
17 append("### ")
18 appendln(section.label)
19 appendln(section.text)
20 }
21
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +040022 appendln("### Members")
23 appendln("| Name | Signature | Summary |")
24 appendln("|------|-----------|---------|")
25 for (member in node.members.sortBy { it.name }) {
26 val relativePath = locationService.relativeLocation(node, member, extension)
27 append("|[${member.name}](${relativePath})")
28 append("|${signatureGenerator.render(member)}")
29 append("|${member.doc.summary} ")
30 appendln("|")
31 }
32 }
33 }
34}