implement more parsers
This commit is contained in:
@@ -15,8 +15,8 @@ sealed class Argument<T : Any>(
|
||||
}
|
||||
|
||||
class OrElse<T : Any>(
|
||||
val other: T,
|
||||
parser: Parser<T>,
|
||||
val other: T,
|
||||
) : Argument<T>(parser) {
|
||||
override val required: Boolean
|
||||
get() = false
|
||||
@@ -41,7 +41,7 @@ sealed class Argument<T : Any>(
|
||||
Required(StringParser)
|
||||
|
||||
fun stringOrElse(other: String) =
|
||||
OrElse(other, StringParser)
|
||||
OrElse(StringParser, other)
|
||||
|
||||
fun stringOrNull() =
|
||||
OrNull(StringParser)
|
||||
@@ -53,7 +53,7 @@ sealed class Argument<T : Any>(
|
||||
Required(IntParser)
|
||||
|
||||
fun intOrElse(other: Int) =
|
||||
OrElse(other, IntParser)
|
||||
OrElse(IntParser, other)
|
||||
|
||||
fun intOrNull() =
|
||||
OrNull(IntParser)
|
||||
@@ -61,11 +61,47 @@ sealed class Argument<T : Any>(
|
||||
fun ints() =
|
||||
Variable(IntParser)
|
||||
|
||||
fun long() =
|
||||
Required(LongParser)
|
||||
|
||||
fun longOrElse(other: Long) =
|
||||
OrElse(LongParser, other)
|
||||
|
||||
fun longOrNull() =
|
||||
OrNull(LongParser)
|
||||
|
||||
fun longs() =
|
||||
Variable(LongParser)
|
||||
|
||||
fun float() =
|
||||
Required(FloatParser)
|
||||
|
||||
fun floatOrElse(other: Float) =
|
||||
OrElse(FloatParser, other)
|
||||
|
||||
fun floatOrNull() =
|
||||
OrNull(FloatParser)
|
||||
|
||||
fun floats() =
|
||||
Variable(FloatParser)
|
||||
|
||||
fun double() =
|
||||
Required(DoubleParser)
|
||||
|
||||
fun doubleOrElse(other: Double) =
|
||||
OrElse(DoubleParser, other)
|
||||
|
||||
fun doubleOrNull() =
|
||||
OrNull(DoubleParser)
|
||||
|
||||
fun doubles() =
|
||||
Variable(DoubleParser)
|
||||
|
||||
fun boolean() =
|
||||
Required(BooleanParser)
|
||||
|
||||
fun booleanOrElse(other: Boolean) =
|
||||
OrElse(other, BooleanParser)
|
||||
OrElse(BooleanParser, other)
|
||||
|
||||
fun booleanOrNull() =
|
||||
OrNull(BooleanParser)
|
||||
@@ -77,12 +113,24 @@ sealed class Argument<T : Any>(
|
||||
Required(enumParser<T>())
|
||||
|
||||
inline fun <reified T : Enum<T>> enumOrElse(other: T) =
|
||||
OrElse(other, enumParser<T>())
|
||||
OrElse(enumParser<T>(), other)
|
||||
|
||||
inline fun <reified T : Enum<T>> enumOrNull() =
|
||||
OrNull(enumParser<T>())
|
||||
|
||||
inline fun <reified T : Enum<T>> enums() =
|
||||
Variable(enumParser<T>())
|
||||
|
||||
fun regex() =
|
||||
Required(RegexParser)
|
||||
|
||||
fun regexOrElse(other: Regex) =
|
||||
OrElse(RegexParser, other)
|
||||
|
||||
fun regexOrNull() =
|
||||
OrNull(RegexParser)
|
||||
|
||||
fun regexs() =
|
||||
Variable(RegexParser)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,6 +104,42 @@ sealed class Option<T : Any>(
|
||||
fun ints(vararg names: String) =
|
||||
Variable(IntParser, names.asList())
|
||||
|
||||
fun long(vararg names: String) =
|
||||
Required(LongParser, names.asList())
|
||||
|
||||
fun longOrElse(vararg names: String, other: Long) =
|
||||
OrElse(LongParser, names.asList(), other)
|
||||
|
||||
fun longOrNull(vararg names: String) =
|
||||
OrNull(LongParser, names.asList())
|
||||
|
||||
fun longs(vararg names: String) =
|
||||
Variable(LongParser, names.asList())
|
||||
|
||||
fun float(vararg names: String) =
|
||||
Required(FloatParser, names.asList())
|
||||
|
||||
fun floatOrElse(vararg names: String, other: Float) =
|
||||
OrElse(FloatParser, names.asList(), other)
|
||||
|
||||
fun floatOrNull(vararg names: String) =
|
||||
OrNull(FloatParser, names.asList())
|
||||
|
||||
fun floats(vararg names: String) =
|
||||
Variable(FloatParser, names.asList())
|
||||
|
||||
fun double(vararg names: String) =
|
||||
Required(DoubleParser, names.asList())
|
||||
|
||||
fun doubleOrElse(vararg names: String, other: Double) =
|
||||
OrElse(DoubleParser, names.asList(), other)
|
||||
|
||||
fun doubleOrNull(vararg names: String) =
|
||||
OrNull(DoubleParser, names.asList())
|
||||
|
||||
fun doubles(vararg names: String) =
|
||||
Variable(DoubleParser, names.asList())
|
||||
|
||||
fun boolean(vararg names: String) =
|
||||
Required(BooleanParser, true, names.asList())
|
||||
|
||||
@@ -127,5 +163,17 @@ sealed class Option<T : Any>(
|
||||
|
||||
inline fun <reified T : Enum<T>> enums(vararg names: String) =
|
||||
Variable(enumParser<T>(), names.asList())
|
||||
|
||||
fun regex(vararg names: String) =
|
||||
Required(RegexParser, names.asList())
|
||||
|
||||
fun regexOrElse(vararg names: String, other: Regex) =
|
||||
OrElse(RegexParser, names.asList(), other)
|
||||
|
||||
fun regexOrNull(vararg names: String) =
|
||||
OrNull(RegexParser, names.asList())
|
||||
|
||||
fun regexs(vararg names: String) =
|
||||
Variable(RegexParser, names.asList())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.infendro.cli.parser
|
||||
|
||||
import com.infendro.cli.exception.run.ParseException
|
||||
|
||||
object DoubleParser : Parser<Double> {
|
||||
override fun parse(text: String): Double = try {
|
||||
text.toDouble()
|
||||
} catch (_: Exception) {
|
||||
throw ParseException(text, "Double")
|
||||
}
|
||||
}
|
||||
11
src/commonMain/kotlin/com/infendro/cli/parser/FloatParser.kt
Normal file
11
src/commonMain/kotlin/com/infendro/cli/parser/FloatParser.kt
Normal file
@@ -0,0 +1,11 @@
|
||||
package com.infendro.cli.parser
|
||||
|
||||
import com.infendro.cli.exception.run.ParseException
|
||||
|
||||
object FloatParser : Parser<Float> {
|
||||
override fun parse(text: String): Float = try {
|
||||
text.toFloat()
|
||||
} catch (_: Exception) {
|
||||
throw ParseException(text, "Float")
|
||||
}
|
||||
}
|
||||
11
src/commonMain/kotlin/com/infendro/cli/parser/LongParser.kt
Normal file
11
src/commonMain/kotlin/com/infendro/cli/parser/LongParser.kt
Normal file
@@ -0,0 +1,11 @@
|
||||
package com.infendro.cli.parser
|
||||
|
||||
import com.infendro.cli.exception.run.ParseException
|
||||
|
||||
object LongParser : Parser<Long> {
|
||||
override fun parse(text: String): Long = try {
|
||||
text.toLong()
|
||||
} catch (_: Exception) {
|
||||
throw ParseException(text, "Long")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.infendro.cli.parser
|
||||
|
||||
object RegexParser : Parser<Regex> {
|
||||
override fun parse(text: String) = Regex(text)
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
package com.infendro.cli.parser
|
||||
|
||||
object StringParser : Parser<String> {
|
||||
override fun parse(text: String): String = text
|
||||
override fun parse(text: String) = text
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user