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"
|
group = "nl.astraeus"
|
||||||
version = "2.0.1"
|
version = "2.1.0"
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@@ -1,6 +1,14 @@
|
|||||||
package nl.astraeus.markdown.parser
|
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 {
|
private enum class ParType {
|
||||||
TEXT,
|
TEXT,
|
||||||
@@ -19,6 +27,7 @@ private enum class ParType {
|
|||||||
LINK_IMAGE_ALT,
|
LINK_IMAGE_ALT,
|
||||||
LINK_IMAGE_SRC,
|
LINK_IMAGE_SRC,
|
||||||
LINK_IMAGE_LINK,
|
LINK_IMAGE_LINK,
|
||||||
|
AUTOLINK,
|
||||||
}
|
}
|
||||||
|
|
||||||
private typealias ParagraphData = MutableMap<ParType, String>
|
private typealias ParagraphData = MutableMap<ParType, String>
|
||||||
@@ -114,6 +123,21 @@ private val states = listOf(
|
|||||||
ParState(ParType.ITALIC, "*", ParType.TEXT) { data ->
|
ParState(ParType.ITALIC, "*", ParType.TEXT) { data ->
|
||||||
Italic(data[ParType.ITALIC]!!)
|
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 {
|
private fun String.test(index: Int, value: String): Boolean {
|
||||||
|
|||||||
@@ -364,7 +364,6 @@ class ParseTest {
|
|||||||
assertEquals(2, list2.lines[2].indentation)
|
assertEquals(2, list2.lines[2].indentation)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testCheckboxListError() {
|
fun testCheckboxListError() {
|
||||||
val input = """
|
val input = """
|
||||||
@@ -396,4 +395,16 @@ class ParseTest {
|
|||||||
assertEquals("markdown", (p.parts[1] as MarkdownPart.ParagraphPart.Bold).text)
|
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