diff options
| author | Alex Waters <awaters@nextfaze.com> | 2017-05-01 14:00:31 +0930 |
|---|---|---|
| committer | Simon Ogorodnik <sem-oro@yandex.ru> | 2017-05-04 14:26:37 +0300 |
| commit | c2afb348bb0d3dd60d336aa312b5fcedfb31b966 (patch) | |
| tree | 7071aebbdb30b82532bcdce545edc27d2d3eb4a5 /core/src/main/kotlin/Formats | |
| parent | 54c3c87acfb31afc22afc5f20229384f755b677f (diff) | |
| download | dokka-c2afb348bb0d3dd60d336aa312b5fcedfb31b966.tar.gz dokka-c2afb348bb0d3dd60d336aa312b5fcedfb31b966.tar.bz2 dokka-c2afb348bb0d3dd60d336aa312b5fcedfb31b966.zip | |
Fix Markdown list spacing, ordering, and erroneous new lines
Diffstat (limited to 'core/src/main/kotlin/Formats')
| -rw-r--r-- | core/src/main/kotlin/Formats/MarkdownFormatService.kt | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/core/src/main/kotlin/Formats/MarkdownFormatService.kt b/core/src/main/kotlin/Formats/MarkdownFormatService.kt index b9c9c04f..f7c17401 100644 --- a/core/src/main/kotlin/Formats/MarkdownFormatService.kt +++ b/core/src/main/kotlin/Formats/MarkdownFormatService.kt @@ -10,6 +10,13 @@ enum class ListKind { Unordered } +private class ListState(val kind: ListKind, var size: Int = 1) { + fun getTagAndIncrement() = when (kind) { + ListKind.Ordered -> "${size++}. " + else -> "* " + } +} + private val TWO_LINE_BREAKS = System.lineSeparator() + System.lineSeparator() open class MarkdownOutputBuilder(to: StringBuilder, @@ -20,7 +27,7 @@ open class MarkdownOutputBuilder(to: StringBuilder, impliedPlatforms: List<String>) : StructuredOutputBuilder(to, location, locationService, languageService, extension, impliedPlatforms) { - private val listKindStack = Stack<ListKind>() + private val listStack = ArrayDeque<ListState>() protected var inTableCell = false protected var inCodeBlock = false private var lastTableCellStart = -1 @@ -34,7 +41,7 @@ open class MarkdownOutputBuilder(to: StringBuilder, } private fun ensureNewline() { - if (inTableCell && listKindStack.isEmpty()) { + if (inTableCell && listStack.isEmpty()) { if (to.length != lastTableCellStart && !to.endsWith("<br>")) { to.append("<br>") } @@ -101,22 +108,22 @@ open class MarkdownOutputBuilder(to: StringBuilder, } override fun appendUnorderedList(body: () -> Unit) { - listKindStack.push(ListKind.Unordered) + listStack.push(ListState(ListKind.Unordered)) body() - listKindStack.pop() + listStack.pop() ensureNewline() } override fun appendOrderedList(body: () -> Unit) { - listKindStack.push(ListKind.Ordered) + listStack.push(ListState(ListKind.Ordered)) body() - listKindStack.pop() + listStack.pop() ensureNewline() } override fun appendListItem(body: () -> Unit) { ensureNewline() - to.append(if (listKindStack.peek() == ListKind.Unordered) "* " else "1. ") + to.append(listStack.peek()?.getTagAndIncrement()) body() ensureNewline() } @@ -151,8 +158,10 @@ open class MarkdownOutputBuilder(to: StringBuilder, if (inTableCell) { ensureNewline() body() - } - else { + } else if (listStack.isNotEmpty()) { + body() + ensureNewline() + } else { ensureParagraph() body() ensureParagraph() |
