fix: do trimming properly in startsWith & endsWith, #1282 (#1314)

Co-authored-by: ArcticLampyrid <arcticlampyrid@outlook.com>
This commit is contained in:
AdoptOSS 2021-06-08 15:42:37 +08:00 committed by GitHub
parent ad3bd4cc0d
commit 7732014cbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 6 deletions

View File

@ -210,8 +210,8 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
/** 如果消息的前缀是 [prefix] */
@MessageDsl
public fun startsWith(prefix: String, trim: Boolean = true): ListeningFilter {
val toCheck = if (trim) prefix.trim() else prefix
return content { (if (trim) it.trim() else it).startsWith(toCheck) }
val toCheck = if (trim) prefix.trimStart() else prefix
return content { (if (trim) it.trimStart() else it).startsWith(toCheck) }
}
/** 如果消息的前缀是 [prefix] */
@ -224,8 +224,10 @@ public open class MessageSubscribersBuilder<M : MessageEvent, out Ret, R : RR, R
/** 如果消息的结尾是 [suffix] */
@MessageDsl
@JvmOverloads // for binary compatibility
public fun endsWith(suffix: String, trim: Boolean = true): ListeningFilter =
content { if (trim) it.trimEnd().endsWith(suffix) else it.endsWith(suffix) }
public fun endsWith(suffix: String, trim: Boolean = true): ListeningFilter {
val toCheck = if (trim) suffix.trimEnd() else suffix
return content { (if (trim) it.trimEnd() else it).endsWith(toCheck) }
}
/** 如果消息的结尾是 [suffix] */
@MessageDsl

View File

@ -33,7 +33,7 @@ internal fun <M : MessageEvent, Ret, R : RR, RR> MessageSubscribersBuilder<M, Re
onEvent: @MessageDsl suspend M.(String) -> R
): Ret {
return if (trim) {
val toCheck = suffix.trim()
val toCheck = suffix.trimEnd()
content({ it.trimEnd().endsWith(toCheck) }) {
if (removeSuffix) this.onEvent(this.message.contentToString().removeSuffix(toCheck).trim())
else onEvent(this, this.message.contentToString().trim())
@ -53,7 +53,7 @@ internal fun <M : MessageEvent, Ret, R : RR, RR> MessageSubscribersBuilder<M, Re
onEvent: @MessageDsl suspend M.(String) -> R
): Ret {
return if (trim) {
val toCheck = prefix.trim()
val toCheck = prefix.trimStart()
content({ it.trimStart().startsWith(toCheck) }) {
if (removePrefix) this.onEvent(this.message.contentToString().substringAfter(toCheck).trim())
else onEvent(this, this.message.contentToString().trim())