generated from rnentjes/kotlin-server-web-empty
Add test for autolink parsing, extend parser with autolink support, and bump version to 2.1.0
This commit is contained in:
@@ -8,7 +8,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "nl.astraeus"
|
||||
version = "2.0.1"
|
||||
version = "2.1.0"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user