aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/util/regex.kt
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-01 18:00:43 +0200
committerLinnea Gräf <nea@nea.moe>2024-10-01 18:00:43 +0200
commita4eac70118fc25334c9352712fe3c7944b8bed1d (patch)
treee0faedfca323e243a64a427d13b4fb31bcea9256 /src/main/kotlin/util/regex.kt
parentbeb14d73bd2d0d48513e540ff629b48f89b95ed9 (diff)
downloadfirmament-a4eac70118fc25334c9352712fe3c7944b8bed1d.tar.gz
firmament-a4eac70118fc25334c9352712fe3c7944b8bed1d.tar.bz2
firmament-a4eac70118fc25334c9352712fe3c7944b8bed1d.zip
Add basic sack util
[no changelog]
Diffstat (limited to 'src/main/kotlin/util/regex.kt')
-rw-r--r--src/main/kotlin/util/regex.kt54
1 files changed, 27 insertions, 27 deletions
diff --git a/src/main/kotlin/util/regex.kt b/src/main/kotlin/util/regex.kt
index 3ce5bd8..78c90e8 100644
--- a/src/main/kotlin/util/regex.kt
+++ b/src/main/kotlin/util/regex.kt
@@ -1,5 +1,3 @@
-
-
package moe.nea.firmament.util
import java.util.regex.Matcher
@@ -10,12 +8,12 @@ import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
inline fun <T> String.ifMatches(regex: Regex, block: (MatchResult) -> T): T? =
- regex.matchEntire(this)?.let(block)
+ regex.matchEntire(this)?.let(block)
inline fun <T> Pattern.useMatch(string: String, block: Matcher.() -> T): T? =
- matcher(string)
- .takeIf(Matcher::matches)
- ?.let(block)
+ matcher(string)
+ .takeIf(Matcher::matches)
+ ?.let(block)
@Language("RegExp")
val TIME_PATTERN = "[0-9]+[ms]"
@@ -25,31 +23,33 @@ val SHORT_NUMBER_FORMAT = "[0-9]+(?:,[0-9]+)*(?:\\.[0-9]+)?[kKmMbB]?"
val siScalars = mapOf(
- 'k' to 1_000.0,
- 'K' to 1_000.0,
- 'm' to 1_000_000.0,
- 'M' to 1_000_000.0,
- 'b' to 1_000_000_000.0,
- 'B' to 1_000_000_000.0,
+ 'k' to 1_000.0,
+ 'K' to 1_000.0,
+ 'm' to 1_000_000.0,
+ 'M' to 1_000_000.0,
+ 'b' to 1_000_000_000.0,
+ 'B' to 1_000_000_000.0,
)
fun parseTimePattern(text: String): Duration {
- val length = text.dropLast(1).toInt()
- return when (text.last()) {
- 'm' -> length.minutes
- 's' -> length.seconds
- else -> error("Invalid pattern for time $text")
- }
+ val length = text.dropLast(1).toInt()
+ return when (text.last()) {
+ 'm' -> length.minutes
+ 's' -> length.seconds
+ else -> error("Invalid pattern for time $text")
+ }
}
fun parseShortNumber(string: String): Double {
- var k = string.replace(",", "")
- val scalar = k.last()
- var scalarMultiplier = siScalars[scalar]
- if (scalarMultiplier == null) {
- scalarMultiplier = 1.0
- } else {
- k = k.dropLast(1)
- }
- return k.toDouble() * scalarMultiplier
+ if (string.startsWith("-")) return -parseShortNumber(string.substring(1))
+ if (string.startsWith("+")) return parseShortNumber(string.substring(1))
+ var k = string.replace(",", "")
+ val scalar = k.last()
+ var scalarMultiplier = siScalars[scalar]
+ if (scalarMultiplier == null) {
+ scalarMultiplier = 1.0
+ } else {
+ k = k.dropLast(1)
+ }
+ return k.toDouble() * scalarMultiplier
}