mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-27 00:30:17 +08:00
Use RawCommandArgument for CommandValueArgument
This commit is contained in:
parent
d6adb3c9ea
commit
4ddee69531
@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
package net.mamoe.mirai.console.command.descriptor
|
package net.mamoe.mirai.console.command.descriptor
|
||||||
|
|
||||||
|
import net.mamoe.mirai.console.command.parse.RawCommandArgument
|
||||||
|
import net.mamoe.mirai.message.data.MessageContent
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
@ -16,23 +18,23 @@ import kotlin.reflect.typeOf
|
|||||||
public interface TypeVariant<out OutType> {
|
public interface TypeVariant<out OutType> {
|
||||||
public val outType: KType
|
public val outType: KType
|
||||||
|
|
||||||
public fun mapValue(valueParameter: String): OutType
|
public fun mapValue(valueParameter: MessageContent): OutType
|
||||||
|
|
||||||
public companion object {
|
public companion object {
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
@JvmSynthetic
|
@JvmSynthetic
|
||||||
public inline operator fun <reified OutType> invoke(crossinline block: (valueParameter: String) -> OutType): TypeVariant<OutType> {
|
public inline operator fun <reified OutType> invoke(crossinline block: (valueParameter: RawCommandArgument) -> OutType): TypeVariant<OutType> {
|
||||||
return object : TypeVariant<OutType> {
|
return object : TypeVariant<OutType> {
|
||||||
override val outType: KType = typeOf<OutType>()
|
override val outType: KType = typeOf<OutType>()
|
||||||
override fun mapValue(valueParameter: String): OutType = block(valueParameter)
|
override fun mapValue(valueParameter: MessageContent): OutType = block(valueParameter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExperimentalCommandDescriptors
|
@ExperimentalCommandDescriptors
|
||||||
public object StringTypeVariant : TypeVariant<String> {
|
public object StringTypeVariant : TypeVariant<RawCommandArgument> {
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
override val outType: KType = typeOf<String>()
|
override val outType: KType = typeOf<String>()
|
||||||
override fun mapValue(valueParameter: String): String = valueParameter
|
override fun mapValue(valueParameter: RawCommandArgument): RawCommandArgument = valueParameter
|
||||||
}
|
}
|
||||||
|
@ -13,18 +13,25 @@ import net.mamoe.mirai.console.command.descriptor.ExperimentalCommandDescriptors
|
|||||||
import net.mamoe.mirai.console.command.descriptor.NoValueArgumentMappingException
|
import net.mamoe.mirai.console.command.descriptor.NoValueArgumentMappingException
|
||||||
import net.mamoe.mirai.console.command.descriptor.StringTypeVariant
|
import net.mamoe.mirai.console.command.descriptor.StringTypeVariant
|
||||||
import net.mamoe.mirai.console.command.descriptor.TypeVariant
|
import net.mamoe.mirai.console.command.descriptor.TypeVariant
|
||||||
|
import net.mamoe.mirai.message.data.MessageContent
|
||||||
import kotlin.reflect.full.isSubtypeOf
|
import kotlin.reflect.full.isSubtypeOf
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For developing use, to be inlined in the future.
|
||||||
|
*/
|
||||||
|
public typealias RawCommandArgument = MessageContent
|
||||||
|
|
||||||
@ExperimentalCommandDescriptors
|
@ExperimentalCommandDescriptors
|
||||||
public interface CommandValueArgument {
|
public interface CommandValueArgument {
|
||||||
public val value: String
|
public val value: RawCommandArgument
|
||||||
public val typeVariants: List<TypeVariant<*>>
|
public val typeVariants: List<TypeVariant<*>>
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExperimentalCommandDescriptors
|
@ExperimentalCommandDescriptors
|
||||||
public data class InvariantCommandValueArgument(
|
public data class InvariantCommandValueArgument(
|
||||||
public override val value: String,
|
public override val value: RawCommandArgument,
|
||||||
) : CommandValueArgument {
|
) : CommandValueArgument {
|
||||||
override val typeVariants: List<TypeVariant<*>> = listOf(StringTypeVariant)
|
override val typeVariants: List<TypeVariant<*>> = listOf(StringTypeVariant)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user