Skip to content

Commit c680a95

Browse files
committed
Simplify splitOptionPrefix implementation
1 parent 93d88e9 commit c680a95

File tree

5 files changed

+5
-17
lines changed
  • clikt/src
    • commonMain/kotlin/com/github/ajalt/clikt
    • jsMain/kotlin/com/github/ajalt/clikt/mpp
    • jvmMain/kotlin/com/github/ajalt/clikt/mpp
    • nativeMain/kotlin/com/github/ajalt/clikt/mpp

5 files changed

+5
-17
lines changed

clikt/src/commonMain/kotlin/com/github/ajalt/clikt/mpp/MppH.kt

-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,4 @@ internal expect fun isWindowsMpp(): Boolean
1111
/** Doesn't return [Nothing], since it's a no-op on the browser */
1212
internal expect fun exitProcessMpp(status: Int)
1313

14-
internal expect fun isLetterOrDigit(c: Char): Boolean
15-
1614
internal expect fun readFileIfExists(filename: String): String?

clikt/src/commonMain/kotlin/com/github/ajalt/clikt/parameters/options/Option.kt

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.github.ajalt.clikt.parameters.options
22

33
import com.github.ajalt.clikt.completion.CompletionCandidates
4-
import com.github.ajalt.clikt.core.*
5-
import com.github.ajalt.clikt.mpp.isLetterOrDigit
4+
import com.github.ajalt.clikt.core.Context
5+
import com.github.ajalt.clikt.core.GroupableOption
6+
import com.github.ajalt.clikt.core.ParameterHolder
7+
import com.github.ajalt.clikt.core.StaticallyGroupedOption
68
import com.github.ajalt.clikt.output.HelpFormatter
79
import com.github.ajalt.clikt.parsers.Invocation
810
import com.github.ajalt.clikt.sources.ValueSource
@@ -130,7 +132,7 @@ internal fun inferEnvvar(names: Set<String>, envvar: String?, autoEnvvarPrefix:
130132
/** Split an option token into a pair of prefix to simple name. */
131133
internal fun splitOptionPrefix(name: String): Pair<String, String> =
132134
when {
133-
name.length < 2 || isLetterOrDigit(name[0]) -> "" to name
135+
name.length < 2 || name[0] !in "-@/+" -> "" to name
134136
name.length > 2 && name[0] == name[1] -> name.slice(0..1) to name.substring(2)
135137
else -> name.substring(0, 1) to name.substring(1)
136138
}

clikt/src/jsMain/kotlin/com/github/ajalt/clikt/mpp/MppImpl.kt

-4
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,8 @@ private val impls: JsMppImpls = try {
3535
BrowserMppImpls
3636
}
3737

38-
private val LETTER_OR_DIGIT_RE = Regex("""[a-zA-Z0-9]""")
39-
4038
internal actual val String.graphemeLengthMpp: Int get() = replace(ANSI_CODE_RE, "").length
4139

42-
internal actual fun isLetterOrDigit(c: Char): Boolean = LETTER_OR_DIGIT_RE.matches(c.toString())
43-
4440
internal actual fun readEnvvar(key: String): String? = impls.readEnvvar(key)
4541
internal actual fun isWindowsMpp(): Boolean = impls.isWindowsMpp()
4642
internal actual fun exitProcessMpp(status: Int): Unit = impls.exitProcessMpp(status)

clikt/src/jvmMain/kotlin/com/github/ajalt/clikt/mpp/MppImpl.kt

-4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ internal actual fun exitProcessMpp(status: Int) {
1818
exitProcess(status)
1919
}
2020

21-
internal actual fun isLetterOrDigit(c: Char): Boolean {
22-
return c.isLetterOrDigit()
23-
}
24-
2521
internal actual fun readFileIfExists(filename: String): String? {
2622
val file = File(filename)
2723
if (!file.isFile) return null

clikt/src/nativeMain/kotlin/com/github/ajalt/clikt/mpp/MppImpl.kt

-4
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,8 @@ import platform.posix.fopen
99
import kotlin.experimental.ExperimentalNativeApi
1010
import kotlin.system.exitProcess
1111

12-
private val LETTER_OR_DIGIT_RE = Regex("""[a-zA-Z0-9]""")
13-
1412
internal actual val String.graphemeLengthMpp: Int get() = replace(ANSI_CODE_RE, "").length
1513

16-
internal actual fun isLetterOrDigit(c: Char): Boolean = LETTER_OR_DIGIT_RE.matches(c.toString())
17-
1814
internal actual fun isWindowsMpp(): Boolean = Platform.osFamily == OsFamily.WINDOWS
1915

2016
internal actual fun exitProcessMpp(status: Int): Unit = exitProcess(status)

0 commit comments

Comments
 (0)