2 * command line option definition
4 * License : The MIT License
5 * Copyright(c) 2013 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd2xml;
10 import java.util.Arrays;
11 import java.util.Collections;
12 import java.util.HashMap;
13 import java.util.List;
21 OPT_HELP (0, "-h", "-help", "-?"),
23 OPT_OUTFILE (1, "-o"),
25 OPT_NEWLINE (1, "-nl"),
26 OPT_GENOUT (1, "-genout"),
27 OPT_IFORM (1, "-iform"),
28 OPT_OFORM (1, "-oform"),
31 private static final String HELP_CONSOLE =
32 "-h : put help message\n\n"
33 + "-i <file> : specify input file\n"
34 + "-o <file> : specify output file\n"
35 + "-f : force overwriting\n\n"
36 + "-nl <newline> : specify XML-newline character"
38 + "-genout <bool> : mark generator-name to XML"
40 + "-iform <format> : specify input format explicitly\n"
41 + "-oform <format> : specify output format explicitly\n\n"
42 + " bool : \"on\" or \"off\""
43 + " or \"true\" or \"false\""
44 + " or \"yes\" or \"no\"\n"
45 + " format : \"pmd\" or \"xml\" or"
46 + " \"xml101009\" or \"xml130128\"\n"
47 + " newline : \"lf\" or \"crlf\"\n"
50 private static final Map<String, OptSwitch> MAP_OPT;
53 Map<String, OptSwitch> map = new HashMap<String, OptSwitch>();
55 for(OptSwitch opt : values()){
56 for(String cmdarg : opt.cmdopts){
61 map = Collections.unmodifiableMap(map);
66 private final int exArgNum;
67 private final List<String> cmdopts;
72 * @param argnum 必要な引数の数
73 * @param cmdopts オプションスイッチパターン群
75 private OptSwitch(int argnum, String... cmdopts) {
76 this.exArgNum = argnum;
79 optlist = Arrays.asList(cmdopts);
80 optlist = Collections.unmodifiableList(optlist);
81 this.cmdopts = optlist;
88 * コンソール提示用ヘルプ出力文字列を返す。
91 static String getConsoleHelp(){
97 * <p>一つのオプションが複数の表記に合致する場合がある。
99 * @return オプション種別。合致する物が見つからなければnull
101 static OptSwitch parse(String cmd){
102 OptSwitch result = MAP_OPT.get(cmd);
108 * 各オプションに後続する引数の数を返す。
109 * <p>引数をとらないオプションは0を返す。
113 return this.exArgNum;