Skip to content

Commit 0b39f50

Browse files
committed
Added ability for OptionalArg to return a default value.
use CommandContext#getArgumentOrElse() to get a default value if none are present.
1 parent 109aad0 commit 0b39f50

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

src/main/java/org/mangorage/mangobotcore/api/command/v1/CommandContext.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.mangorage.mangobotcore.api.command.v1;
22

33
import org.mangorage.mangobotcore.api.command.v1.argument.Argument;
4+
import org.mangorage.mangobotcore.api.command.v1.argument.OptionalArg;
45

56
public final class CommandContext<C> {
67

@@ -40,6 +41,11 @@ public <T> T getArgument(Argument<T> argument) {
4041
return rawValue.value();
4142
}
4243

44+
public <T> T getArgumentOrElse(OptionalArg<T> optionalArgument) {
45+
final var result = getArgument(optionalArgument);
46+
return result == null ? optionalArgument.getDefaultValue() : result;
47+
}
48+
4349
public String peek() {
4450
return index < arguments.length ? arguments[index] : null;
4551
}
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
package org.mangorage.mangobotcore.api.command.v1.argument;
22

33
public class OptionalArg<T> extends Argument<T> {
4-
public OptionalArg(String name, String description, ArgumentType<T> argumentType) {
4+
private final T defaultValue;
5+
6+
public OptionalArg(String name, String description, ArgumentType<T> argumentType, T defaultValue) {
57
super(name, description, argumentType);
8+
this.defaultValue = defaultValue;
9+
}
10+
11+
public T getDefaultValue() {
12+
return defaultValue;
613
}
714
}

0 commit comments

Comments
 (0)