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

@@ -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 {