Ilya Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 1 | package org.jetbrains.dokka |
| 2 | |
| 3 | public 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 Ryzhenkov | 03d0fd4 | 2014-07-14 16:08:17 +0400 | [diff] [blame^] | 10 | appendln("# ${node.name}") |
| 11 | appendln("```") |
Ilya Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 12 | appendln(signatureGenerator.render(node)) |
Ilya Ryzhenkov | 03d0fd4 | 2014-07-14 16:08:17 +0400 | [diff] [blame^] | 13 | appendln("```") |
Ilya Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 14 | 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 Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 22 | 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 | } |