This commit is contained in:
84
src/commonMain/kotlin/com/infendro/cli/argument/Boolean.kt
Normal file
84
src/commonMain/kotlin/com/infendro/cli/argument/Boolean.kt
Normal file
@@ -0,0 +1,84 @@
|
||||
package com.infendro.cli.argument
|
||||
|
||||
import com.infendro.cli.Command
|
||||
|
||||
private object BooleanParser : Parser<Boolean> {
|
||||
override fun parse(
|
||||
text: String?,
|
||||
): Boolean {
|
||||
return text == null || text.toBooleanStrict()
|
||||
}
|
||||
}
|
||||
|
||||
class BooleanArgument(
|
||||
override val name: String,
|
||||
) : Argument.Single<Boolean>() {
|
||||
override val parser: Parser<Boolean>
|
||||
get() = BooleanParser
|
||||
}
|
||||
|
||||
fun boolean(
|
||||
name: String,
|
||||
) = BooleanArgument(name)
|
||||
|
||||
fun Command.Builder.boolean(
|
||||
name: String,
|
||||
) = BooleanArgument(name)
|
||||
.also { argument(it) }
|
||||
|
||||
class BooleanOrElseArgument(
|
||||
override val name: String,
|
||||
override val other: Boolean,
|
||||
) : Argument.SingleOrElse<Boolean>() {
|
||||
override val parser: Parser<Boolean>
|
||||
get() = BooleanParser
|
||||
}
|
||||
|
||||
fun booleanOrElse(
|
||||
name: String,
|
||||
other: Boolean,
|
||||
) = BooleanOrElseArgument(name, other)
|
||||
|
||||
fun Command.Builder.booleanOrElse(
|
||||
name: String,
|
||||
other: Boolean,
|
||||
) = BooleanOrElseArgument(name, other)
|
||||
.also { argument(it) }
|
||||
|
||||
class BooleanOrNullArgument(
|
||||
override val name: String,
|
||||
) : Argument.SingleOrNull<Boolean>() {
|
||||
override val parser: Parser<Boolean>
|
||||
get() = BooleanParser
|
||||
}
|
||||
|
||||
fun booleanOrNull(
|
||||
name: String,
|
||||
) = BooleanOrNullArgument(name)
|
||||
|
||||
fun Command.Builder.booleanOrNull(
|
||||
name: String,
|
||||
) = BooleanOrNullArgument(name)
|
||||
.also { argument(it) }
|
||||
|
||||
class BooleansArgument(
|
||||
override val name: String,
|
||||
override val min: Int = 0,
|
||||
override val max: Int = Int.MAX_VALUE,
|
||||
) : Argument.Multiple<Boolean>() {
|
||||
override val parser: Parser<Boolean>
|
||||
get() = BooleanParser
|
||||
}
|
||||
|
||||
fun booleans(
|
||||
name: String,
|
||||
min: Int = 0,
|
||||
max: Int = Int.MAX_VALUE,
|
||||
) = BooleansArgument(name, min, max)
|
||||
|
||||
fun Command.Builder.booleans(
|
||||
name: String,
|
||||
min: Int = 0,
|
||||
max: Int = Int.MAX_VALUE,
|
||||
) = BooleansArgument(name, min, max)
|
||||
.also { argument(it) }
|
||||
Reference in New Issue
Block a user