X-Git-Url: http://git.osdn.net/view?p=mikutoga%2FPmd2XML.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fjp%2Fsfjp%2Fmikutoga%2Fpmd2xml%2FCmdLine.java;fp=src%2Fmain%2Fjava%2Fjp%2Fsfjp%2Fmikutoga%2Fpmd2xml%2FCmdLine.java;h=584f17709af030dbc5b8828d489b82d7b0fcce6f;hp=0000000000000000000000000000000000000000;hb=dc74351e0459ee0c5500f24d3080a92e1a1b9157;hpb=6b02dc790431f16012199924ee36816cef058954 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java new file mode 100644 index 0000000..584f177 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java @@ -0,0 +1,101 @@ +/* + * command line parser + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +/** + * コマンドラインの1オプションとその引数群に相当。 + */ +class CmdLine { + + private OptSwitch opt; + private List optArgs; + + + /** + * コンストラクタ。 + */ + private CmdLine() { + super(); + return; + } + + + /** + * コマンドライン解析を行う。 + * @param args コマンドライン + * @return 解析されたコマンドライン並び + */ + static List parse(String... args){ + List list = Arrays.asList(args); + return parse(list); + } + + /** + * コマンドライン解析を行う。 + * @param argList コマンドライン + * @return 解析されたコマンドライン並び + */ + static List parse(List argList){ + List result = new LinkedList(); + + Iterator it = argList.iterator(); + while (it.hasNext()) { + String arg = it.next(); + + CmdLine info = new CmdLine(); + result.add(info); + + info.opt = OptSwitch.parse(arg); + + int exArgNum = 0; + if (info.opt != null) { + exArgNum = info.opt.getExArgNum(); + } + info.optArgs = new ArrayList(exArgNum + 1); + + info.optArgs.add(arg); + + for (int argCt = 0; argCt < exArgNum; argCt++) { + if ( ! it.hasNext()) { + break; + } + String exarg = it.next(); + info.optArgs.add(exarg); + } + } + + return result; + } + + + /** + * オプション識別子を返す。 + * @return オプション識別子。 + * オプションを伴わない単純なコマンドライン引数の場合はnullを返す。 + */ + OptSwitch getOptSwitch() { + return this.opt; + } + + /** + * オプションに付随する引数群を返す。 + * @return オプションに付随する引数群。 + * 先頭要素はオプション識別子。 + * 単純なコマンドライン引数の場合は自身が1要素のみを占める。 + */ + List getOptArgs() { + return this.optArgs; + } + +}