blob: 2e5411134a8531cb0dc4e2292d5d012cdd93752b [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}")
Ilya Ryzhenkov69abe982014-07-14 18:38:22 +040011 appendln(node.doc.summary)
Ilya Ryzhenkov03d0fd42014-07-14 16:08:17 +040012 appendln("```")
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +040013 appendln(signatureGenerator.render(node))
Ilya Ryzhenkov03d0fd42014-07-14 16:08:17 +040014 appendln("```")
Ilya Ryzhenkov69abe982014-07-14 18:38:22 +040015 appendln(node.doc.description)
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +040016 appendln()
17 for (section in node.doc.sections) {
18 append("### ")
19 appendln(section.label)
20 appendln(section.text)
21 }
22
Ilya Ryzhenkov69abe982014-07-14 18:38:22 +040023 if (node.members.any()) {
24 appendln("### Members")
25 appendln("| Name | Signature | Summary |")
26 appendln("|------|-----------|---------|")
27 for (member in node.members.sortBy { it.name }) {
28 val relativePath = locationService.relativeLocation(node, member, extension)
29 append("|[${member.name}](${relativePath})")
30 append("|`${signatureGenerator.render(member)}`")
31 append("|${member.doc.summary} ")
32 appendln("|")
33 }
Ilya Ryzhenkova0bfdbd2014-07-14 15:00:33 +040034 }
35 }
36 }
37}