mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-26 16:10:11 +08:00
Separate command descriptor files
This commit is contained in:
parent
72b75fd287
commit
f10632e754
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020 Mamoe Technologies and contributors.
|
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||||
*
|
*
|
||||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||||
@ -14,93 +14,16 @@ import net.mamoe.mirai.console.command.descriptor.AbstractCommandValueParameter.
|
|||||||
import net.mamoe.mirai.console.command.descriptor.AbstractCommandValueParameter.UserDefinedType.Companion.createRequired
|
import net.mamoe.mirai.console.command.descriptor.AbstractCommandValueParameter.UserDefinedType.Companion.createRequired
|
||||||
import net.mamoe.mirai.console.command.descriptor.ArgumentAcceptance.Companion.isAcceptable
|
import net.mamoe.mirai.console.command.descriptor.ArgumentAcceptance.Companion.isAcceptable
|
||||||
import net.mamoe.mirai.console.command.parse.CommandValueArgument
|
import net.mamoe.mirai.console.command.parse.CommandValueArgument
|
||||||
import net.mamoe.mirai.console.command.resolve.ResolvedCommandCall
|
|
||||||
import net.mamoe.mirai.console.internal.data.classifierAsKClass
|
import net.mamoe.mirai.console.internal.data.classifierAsKClass
|
||||||
import net.mamoe.mirai.console.internal.data.classifierAsKClassOrNull
|
import net.mamoe.mirai.console.internal.data.classifierAsKClassOrNull
|
||||||
import net.mamoe.mirai.console.internal.data.typeOf0
|
import net.mamoe.mirai.console.internal.data.typeOf0
|
||||||
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.KFunction
|
|
||||||
import kotlin.reflect.KType
|
import kotlin.reflect.KType
|
||||||
import kotlin.reflect.full.isSubclassOf
|
import kotlin.reflect.full.isSubclassOf
|
||||||
import kotlin.reflect.full.isSubtypeOf
|
import kotlin.reflect.full.isSubtypeOf
|
||||||
import kotlin.reflect.typeOf
|
import kotlin.reflect.typeOf
|
||||||
|
|
||||||
/**
|
|
||||||
* 指令签名. 表示指令定义的需要的参数.
|
|
||||||
*
|
|
||||||
* @see AbstractCommandSignature
|
|
||||||
*/
|
|
||||||
@ExperimentalCommandDescriptors
|
|
||||||
public interface CommandSignature {
|
|
||||||
/**
|
|
||||||
* 接收者参数, 为 [CommandSender] 子类
|
|
||||||
*/
|
|
||||||
@ConsoleExperimentalApi
|
|
||||||
public val receiverParameter: CommandReceiverParameter<out CommandSender>?
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 形式 值参数.
|
|
||||||
*/
|
|
||||||
public val valueParameters: List<AbstractCommandValueParameter<*>>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 调用这个指令.
|
|
||||||
*/
|
|
||||||
public suspend fun call(resolvedCommandCall: ResolvedCommandCall)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 来自 [KFunction] 反射得到的 [CommandSignature]
|
|
||||||
*
|
|
||||||
* @see CommandSignatureFromKFunctionImpl
|
|
||||||
*/
|
|
||||||
@ConsoleExperimentalApi
|
|
||||||
@ExperimentalCommandDescriptors
|
|
||||||
public interface CommandSignatureFromKFunction : CommandSignature {
|
|
||||||
public val originFunction: KFunction<*>
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see CommandSignatureImpl
|
|
||||||
* @see CommandSignatureFromKFunctionImpl
|
|
||||||
*/
|
|
||||||
@ExperimentalCommandDescriptors
|
|
||||||
public abstract class AbstractCommandSignature : CommandSignature {
|
|
||||||
override fun toString(): String {
|
|
||||||
val receiverParameter = receiverParameter
|
|
||||||
return if (receiverParameter == null) {
|
|
||||||
"CommandSignatureVariant(${valueParameters.joinToString()})"
|
|
||||||
} else {
|
|
||||||
"CommandSignatureVariant($receiverParameter, ${valueParameters.joinToString()})"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ExperimentalCommandDescriptors
|
|
||||||
public open class CommandSignatureImpl(
|
|
||||||
override val receiverParameter: CommandReceiverParameter<out CommandSender>?,
|
|
||||||
override val valueParameters: List<AbstractCommandValueParameter<*>>,
|
|
||||||
private val onCall: suspend CommandSignatureImpl.(resolvedCommandCall: ResolvedCommandCall) -> Unit,
|
|
||||||
) : CommandSignature, AbstractCommandSignature() {
|
|
||||||
override suspend fun call(resolvedCommandCall: ResolvedCommandCall) {
|
|
||||||
return onCall(resolvedCommandCall)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ConsoleExperimentalApi
|
|
||||||
@ExperimentalCommandDescriptors
|
|
||||||
public open class CommandSignatureFromKFunctionImpl(
|
|
||||||
override val receiverParameter: CommandReceiverParameter<out CommandSender>?,
|
|
||||||
override val valueParameters: List<AbstractCommandValueParameter<*>>,
|
|
||||||
override val originFunction: KFunction<*>,
|
|
||||||
private val onCall: suspend CommandSignatureFromKFunctionImpl.(resolvedCommandCall: ResolvedCommandCall) -> Unit,
|
|
||||||
) : CommandSignatureFromKFunction, AbstractCommandSignature() {
|
|
||||||
override suspend fun call(resolvedCommandCall: ResolvedCommandCall) {
|
|
||||||
return onCall(resolvedCommandCall)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inherited instances must be [CommandValueParameter] or [CommandReceiverParameter]
|
* Inherited instances must be [CommandValueParameter] or [CommandReceiverParameter]
|
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2020 Mamoe Technologies and contributors.
|
||||||
|
*
|
||||||
|
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||||
|
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||||
|
*
|
||||||
|
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.mamoe.mirai.console.command.descriptor
|
||||||
|
|
||||||
|
import net.mamoe.mirai.console.command.CommandSender
|
||||||
|
import net.mamoe.mirai.console.command.resolve.ResolvedCommandCall
|
||||||
|
import net.mamoe.mirai.console.util.ConsoleExperimentalApi
|
||||||
|
import kotlin.reflect.KFunction
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 指令签名. 表示指令定义的需要的参数.
|
||||||
|
*
|
||||||
|
* @see AbstractCommandSignature
|
||||||
|
*/
|
||||||
|
@ExperimentalCommandDescriptors
|
||||||
|
public interface CommandSignature {
|
||||||
|
/**
|
||||||
|
* 接收者参数, 为 [CommandSender] 子类
|
||||||
|
*/
|
||||||
|
@ConsoleExperimentalApi
|
||||||
|
public val receiverParameter: CommandReceiverParameter<out CommandSender>?
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 形式 值参数.
|
||||||
|
*/
|
||||||
|
public val valueParameters: List<AbstractCommandValueParameter<*>>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用这个指令.
|
||||||
|
*/
|
||||||
|
public suspend fun call(resolvedCommandCall: ResolvedCommandCall)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 来自 [KFunction] 反射得到的 [CommandSignature]
|
||||||
|
*
|
||||||
|
* @see CommandSignatureFromKFunctionImpl
|
||||||
|
*/
|
||||||
|
@ConsoleExperimentalApi
|
||||||
|
@ExperimentalCommandDescriptors
|
||||||
|
public interface CommandSignatureFromKFunction : CommandSignature {
|
||||||
|
public val originFunction: KFunction<*>
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see CommandSignatureImpl
|
||||||
|
* @see CommandSignatureFromKFunctionImpl
|
||||||
|
*/
|
||||||
|
@ExperimentalCommandDescriptors
|
||||||
|
public abstract class AbstractCommandSignature : CommandSignature {
|
||||||
|
override fun toString(): String {
|
||||||
|
val receiverParameter = receiverParameter
|
||||||
|
return if (receiverParameter == null) {
|
||||||
|
"CommandSignatureVariant(${valueParameters.joinToString()})"
|
||||||
|
} else {
|
||||||
|
"CommandSignatureVariant($receiverParameter, ${valueParameters.joinToString()})"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ExperimentalCommandDescriptors
|
||||||
|
public open class CommandSignatureImpl(
|
||||||
|
override val receiverParameter: CommandReceiverParameter<out CommandSender>?,
|
||||||
|
override val valueParameters: List<AbstractCommandValueParameter<*>>,
|
||||||
|
private val onCall: suspend CommandSignatureImpl.(resolvedCommandCall: ResolvedCommandCall) -> Unit,
|
||||||
|
) : CommandSignature, AbstractCommandSignature() {
|
||||||
|
override suspend fun call(resolvedCommandCall: ResolvedCommandCall) {
|
||||||
|
return onCall(resolvedCommandCall)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ConsoleExperimentalApi
|
||||||
|
@ExperimentalCommandDescriptors
|
||||||
|
public open class CommandSignatureFromKFunctionImpl(
|
||||||
|
override val receiverParameter: CommandReceiverParameter<out CommandSender>?,
|
||||||
|
override val valueParameters: List<AbstractCommandValueParameter<*>>,
|
||||||
|
override val originFunction: KFunction<*>,
|
||||||
|
private val onCall: suspend CommandSignatureFromKFunctionImpl.(resolvedCommandCall: ResolvedCommandCall) -> Unit,
|
||||||
|
) : CommandSignatureFromKFunction, AbstractCommandSignature() {
|
||||||
|
override suspend fun call(resolvedCommandCall: ResolvedCommandCall) {
|
||||||
|
return onCall(resolvedCommandCall)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user