Add test for autolink parsing, extend parser with autolink support, and bump version to 2.1.0

This commit is contained in:
2026-02-27 15:15:05 +01:00
parent 5c0d09e38f
commit bda99a5d56
3 changed files with 38 additions and 3 deletions

View File

@@ -8,7 +8,7 @@ plugins {
}
group = "nl.astraeus"
version = "2.0.1"
version = "2.1.0"
repositories {
mavenCentral()

View File

@@ -1,6 +1,14 @@
package nl.astraeus.markdown.parser
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.*
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.Bold
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.BoldItalic
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.Image
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.InlineCode
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.Italic
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.LineBreak
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.Link
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.StrikeThrough
import nl.astraeus.markdown.parser.MarkdownPart.ParagraphPart.Text
private enum class ParType {
TEXT,
@@ -19,6 +27,7 @@ private enum class ParType {
LINK_IMAGE_ALT,
LINK_IMAGE_SRC,
LINK_IMAGE_LINK,
AUTOLINK,
}
private typealias ParagraphData = MutableMap<ParType, String>
@@ -114,6 +123,21 @@ private val states = listOf(
ParState(ParType.ITALIC, "*", ParType.TEXT) { data ->
Italic(data[ParType.ITALIC]!!)
},
// Autolinks
ParState(ParType.TEXT, "<", ParType.AUTOLINK) { data ->
Text(data[ParType.TEXT]!!)
},
ParState(ParType.AUTOLINK, ">", ParType.TEXT) { data ->
val content = data[ParType.AUTOLINK]!!
if (content.contains("@") and content.contains(".")) {
Link("mailto:$content", content)
} else {
Link(content, content)
}
},
)
private fun String.test(index: Int, value: String): Boolean {

View File

@@ -364,7 +364,6 @@ class ParseTest {
assertEquals(2, list2.lines[2].indentation)
}
@Test
fun testCheckboxListError() {
val input = """
@@ -396,4 +395,16 @@ class ParseTest {
assertEquals("markdown", (p.parts[1] as MarkdownPart.ParagraphPart.Bold).text)
}
@Test
fun testAutlinks() {
val input = """
Dit is een text met <info@example.com> mail autolink and <http://www.nu.nl> http autolink.
""".trimIndent()
val md = markdown(input)
assertEquals(1, md.size)
val paragraph = md[0] as MarkdownPart.Paragraph
assertEquals(5, paragraph.parts.size)
}
}