From 22d99dbda6297523392acffac9ab1c1c9d0e5cd2 Mon Sep 17 00:00:00 2001 From: rnentjes Date: Sat, 10 Jan 2026 12:53:08 +0100 Subject: [PATCH] Extend list parsing to handle multi-line items, improve checkbox list parsing with edge case handling, add unordered/ordered list tests, and update version to 1.0.6. --- build.gradle.kts | 2 +- .../kotlin/nl/astraeus/markdown/parser/Parser.kt | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3e54e45..6bdfac2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "nl.astraeus" -version = "1.0.7" +version = "1.0.8" repositories { mavenCentral() diff --git a/src/commonMain/kotlin/nl/astraeus/markdown/parser/Parser.kt b/src/commonMain/kotlin/nl/astraeus/markdown/parser/Parser.kt index 570c543..8b853ef 100644 --- a/src/commonMain/kotlin/nl/astraeus/markdown/parser/Parser.kt +++ b/src/commonMain/kotlin/nl/astraeus/markdown/parser/Parser.kt @@ -16,6 +16,7 @@ fun markdown(text: String): List { var language = "" var type = MarkdownType.PARAGRAPH var listIndex = 1 + var checkboxLine = 0 var index = 0 val buffer = StringBuilder() @@ -51,15 +52,16 @@ fun markdown(text: String): List { type == MarkdownType.CHECKBOX_LIST -> { if (line.isBlank()) { if (buffer.isNotBlank()) { - addCheckbox(checkboxList, index, buffer) + addCheckbox(checkboxList, checkboxLine, buffer) } parts.add(MarkdownPart.CheckboxList(checkboxList)) parseBuffer() continue } else if (line.startsWith("- [ ]") || line.startsWith("- [x]")) { if (buffer.isNotBlank()) { - addCheckbox(checkboxList, index, buffer) + addCheckbox(checkboxList, checkboxLine, buffer) } + checkboxLine = index buffer.append(line) } else { buffer.append(" ") @@ -132,6 +134,7 @@ fun markdown(text: String): List { line.startsWith("- [ ]") || line.startsWith("- [x]") -> { parseBuffer() type = MarkdownType.CHECKBOX_LIST + checkboxLine = index buffer.append(line) } @@ -183,7 +186,7 @@ fun markdown(text: String): List { if (type == MarkdownType.CHECKBOX_LIST) { if (buffer.isNotBlank()) { - addCheckbox(checkboxList, index, buffer) + addCheckbox(checkboxList, checkboxLine, buffer) } parts.add(MarkdownPart.CheckboxList(checkboxList)) } else {