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}") |
Ilya Ryzhenkov | 69abe98 | 2014-07-14 18:38:22 +0400 | [diff] [blame] | 11 | appendln(node.doc.summary) |
Ilya Ryzhenkov | 03d0fd4 | 2014-07-14 16:08:17 +0400 | [diff] [blame] | 12 | appendln("```") |
Ilya Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 13 | appendln(signatureGenerator.render(node)) |
Ilya Ryzhenkov | 03d0fd4 | 2014-07-14 16:08:17 +0400 | [diff] [blame] | 14 | appendln("```") |
Ilya Ryzhenkov | 69abe98 | 2014-07-14 18:38:22 +0400 | [diff] [blame] | 15 | appendln(node.doc.description) |
Ilya Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 16 | appendln() |
| 17 | for (section in node.doc.sections) { |
| 18 | append("### ") |
| 19 | appendln(section.label) |
| 20 | appendln(section.text) |
| 21 | } |
| 22 | |
Ilya Ryzhenkov | 69abe98 | 2014-07-14 18:38:22 +0400 | [diff] [blame] | 23 | 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 Ryzhenkov | a0bfdbd | 2014-07-14 15:00:33 +0400 | [diff] [blame] | 34 | } |
| 35 | } |
| 36 | } |
| 37 | } |