implement more parsers
This commit is contained in:
@@ -15,8 +15,8 @@ sealed class Argument<T : Any>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class OrElse<T : Any>(
|
class OrElse<T : Any>(
|
||||||
val other: T,
|
|
||||||
parser: Parser<T>,
|
parser: Parser<T>,
|
||||||
|
val other: T,
|
||||||
) : Argument<T>(parser) {
|
) : Argument<T>(parser) {
|
||||||
override val required: Boolean
|
override val required: Boolean
|
||||||
get() = false
|
get() = false
|
||||||
@@ -41,7 +41,7 @@ sealed class Argument<T : Any>(
|
|||||||
Required(StringParser)
|
Required(StringParser)
|
||||||
|
|
||||||
fun stringOrElse(other: String) =
|
fun stringOrElse(other: String) =
|
||||||
OrElse(other, StringParser)
|
OrElse(StringParser, other)
|
||||||
|
|
||||||
fun stringOrNull() =
|
fun stringOrNull() =
|
||||||
OrNull(StringParser)
|
OrNull(StringParser)
|
||||||
@@ -53,7 +53,7 @@ sealed class Argument<T : Any>(
|
|||||||
Required(IntParser)
|
Required(IntParser)
|
||||||
|
|
||||||
fun intOrElse(other: Int) =
|
fun intOrElse(other: Int) =
|
||||||
OrElse(other, IntParser)
|
OrElse(IntParser, other)
|
||||||
|
|
||||||
fun intOrNull() =
|
fun intOrNull() =
|
||||||
OrNull(IntParser)
|
OrNull(IntParser)
|
||||||
@@ -61,11 +61,47 @@ sealed class Argument<T : Any>(
|
|||||||
fun ints() =
|
fun ints() =
|
||||||
Variable(IntParser)
|
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() =
|
fun boolean() =
|
||||||
Required(BooleanParser)
|
Required(BooleanParser)
|
||||||
|
|
||||||
fun booleanOrElse(other: Boolean) =
|
fun booleanOrElse(other: Boolean) =
|
||||||
OrElse(other, BooleanParser)
|
OrElse(BooleanParser, other)
|
||||||
|
|
||||||
fun booleanOrNull() =
|
fun booleanOrNull() =
|
||||||
OrNull(BooleanParser)
|
OrNull(BooleanParser)
|
||||||
@@ -77,12 +113,24 @@ sealed class Argument<T : Any>(
|
|||||||
Required(enumParser<T>())
|
Required(enumParser<T>())
|
||||||
|
|
||||||
inline fun <reified T : Enum<T>> enumOrElse(other: 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() =
|
inline fun <reified T : Enum<T>> enumOrNull() =
|
||||||
OrNull(enumParser<T>())
|
OrNull(enumParser<T>())
|
||||||
|
|
||||||
inline fun <reified T : Enum<T>> enums() =
|
inline fun <reified T : Enum<T>> enums() =
|
||||||
Variable(enumParser<T>())
|
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) =
|
fun ints(vararg names: String) =
|
||||||
Variable(IntParser, names.asList())
|
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) =
|
fun boolean(vararg names: String) =
|
||||||
Required(BooleanParser, true, names.asList())
|
Required(BooleanParser, true, names.asList())
|
||||||
|
|
||||||
@@ -127,5 +163,17 @@ sealed class Option<T : Any>(
|
|||||||
|
|
||||||
inline fun <reified T : Enum<T>> enums(vararg names: String) =
|
inline fun <reified T : Enum<T>> enums(vararg names: String) =
|
||||||
Variable(enumParser<T>(), names.asList())
|
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
|
package com.infendro.cli.parser
|
||||||
|
|
||||||
object StringParser : Parser<String> {
|
object StringParser : Parser<String> {
|
||||||
override fun parse(text: String): String = text
|
override fun parse(text: String) = text
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user