01: package org.kohsuke.args4j.spi;
02:
03: import java.util.Arrays;
04: import java.util.List;
05:
06: import org.kohsuke.args4j.OptionDef;
07: import org.kohsuke.args4j.CmdLineException;
08: import org.kohsuke.args4j.CmdLineParser;
09:
10: /**
11: * Boolean {@link OptionHandler}.
12: *
13: * @author Kohsuke Kawaguchi
14: */
15: public class BooleanOptionHandler extends OptionHandler<Boolean> {
16: private static final List<String> ACCEPTABLE_VALUES = Arrays
17: .asList(new String[] { "true", "on", "yes", "1", "false",
18: "off", "no", "0" });
19:
20: public BooleanOptionHandler(CmdLineParser parser, OptionDef option,
21: Setter<? super Boolean> setter) {
22: super (parser, option, setter);
23: }
24:
25: @Override
26: public int parseArguments(Parameters params)
27: throws CmdLineException {
28: if (option.isArgument()) {
29: String valueStr = params.getParameter(0).toLowerCase();
30: int index = ACCEPTABLE_VALUES.indexOf(valueStr);
31: if (index == -1) {
32: throw new CmdLineException(Messages.ILLEGAL_BOOLEAN
33: .format(valueStr));
34: }
35: setter.addValue(index < ACCEPTABLE_VALUES.size() / 2);
36: return 1;
37: } else {
38: setter.addValue(true);
39: return 0;
40: }
41: }
42:
43: @Override
44: public String getDefaultMetaVariable() {
45: return null;
46: }
47: }
|