diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Formats/HtmlFormatService.kt | 7 | ||||
-rw-r--r-- | src/Formats/MarkdownFormatService.kt | 8 | ||||
-rw-r--r-- | src/Formats/StructuredFormatService.kt | 21 | ||||
-rw-r--r-- | src/Java/JavaDocumentationBuilder.kt | 3 | ||||
-rw-r--r-- | src/Kotlin/ContentBuilder.kt | 4 | ||||
-rw-r--r-- | src/Model/Content.kt | 3 |
6 files changed, 28 insertions, 18 deletions
diff --git a/src/Formats/HtmlFormatService.kt b/src/Formats/HtmlFormatService.kt index fee21738..78d3cff2 100644 --- a/src/Formats/HtmlFormatService.kt +++ b/src/Formats/HtmlFormatService.kt @@ -98,11 +98,10 @@ public open class HtmlFormatService(locationService: LocationService, return "<code>${code}</code>" } - override fun formatList(text: String): String { - return "<ul>${text}</ul>" - } + override fun formatUnorderedList(text: String): String = "<ul>${text}</ul>" + override fun formatOrderedList(text: String): String = "<ol>${text}</ol>" - override fun formatListItem(text: String): String { + override fun formatListItem(text: String, kind: ListKind): String { return "<li>${text}</li>" } diff --git a/src/Formats/MarkdownFormatService.kt b/src/Formats/MarkdownFormatService.kt index 8809fa96..ba7d8f7b 100644 --- a/src/Formats/MarkdownFormatService.kt +++ b/src/Formats/MarkdownFormatService.kt @@ -27,10 +27,12 @@ public open class MarkdownFormatService(locationService: LocationService, return "`$code`" } - override public fun formatList(text: String): String = text + "\n" + override public fun formatUnorderedList(text: String): String = text + "\n" + override public fun formatOrderedList(text: String): String = text + "\n" - override fun formatListItem(text: String): String { - return "* $text" + override fun formatListItem(text: String, kind: ListKind): String { + val itemText = if (text.endsWith("\n")) text else text + "\n" + return if (kind == ListKind.Unordered) "* $itemText" else "1. $itemText" } override public fun formatStrong(text: String): String { diff --git a/src/Formats/StructuredFormatService.kt b/src/Formats/StructuredFormatService.kt index b3d1463e..7b9374ec 100644 --- a/src/Formats/StructuredFormatService.kt +++ b/src/Formats/StructuredFormatService.kt @@ -5,6 +5,11 @@ import org.jetbrains.dokka.LanguageService.RenderMode public data class FormatLink(val text: String, val href: String) +enum class ListKind { + Ordered + Unordered +} + public abstract class StructuredFormatService(locationService: LocationService, val languageService: LanguageService, override val extension: String) : FormatService { @@ -33,16 +38,17 @@ public abstract class StructuredFormatService(locationService: LocationService, public abstract fun formatStrikethrough(text: String): String public abstract fun formatEmphasis(text: String): String public abstract fun formatCode(code: String): String - public abstract fun formatList(text: String): String - public abstract fun formatListItem(text: String): String + public abstract fun formatUnorderedList(text: String): String + public abstract fun formatOrderedList(text: String): String + public abstract fun formatListItem(text: String, kind: ListKind): String public abstract fun formatBreadcrumbs(items: Iterable<FormatLink>): String public abstract fun formatNonBreakingSpace(): String - open fun formatText(location: Location, nodes: Iterable<ContentNode>): String { - return nodes.map { formatText(location, it) }.join("") + open fun formatText(location: Location, nodes: Iterable<ContentNode>, listKind: ListKind = ListKind.Unordered): String { + return nodes.map { formatText(location, it, listKind) }.join("") } - open fun formatText(location: Location, content: ContentNode): String { + open fun formatText(location: Location, content: ContentNode, listKind: ListKind = ListKind.Unordered): String { return StringBuilder { when (content) { is ContentText -> append(formatText(content.text)) @@ -54,8 +60,9 @@ public abstract class StructuredFormatService(locationService: LocationService, is ContentStrikethrough -> append(formatStrikethrough(formatText(location, content.children))) is ContentCode -> append(formatCode(formatText(location, content.children))) is ContentEmphasis -> append(formatEmphasis(formatText(location, content.children))) - is ContentList -> append(formatList(formatText(location, content.children))) - is ContentListItem -> append(formatListItem(formatText(location, content.children))) + is ContentUnorderedList -> append(formatUnorderedList(formatText(location, content.children, ListKind.Unordered))) + is ContentOrderedList -> append(formatOrderedList(formatText(location, content.children, ListKind.Ordered))) + is ContentListItem -> append(formatListItem(formatText(location, content.children), listKind)) is ContentNodeLink -> { val node = content.node diff --git a/src/Java/JavaDocumentationBuilder.kt b/src/Java/JavaDocumentationBuilder.kt index 5720850d..c2a15a45 100644 --- a/src/Java/JavaDocumentationBuilder.kt +++ b/src/Java/JavaDocumentationBuilder.kt @@ -84,7 +84,8 @@ public class JavaDocumentationBuilder(private val options: DocumentationOptions, "s", "del" -> ContentStrikethrough() "code" -> ContentCode() "pre" -> ContentBlockCode() - "ul" -> ContentList() + "ul" -> ContentUnorderedList() + "ol" -> ContentOrderedList() "li" -> ContentListItem() "a" -> createLink(element) else -> ContentBlock() diff --git a/src/Kotlin/ContentBuilder.kt b/src/Kotlin/ContentBuilder.kt index 44a4f39e..4081dc6e 100644 --- a/src/Kotlin/ContentBuilder.kt +++ b/src/Kotlin/ContentBuilder.kt @@ -25,12 +25,12 @@ public fun buildContentTo(tree: MarkdownNode, target: ContentBlock, linkResolver val parent = nodeStack.peek()!! when (node.type) { MarkdownElementTypes.UNORDERED_LIST -> { - nodeStack.push(ContentList()) + nodeStack.push(ContentUnorderedList()) processChildren() parent.append(nodeStack.pop()) } MarkdownElementTypes.ORDERED_LIST -> { - nodeStack.push(ContentList()) // TODO: add list kind + nodeStack.push(ContentOrderedList()) processChildren() parent.append(nodeStack.pop()) } diff --git a/src/Model/Content.kt b/src/Model/Content.kt index 91a7da81..d9c3d139 100644 --- a/src/Model/Content.kt +++ b/src/Model/Content.kt @@ -76,7 +76,8 @@ public class ContentExternalLink(val href : String) : ContentBlock() { children.hashCode() * 31 + href.hashCode() } -public class ContentList() : ContentBlock() +public class ContentUnorderedList() : ContentBlock() +public class ContentOrderedList() : ContentBlock() public class ContentListItem() : ContentBlock() public class ContentSection(public val tag: String, public val subjectName: String?) : ContentBlock() { |