Allow scarpet function name to be different to annotated method name
This commit is contained in:
1 parent
4801534229
commit
cc24f79d47
2 files changed
+14
-3
No files matched your search
@@ -77,6 +77,7 @@ import carpet.script.value.Value;
|
||||
public final class AnnotationParser
|
||||
{
|
||||
static final int UNDEFINED_PARAMS = -2;
|
||||
static final String USE_METHOD_NAME = "$METHOD_NAME_MARKER$";
|
||||
private static final List<ParsedFunction> functionList = new ArrayList<>();
|
||||
|
||||
/**
|
||||
@@ -172,7 +173,8 @@ public final class AnnotationParser
|
||||
|
||||
private ParsedFunction(Method method, Class<?> originClass, Supplier<Object> instance)
|
||||
{
|
||||
this.name = method.getName();
|
||||
ScarpetFunction annotation = method.getAnnotation(ScarpetFunction.class);
|
||||
this.name = annotation.functionName() == USE_METHOD_NAME ? method.getName() : annotation.functionName();
|
||||
this.isMethodVarArgs = method.isVarArgs();
|
||||
this.methodParamCount = method.getParameterCount();
|
||||
|
||||
@@ -199,7 +201,7 @@ public final class AnnotationParser
|
||||
int setMaxParams = this.minParams; // Unlimited == Integer.MAX_VALUE
|
||||
if (this.isEffectivelyVarArgs)
|
||||
{
|
||||
setMaxParams = method.getAnnotation(ScarpetFunction.class).maxParams();
|
||||
setMaxParams = annotation.maxParams();
|
||||
if (setMaxParams == UNDEFINED_PARAMS)
|
||||
{
|
||||
throw new IllegalArgumentException("No maximum number of params specified for " + name + ", use ScarpetFunction.UNLIMITED_PARAMS for unlimited. "
|
||||
@@ -237,7 +239,7 @@ public final class AnnotationParser
|
||||
}
|
||||
|
||||
this.scarpetParamCount = this.isEffectivelyVarArgs ? -1 : this.minParams;
|
||||
this.contextType = method.getAnnotation(ScarpetFunction.class).contextType();
|
||||
this.contextType = annotation.contextType();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -75,6 +75,15 @@ public @interface ScarpetFunction
|
||||
*/
|
||||
int maxParams() default AnnotationParser.UNDEFINED_PARAMS;
|
||||
|
||||
/**
|
||||
* <p>The name of the function in Scarpet, that by default will be the method name.<p>
|
||||
*
|
||||
* <p>The convention in Scarpet is to use names in snake case.</p>
|
||||
*
|
||||
* @return The name for this function in Scarpet
|
||||
*/
|
||||
String functionName() default AnnotationParser.USE_METHOD_NAME;
|
||||
|
||||
/**
|
||||
* <p>Defines the Context Type that will be used when evaluating arguments to annotated methods.</p>
|
||||
*
|
||||
|
||||
Reference in new issue
Block a user