implement more parsers

This commit is contained in:
2026-01-01 00:25:56 +01:00
parent 0dc064b8cf
commit 7b9e39f9d0
7 changed files with 140 additions and 6 deletions

View File

@@ -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)
}
}

View File

@@ -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())
}
}