aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/Formats
diff options
context:
space:
mode:
authorAlex Waters <awaters@nextfaze.com>2017-05-01 14:00:31 +0930
committerSimon Ogorodnik <sem-oro@yandex.ru>2017-05-04 14:26:37 +0300
commitc2afb348bb0d3dd60d336aa312b5fcedfb31b966 (patch)
tree7071aebbdb30b82532bcdce545edc27d2d3eb4a5 /core/src/main/kotlin/Formats
parent54c3c87acfb31afc22afc5f20229384f755b677f (diff)
downloaddokka-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.kt27
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()