|
7 | 7 | import javax.annotation.Nonnull; |
8 | 8 | import java.util.Collections; |
9 | 9 | import java.util.List; |
| 10 | +import java.util.function.BiFunction; |
10 | 11 | import java.util.regex.Matcher; |
11 | 12 | import java.util.regex.Pattern; |
12 | 13 |
|
@@ -63,30 +64,42 @@ public List<String> getAliases() { |
63 | 64 | public void execute(@Nonnull final String argString) throws CommandException { |
64 | 65 | Matcher lambdaMapMatcher = lambdaMapPattern.matcher(argString); |
65 | 66 | if (lambdaMapMatcher.matches()) { |
66 | | - throw new CommandException(AnsiFormattedText.from("Incorrect number of arguments.\nusage: ") |
| 67 | + throw new CommandException(AnsiFormattedText.from("Incorrect usage.\nusage: ") |
67 | 68 | .bold().append(COMMAND_NAME).boldOff().append(" ").append(getUsage())); |
68 | 69 | } |
69 | | - Matcher lambdaMatcher = lambdaPattern.matcher(argString); |
70 | | - if (lambdaMatcher.matches()) { |
71 | | - variableHolder.set(lambdaMatcher.group("key"), lambdaMatcher.group("value")); |
72 | | - return; |
73 | | - } |
74 | | - Matcher alphanumericMatcher = argPattern.matcher(argString); |
75 | | - if (alphanumericMatcher.matches()) { |
76 | | - variableHolder.set(alphanumericMatcher.group("key"), alphanumericMatcher.group("value")); |
77 | | - return; |
78 | | - } |
79 | | - Matcher backtickLambdaMatcher = backtickLambdaPattern.matcher(argString); |
80 | | - if (argString.trim().startsWith("`") && backtickLambdaMatcher.matches() && backtickLambdaMatcher.group("key").length() > 2) { |
81 | | - variableHolder.set(backtickLambdaMatcher.group("key"), backtickLambdaMatcher.group("value")); |
82 | | - return; |
| 70 | + if (!validParameterAssignment(argString)) { |
| 71 | + throw new CommandException(AnsiFormattedText.from("Incorrect number of arguments.\nusage: ") |
| 72 | + .bold().append(COMMAND_NAME).boldOff().append(" ").append(getUsage())); |
83 | 73 | } |
84 | | - Matcher matcher = backtickPattern.matcher(argString); |
85 | | - if (argString.trim().startsWith("`") && matcher.matches() && matcher.group("key").length() > 2) { |
| 74 | + } |
| 75 | + |
| 76 | + private boolean validParameterAssignment(@Nonnull String argString) throws CommandException { |
| 77 | + return setParameterIfItMatchesPattern(argString, lambdaPattern, validParameterAssignment()) |
| 78 | + || setParameterIfItMatchesPattern(argString, argPattern, validParameterAssignment()) |
| 79 | + || setParameterIfItMatchesPattern(argString, backtickLambdaPattern, backTickMatchPattern()) |
| 80 | + || setParameterIfItMatchesPattern(argString, backtickPattern, backTickMatchPattern()); |
| 81 | + } |
| 82 | + |
| 83 | + private boolean setParameterIfItMatchesPattern(@Nonnull String argString, Pattern pattern, |
| 84 | + BiFunction<String, Matcher, Boolean> matchingFunction) throws CommandException { |
| 85 | + Matcher matcher = pattern.matcher(argString); |
| 86 | + if (matchingFunction.apply(argString, matcher)) { |
86 | 87 | variableHolder.set(matcher.group("key"), matcher.group("value")); |
87 | | - return; |
| 88 | + return true; |
| 89 | + } else { |
| 90 | + return false; |
88 | 91 | } |
89 | | - throw new CommandException(AnsiFormattedText.from("Incorrect number of arguments.\nusage: ") |
90 | | - .bold().append(COMMAND_NAME).boldOff().append(" ").append(getUsage())); |
| 92 | + } |
| 93 | + |
| 94 | + private BiFunction<String, Matcher, Boolean> validParameterAssignment() { |
| 95 | + return (argString, matcher) -> matcher.matches(); |
| 96 | + } |
| 97 | + |
| 98 | + private BiFunction<String, Matcher, Boolean> backTickMatchPattern() { |
| 99 | + return (argString, backtickLambdaMatcher) -> { |
| 100 | + return argString.trim().startsWith("`") |
| 101 | + && backtickLambdaMatcher.matches() |
| 102 | + && backtickLambdaMatcher.group("key").length() > 2; |
| 103 | + }; |
91 | 104 | } |
92 | 105 | } |
0 commit comments