Skip to content

Commit e852acf

Browse files
committed
Reuse constants
Use forEachRemaining
1 parent 395346c commit e852acf

File tree

8 files changed

+55
-40
lines changed

8 files changed

+55
-40
lines changed

src/main/java/org/apache/commons/cli/DefaultParser.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
2525
import java.util.function.Consumer;
2626
import java.util.function.Supplier;
2727

28+
import org.apache.commons.cli.help.OptionFormatter;
29+
2830
/**
2931
* Default parser.
3032
*
@@ -611,13 +613,13 @@ private void handleToken(final String token) throws ParseException {
611613
currentToken = token;
612614
if (skipParsing) {
613615
addArg(token);
614-
} else if ("--".equals(token)) {
616+
} else if (OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(token)) {
615617
skipParsing = true;
616618
} else if (currentOption != null && currentOption.acceptsArg() && isArgument(token)) {
617619
currentOption.processValue(stripLeadingAndTrailingQuotesDefaultOn(token));
618-
} else if (token.startsWith("--")) {
620+
} else if (token.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) {
619621
handleLongOption(token);
620-
} else if (token.startsWith("-") && !"-".equals(token)) {
622+
} else if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) && !OptionFormatter.DEFAULT_OPT_PREFIX.equals(token)) {
621623
handleShortAndLongOption(token);
622624
} else {
623625
handleUnknownToken(token);
@@ -638,10 +640,11 @@ private void handleToken(final String token) throws ParseException {
638640
* @since 1.10.0
639641
*/
640642
protected void handleUnknownToken(final String token) throws ParseException {
641-
if (token.startsWith("-") && token.length() > 1 && nonOptionAction == NonOptionAction.THROW) {
643+
if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) && token.length() > 1 && nonOptionAction == NonOptionAction.THROW) {
642644
throw new UnrecognizedOptionException("Unrecognized option: " + token, token);
643645
}
644-
if (!token.startsWith("-") || token.equals("-") || token.length() > 1 && nonOptionAction != NonOptionAction.IGNORE) {
646+
if (!token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) || token.equals(OptionFormatter.DEFAULT_OPT_PREFIX)
647+
|| token.length() > 1 && nonOptionAction != NonOptionAction.IGNORE) {
645648
addArg(token);
646649
}
647650
if (nonOptionAction == NonOptionAction.STOP) {
@@ -673,7 +676,7 @@ private boolean isJavaProperty(final String token) {
673676
* @param token
674677
*/
675678
private boolean isLongOption(final String token) {
676-
if (token == null || !token.startsWith("-") || token.length() == 1) {
679+
if (token == null || !token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) || token.length() == 1) {
677680
return false;
678681
}
679682
final int pos = indexOfEqual(token);
@@ -682,7 +685,7 @@ private boolean isLongOption(final String token) {
682685
// long or partial long options (--L, -L, --L=V, -L=V, --l, --l=V)
683686
return true;
684687
}
685-
if (getLongPrefix(token) != null && !token.startsWith("--")) {
688+
if (getLongPrefix(token) != null && !token.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) {
686689
// -LV
687690
return true;
688691
}
@@ -719,7 +722,7 @@ private boolean isOption(final String token) {
719722
*/
720723
private boolean isShortOption(final String token) {
721724
// short options (-S, -SV, -S=V, -SV1=V2, -S1S2)
722-
if (token == null || !token.startsWith("-") || token.length() == 1) {
725+
if (token == null || !token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX) || token.length() == 1) {
723726
return false;
724727
}
725728
// remove leading "-" and "=value"

src/main/java/org/apache/commons/cli/GnuParser.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
2020
import java.util.ArrayList;
2121
import java.util.List;
2222

23+
import org.apache.commons.cli.help.OptionFormatter;
24+
2325
/**
2426
* The class GnuParser provides an implementation of the {@link Parser#flatten(Options, String[], boolean) flatten}
2527
* method.
@@ -57,12 +59,12 @@ protected String[] flatten(final Options options, final String[] arguments, fina
5759
for (int i = 0; i < arguments.length; i++) {
5860
final String arg = arguments[i];
5961
if (arg != null) {
60-
if ("--".equals(arg)) {
62+
if (OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(arg)) {
6163
eatTheRest = true;
62-
tokens.add("--");
63-
} else if ("-".equals(arg)) {
64-
tokens.add("-");
65-
} else if (arg.startsWith("-")) {
64+
tokens.add(OptionFormatter.DEFAULT_LONG_OPT_PREFIX);
65+
} else if (OptionFormatter.DEFAULT_OPT_PREFIX.equals(arg)) {
66+
tokens.add(OptionFormatter.DEFAULT_OPT_PREFIX);
67+
} else if (arg.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) {
6668
final String opt = Util.stripLeadingHyphens(arg);
6769
if (options.hasOption(opt)) {
6870
tokens.add(arg);

src/main/java/org/apache/commons/cli/HelpFormatter.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ Licensed to the Apache Software Foundation (ASF) under one or more
3434
import java.util.function.Function;
3535
import java.util.function.Supplier;
3636

37+
import org.apache.commons.cli.help.AbstractHelpFormatter;
38+
import org.apache.commons.cli.help.OptionFormatter;
39+
3740
/**
3841
* A formatter of help messages for command line options.
3942
* <p>
@@ -198,10 +201,10 @@ public int compare(final Option opt1, final Option opt2) {
198201
public static final String DEFAULT_SYNTAX_PREFIX = "usage: ";
199202

200203
/** Default prefix for shortOpts */
201-
public static final String DEFAULT_OPT_PREFIX = "-";
204+
public static final String DEFAULT_OPT_PREFIX = OptionFormatter.DEFAULT_OPT_PREFIX;
202205

203206
/** Default prefix for long Option */
204-
public static final String DEFAULT_LONG_OPT_PREFIX = "--";
207+
public static final String DEFAULT_LONG_OPT_PREFIX = OptionFormatter.DEFAULT_LONG_OPT_PREFIX;
205208

206209
/**
207210
* Default separator displayed between a long Option and its value
@@ -358,9 +361,9 @@ private void appendOption(final StringBuilder buff, final Option option, final b
358361
buff.append("[");
359362
}
360363
if (option.getOpt() != null) {
361-
buff.append("-").append(option.getOpt());
364+
buff.append(OptionFormatter.DEFAULT_OPT_PREFIX).append(option.getOpt());
362365
} else {
363-
buff.append("--").append(option.getLongOpt());
366+
buff.append(OptionFormatter.DEFAULT_LONG_OPT_PREFIX).append(option.getLongOpt());
364367
}
365368
// if the Option has a value and a non blank argname
366369
if (option.hasArg() && (option.getArgName() == null || !option.getArgName().isEmpty())) {
@@ -394,7 +397,7 @@ private void appendOptionGroup(final StringBuilder buff, final OptionGroup optio
394397
// whether the option is required or not is handled at group level
395398
appendOption(buff, it.next(), true);
396399
if (it.hasNext()) {
397-
buff.append(" | ");
400+
buff.append(AbstractHelpFormatter.DEFAULT_OPTION_GROUP_SEPARATOR);
398401
}
399402
}
400403
if (!optionGroup.isRequired()) {
@@ -467,7 +470,7 @@ <A extends Appendable> A appendOptions(final A sb, final int width, final Option
467470
if (optBuf.length() < max) {
468471
optBuf.append(createPadding(max - maxSince - optBuf.length()));
469472
if (showSince) {
470-
optBuf.append(lpad).append(option.getSince() == null ? "-" : option.getSince());
473+
optBuf.append(lpad).append(option.getSince() == null ? OptionFormatter.DEFAULT_OPT_PREFIX : option.getSince());
471474
}
472475
optBuf.append(createPadding(max - optBuf.length()));
473476
}

src/main/java/org/apache/commons/cli/OptionGroup.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
2323
import java.util.LinkedHashMap;
2424
import java.util.Map;
2525

26+
import org.apache.commons.cli.help.OptionFormatter;
27+
2628
/**
2729
* A group of mutually exclusive options.
2830
*/
@@ -154,10 +156,10 @@ public String toString() {
154156
while (iter.hasNext()) {
155157
final Option option = iter.next();
156158
if (option.getOpt() != null) {
157-
buff.append("-");
159+
buff.append(OptionFormatter.DEFAULT_OPT_PREFIX);
158160
buff.append(option.getOpt());
159161
} else {
160-
buff.append("--");
162+
buff.append(OptionFormatter.DEFAULT_LONG_OPT_PREFIX);
161163
buff.append(option.getLongOpt());
162164
}
163165

src/main/java/org/apache/commons/cli/Parser.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
2424
import java.util.ListIterator;
2525
import java.util.Properties;
2626

27+
import org.apache.commons.cli.help.OptionFormatter;
28+
2729
/**
2830
* Creates {@link CommandLine} instances.
2931
*
@@ -157,23 +159,23 @@ public CommandLine parse(final Options options, final String[] arguments, final
157159
setOptions(options);
158160
cmd = CommandLine.builder().get();
159161
boolean eatTheRest = false;
160-
final List<String> tokenList = Arrays.asList(flatten(getOptions(), arguments == null ? new String[0] : arguments, stopAtNonOption));
162+
final List<String> tokenList = Arrays.asList(flatten(getOptions(), arguments == null ? Util.EMPTY_STRING_ARRAY : arguments, stopAtNonOption));
161163
final ListIterator<String> iterator = tokenList.listIterator();
162164
// process each flattened token
163165
while (iterator.hasNext()) {
164166
final String token = iterator.next();
165167
if (token != null) {
166168
// the value is the double-dash
167-
if ("--".equals(token)) {
169+
if (OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(token)) {
168170
eatTheRest = true;
169-
} else if ("-".equals(token)) {
171+
} else if (OptionFormatter.DEFAULT_OPT_PREFIX.equals(token)) {
170172
// the value is a single dash
171173
if (stopAtNonOption) {
172174
eatTheRest = true;
173175
} else {
174176
cmd.addArg(token);
175177
}
176-
} else if (token.startsWith("-")) {
178+
} else if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) {
177179
// the value is an option
178180
if (stopAtNonOption && !getOptions().hasOption(token)) {
179181
eatTheRest = true;
@@ -190,13 +192,12 @@ public CommandLine parse(final Options options, final String[] arguments, final
190192
}
191193
// eat the remaining tokens
192194
if (eatTheRest) {
193-
while (iterator.hasNext()) {
194-
final String str = iterator.next();
195+
iterator.forEachRemaining(str -> {
195196
// ensure only one double-dash is added
196-
if (!"--".equals(str)) {
197+
if (!OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(str)) {
197198
cmd.addArg(str);
198199
}
199-
}
200+
});
200201
}
201202
}
202203
}
@@ -218,7 +219,7 @@ public void processArgs(final Option opt, final ListIterator<String> iter) throw
218219
while (iter.hasNext()) {
219220
final String str = iter.next();
220221
// found an Option, not an argument
221-
if (getOptions().hasOption(str) && str.startsWith("-")) {
222+
if (getOptions().hasOption(str) && str.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) {
222223
iter.previous();
223224
break;
224225
}

src/main/java/org/apache/commons/cli/PosixParser.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
2222
import java.util.Iterator;
2323
import java.util.List;
2424

25+
import org.apache.commons.cli.help.OptionFormatter;
26+
2527
/**
2628
* The class PosixParser provides an implementation of the {@link Parser#flatten(Options,String[],boolean) flatten}
2729
* method.
@@ -81,7 +83,7 @@ protected void burstToken(final String token, final boolean stopAtNonOption) {
8183
}
8284
break;
8385
}
84-
tokens.add("-" + ch);
86+
tokens.add(OptionFormatter.DEFAULT_OPT_PREFIX + ch);
8587
currentOption = options.getOption(ch);
8688
if (currentOption.hasArg() && token.length() != i + 1) {
8789
tokens.add(token.substring(i + 1));
@@ -132,9 +134,9 @@ protected String[] flatten(final Options options, final String[] arguments, fina
132134
final String token = iter.next();
133135
if (token != null) {
134136
// single or double hyphen
135-
if ("-".equals(token) || "--".equals(token)) {
137+
if (OptionFormatter.DEFAULT_OPT_PREFIX.equals(token) || OptionFormatter.DEFAULT_LONG_OPT_PREFIX.equals(token)) {
136138
tokens.add(token);
137-
} else if (token.startsWith("--")) {
139+
} else if (token.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) {
138140
// handle long option --foo or --foo=bar
139141
final int pos = DefaultParser.indexOfEqual(token);
140142
final String opt = pos == -1 ? token : token.substring(0, pos); // --foo
@@ -145,12 +147,12 @@ protected String[] flatten(final Options options, final String[] arguments, fina
145147
throw new AmbiguousOptionException(opt, matchingOpts);
146148
} else {
147149
currentOption = options.getOption(matchingOpts.get(0));
148-
tokens.add("--" + currentOption.getLongOpt());
150+
tokens.add(OptionFormatter.DEFAULT_LONG_OPT_PREFIX + currentOption.getLongOpt());
149151
if (pos != -1) {
150152
tokens.add(token.substring(pos + 1));
151153
}
152154
}
153-
} else if (token.startsWith("-")) {
155+
} else if (token.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) {
154156
if (token.length() == 2 || options.hasOption(token)) {
155157
processOptionToken(token, stopAtNonOption);
156158
} else if (!options.getMatchingOptions(token).isEmpty()) {
@@ -159,7 +161,7 @@ protected String[] flatten(final Options options, final String[] arguments, fina
159161
throw new AmbiguousOptionException(token, matchingOpts);
160162
}
161163
final Option opt = options.getOption(matchingOpts.get(0));
162-
processOptionToken("-" + opt.getLongOpt(), stopAtNonOption);
164+
processOptionToken(OptionFormatter.DEFAULT_OPT_PREFIX + opt.getLongOpt(), stopAtNonOption);
163165
}
164166
// requires bursting
165167
else {
@@ -205,7 +207,7 @@ private void init() {
205207
private void processNonOptionToken(final String value, final boolean stopAtNonOption) {
206208
if (stopAtNonOption && (currentOption == null || !currentOption.hasArg())) {
207209
eatTheRest = true;
208-
tokens.add("--");
210+
tokens.add(OptionFormatter.DEFAULT_LONG_OPT_PREFIX);
209211
}
210212
tokens.add(value);
211213
}

src/main/java/org/apache/commons/cli/Util.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ Licensed to the Apache Software Foundation (ASF) under one or more
1717

1818
package org.apache.commons.cli;
1919

20+
import org.apache.commons.cli.help.OptionFormatter;
21+
2022
/**
2123
* Contains useful helper methods for classes within this package.
2224
*/
@@ -74,10 +76,10 @@ static String stripLeadingHyphens(final String str) {
7476
if (isEmpty(str)) {
7577
return str;
7678
}
77-
if (str.startsWith("--")) {
79+
if (str.startsWith(OptionFormatter.DEFAULT_LONG_OPT_PREFIX)) {
7880
return str.substring(2);
7981
}
80-
if (str.startsWith("-")) {
82+
if (str.startsWith(OptionFormatter.DEFAULT_OPT_PREFIX)) {
8183
return str.substring(1);
8284
}
8385
return str;

src/main/java/org/apache/commons/cli/help/OptionFormatter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ public String getOpt() {
434434
* @return The since valeu from the option or "--" if no since value was set.
435435
*/
436436
public String getSince() {
437-
return Util.defaultValue(option.getSince(), "--");
437+
return Util.defaultValue(option.getSince(), DEFAULT_LONG_OPT_PREFIX);
438438
}
439439

440440
/**

0 commit comments

Comments
 (0)