diff --git a/build.gradle.kts b/build.gradle.kts index 7495a16..470fb14 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "dev.proxyfox" -version = "1.2" +version = "1.3" repositories { mavenCentral() diff --git a/src/main/kotlin/dev/proxyfox/markt/Node.kt b/src/main/kotlin/dev/proxyfox/markt/Node.kt index 81c7304..7790347 100644 --- a/src/main/kotlin/dev/proxyfox/markt/Node.kt +++ b/src/main/kotlin/dev/proxyfox/markt/Node.kt @@ -37,7 +37,7 @@ public class SymbolNode(public val left: String, public val right: String = left override val trueLength: Int get() = nodes.sumOf(MarkdownNode::trueLength) + left.length + right.length - public constructor(left: String, right: String, content: String) : this(left, right, MarkdownParser.parse(content).nodes) + public constructor(left: String, right: String, content: String, parser: MarkdownParser) : this(left, right, parser.parse(content).nodes) override fun toString(): String { var out = "" @@ -100,7 +100,7 @@ public class HyperlinkNode(public val url: String, public val nodes: MutableList override val trueLength: Int get() = nodes.sumOf(MarkdownNode::trueLength) + 4 + url.length - public constructor(url: String, content: String) : this(url, MarkdownParser.parse(content).nodes) + public constructor(url: String, content: String, parser: MarkdownParser) : this(url, parser.parse(content).nodes) override fun toString(): String { var out = "" diff --git a/src/main/kotlin/dev/proxyfox/markt/Rule.kt b/src/main/kotlin/dev/proxyfox/markt/Rule.kt index 3b18657..9be666d 100644 --- a/src/main/kotlin/dev/proxyfox/markt/Rule.kt +++ b/src/main/kotlin/dev/proxyfox/markt/Rule.kt @@ -3,15 +3,15 @@ package dev.proxyfox.markt public interface MarkdownRule { public val triggerLength: Int public val sortPriority: Int get() = -triggerLength - public fun parse(content: String) : MarkdownNode? + public fun parse(content: String, parser: MarkdownParser) : MarkdownNode? } public interface RegexRule : MarkdownRule { public val regex: Regex - public fun parse(match: MatchResult) : MarkdownNode - override fun parse(content: String): MarkdownNode? { + public fun parse(match: MatchResult, parser: MarkdownParser) : MarkdownNode + override fun parse(content: String, parser: MarkdownParser): MarkdownNode? { val match = regex.find(content) ?: return null - return parse(match) + return parse(match, parser) } } @@ -22,17 +22,17 @@ public class BracketRule(private val left: String, private val right: String) : override val regex: Regex = Regex("^${left.normalize()}(.+?[^\\\\])${right.normalize()}") override val triggerLength: Int = left.length - override fun parse(match: MatchResult): MarkdownNode = SymbolNode(left, right, match.groupValues[1]) + public override fun parse(match: MatchResult, parser: MarkdownParser): MarkdownNode = SymbolNode(left, right, match.groupValues[1], parser) } public object HyperlinkRule : RegexRule { override val regex: Regex = Regex("^\\[(.+?[^\\\\])]\\((.+?)\\)") override val triggerLength: Int = 1 - override fun parse(match: MatchResult): MarkdownNode = HyperlinkNode(match.groupValues[2], match.groupValues[1]) + override fun parse(match: MatchResult, parser: MarkdownParser): MarkdownNode = HyperlinkNode(match.groupValues[2], match.groupValues[1], parser) } public object MentionRule : RegexRule { override val regex: Regex = Regex("^<(@[!&]?|#|a?:[0-9a-zA-Z_\\-]{2,}?:)([0-9]+?)>") override val triggerLength: Int = 1 - override fun parse(match: MatchResult): MarkdownNode = MentionNode(match.groupValues[1], match.groupValues[2]) + override fun parse(match: MatchResult, parser: MarkdownParser): MarkdownNode = MentionNode(match.groupValues[1], match.groupValues[2]) }