You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2024/04/11 13:04:51 UTC
(commons-cli) 05/05: Internal refactoring
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-cli.git
commit eefb1e20b3ec68f29aab174ea077d06e36ac144c
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Apr 11 09:04:40 2024 -0400
Internal refactoring
---
.../java/org/apache/commons/cli/DefaultParser.java | 14 +++++++----
.../java/org/apache/commons/cli/GnuParser.java | 27 +++++++++++-----------
.../java/org/apache/commons/cli/PosixParser.java | 2 +-
.../apache/commons/cli/AbstractParserTestCase.java | 3 +--
4 files changed, 24 insertions(+), 22 deletions(-)
diff --git a/src/main/java/org/apache/commons/cli/DefaultParser.java b/src/main/java/org/apache/commons/cli/DefaultParser.java
index 64eba58..aa3a649 100644
--- a/src/main/java/org/apache/commons/cli/DefaultParser.java
+++ b/src/main/java/org/apache/commons/cli/DefaultParser.java
@@ -150,6 +150,10 @@ public class DefaultParser implements CommandLineParser {
return new Builder();
}
+ static int indexOfEqual(final String token) {
+ return token.indexOf(Char.EQUAL);
+ }
+
/** The command-line instance. */
protected CommandLine cmd;
@@ -358,7 +362,7 @@ public class DefaultParser implements CommandLineParser {
* @param token the command line token to handle
*/
private void handleLongOption(final String token) throws ParseException {
- if (token.indexOf(Char.EQUAL) == -1) {
+ if (indexOfEqual(token) == -1) {
handleLongOptionWithoutEqual(token);
} else {
handleLongOptionWithEqual(token);
@@ -373,7 +377,7 @@ public class DefaultParser implements CommandLineParser {
* @param token the command line token to handle
*/
private void handleLongOptionWithEqual(final String token) throws ParseException {
- final int pos = token.indexOf(Char.EQUAL);
+ final int pos = indexOfEqual(token);
final String value = token.substring(pos + 1);
final String opt = token.substring(0, pos);
final List<String> matchingOpts = getMatchingLongOptions(opt);
@@ -469,7 +473,7 @@ public class DefaultParser implements CommandLineParser {
*/
private void handleShortAndLongOption(final String token) throws ParseException {
final String t = Util.stripLeadingHyphens(token);
- final int pos = t.indexOf(Char.EQUAL);
+ final int pos = indexOfEqual(t);
if (t.length() == 1) {
// -S
if (options.hasShortOption(t)) {
@@ -600,7 +604,7 @@ public class DefaultParser implements CommandLineParser {
if (token == null || !token.startsWith("-") || token.length() == 1) {
return false;
}
- final int pos = token.indexOf(Char.EQUAL);
+ final int pos = indexOfEqual(token);
final String t = pos == -1 ? token : token.substring(0, pos);
if (!getMatchingLongOptions(t).isEmpty()) {
// long or partial long options (--L, -L, --L=V, -L=V, --l, --l=V)
@@ -647,7 +651,7 @@ public class DefaultParser implements CommandLineParser {
return false;
}
// remove leading "-" and "=value"
- final int pos = token.indexOf(Char.EQUAL);
+ final int pos = indexOfEqual(token);
final String optName = pos == -1 ? token.substring(1) : token.substring(1, pos);
if (options.hasShortOption(optName)) {
return true;
diff --git a/src/main/java/org/apache/commons/cli/GnuParser.java b/src/main/java/org/apache/commons/cli/GnuParser.java
index d96b7f6..20b4df3 100644
--- a/src/main/java/org/apache/commons/cli/GnuParser.java
+++ b/src/main/java/org/apache/commons/cli/GnuParser.java
@@ -45,12 +45,9 @@ public class GnuParser extends Parser {
@Override
protected String[] flatten(final Options options, final String[] arguments, final boolean stopAtNonOption) {
final List<String> tokens = new ArrayList<>();
-
boolean eatTheRest = false;
-
for (int i = 0; i < arguments.length; i++) {
final String arg = arguments[i];
-
if ("--".equals(arg)) {
eatTheRest = true;
tokens.add("--");
@@ -58,20 +55,22 @@ public class GnuParser extends Parser {
tokens.add("-");
} else if (arg.startsWith("-")) {
final String opt = Util.stripLeadingHyphens(arg);
-
if (options.hasOption(opt)) {
tokens.add(arg);
- } else if (opt.indexOf(Char.EQUAL) != -1 && options.hasOption(opt.substring(0, opt.indexOf(Char.EQUAL)))) {
- // the format is --foo=value or -foo=value
- tokens.add(arg.substring(0, arg.indexOf(Char.EQUAL))); // --foo
- tokens.add(arg.substring(arg.indexOf(Char.EQUAL) + 1)); // value
- } else if (options.hasOption(arg.substring(0, 2))) {
- // the format is a special properties option (-Dproperty=value)
- tokens.add(arg.substring(0, 2)); // -D
- tokens.add(arg.substring(2)); // property=value
} else {
- eatTheRest = stopAtNonOption;
- tokens.add(arg);
+ final int equalPos = DefaultParser.indexOfEqual(opt);
+ if (equalPos != -1 && options.hasOption(opt.substring(0, equalPos))) {
+ // the format is --foo=value or -foo=value
+ tokens.add(arg.substring(0, arg.indexOf(Char.EQUAL))); // --foo
+ tokens.add(arg.substring(arg.indexOf(Char.EQUAL) + 1)); // value
+ } else if (options.hasOption(arg.substring(0, 2))) {
+ // the format is a special properties option (-Dproperty=value)
+ tokens.add(arg.substring(0, 2)); // -D
+ tokens.add(arg.substring(2)); // property=value
+ } else {
+ eatTheRest = stopAtNonOption;
+ tokens.add(arg);
+ }
}
} else {
tokens.add(arg);
diff --git a/src/main/java/org/apache/commons/cli/PosixParser.java b/src/main/java/org/apache/commons/cli/PosixParser.java
index d5019e0..0071929 100644
--- a/src/main/java/org/apache/commons/cli/PosixParser.java
+++ b/src/main/java/org/apache/commons/cli/PosixParser.java
@@ -135,7 +135,7 @@ public class PosixParser extends Parser {
// handle long option --foo or --foo=bar
else if (token.startsWith("--")) {
- final int pos = token.indexOf(Char.EQUAL);
+ final int pos = DefaultParser.indexOfEqual(token);
final String opt = pos == -1 ? token : token.substring(0, pos); // --foo
final List<String> matchingOpts = options.getMatchingOptions(opt);
diff --git a/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java b/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java
index d0e3efa..8c33fdd 100644
--- a/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java
+++ b/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java
@@ -697,10 +697,9 @@ public abstract class AbstractParserTestCase {
final Properties properties = new Properties();
properties.setProperty("k", "one,two");
- final String[] values = { "one", "two" };
-
final CommandLine cmd = parse(parser, options, null, properties);
assertTrue(cmd.hasOption("k"));
+ final String[] values = { "one", "two" };
assertArrayEquals(values, cmd.getOptionValues('k'));
}