diff options
author | Linnea Gräf <nea@nea.moe> | 2024-03-24 16:15:13 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-03-24 16:15:13 +0100 |
commit | 340fc50af3a33f5d3f2fc1928d6ce34baae0bd4e (patch) | |
tree | 0078cea8857364e32e4fcced9ad733000208687d | |
parent | 238dabfe06fade0cd9a2b0fc286bddc6a48151f6 (diff) | |
download | blog-infra-340fc50af3a33f5d3f2fc1928d6ce34baae0bd4e.tar.gz blog-infra-340fc50af3a33f5d3f2fc1928d6ce34baae0bd4e.tar.bz2 blog-infra-340fc50af3a33f5d3f2fc1928d6ce34baae0bd4e.zip |
Add freestanding star test
-rw-r--r-- | src/main/kotlin/moe/nea/blog/md/MarkdownParser.kt | 14 | ||||
-rw-r--r-- | src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt | 10 |
2 files changed, 19 insertions, 5 deletions
diff --git a/src/main/kotlin/moe/nea/blog/md/MarkdownParser.kt b/src/main/kotlin/moe/nea/blog/md/MarkdownParser.kt index 19a4e99..40c4c30 100644 --- a/src/main/kotlin/moe/nea/blog/md/MarkdownParser.kt +++ b/src/main/kotlin/moe/nea/blog/md/MarkdownParser.kt @@ -70,17 +70,21 @@ class MarkdownParser(source: String) { } fun parseInlineTextOnce(lookback: MarkdownFormat, text: String): Pair<MarkdownFormat, String> { + require(text.isNotEmpty()) // TODO handle empty string val parser = inlineParsers.find { it.detect(lookback, text) } - if (parser != null) + if (parser != null) { return parser.parse(this, text) - require(!text.isEmpty()) // TODO handle empty string - if (text[0] == ' ') + } + if (text[0] == ' ') { return Pair(Whitespace(), text.substring(1)) + } val nextSpecial = text.indexOfFirst { it in inlineParsers.flatMap { it.specialSyntax } || it == ' ' } - if (nextSpecial == 0) + if (nextSpecial == 0) { return Pair(Word(text.substring(0, 1)), text.substring(1)) - if (nextSpecial == -1) + } + if (nextSpecial == -1) { return Pair(Word(text), "") + } return Pair(Word(text.substring(0, nextSpecial)), text.substring(nextSpecial)) } diff --git a/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt b/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt index b4b102a..0e08473 100644 --- a/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt +++ b/src/test/kotlin/moe/nea/blog/md/test/TestItalics.kt @@ -56,6 +56,16 @@ class TestItalics { } @Test + fun testFreestandingStar() { + assertInlineFormat("left * right", "left * right") + } + + @Test + fun testFreestandingStarInItalics() { + assertInlineFormat("<i>left * right</i>", "*left * right*") + } + + @Test fun testNested() { assertInlineFormat("<i>a <b>bold</b> b</i>", "*a **bold** b*") assertInlineFormat("<i>a <i>double italics</i></i>", "*a *double italics**") |