public IReadOnlyList <TCommand> Parse(string contents) { // コマンドと値の一覧 var lines = m_formatter.Split(contents); // 作業 var currentCmd = string.Empty; var valueList = new List <string>(); var cmdNum = 0; var state = ParseState.None; // コマンドリスト var cmdList = new List <TCommand>(); // 一覧を漁ってコマンドとして解釈する foreach (var arg in lines) { // コマンド名だったら if (m_builder.IsCmd(arg)) { //解析開始 if (state == ParseState.None) { currentCmd = arg; // コマンド名 // 解析開始 state = ParseState.Parsing; valueList.Clear(); continue; } // 解析完了 // コマンドセット読み込み完了したら1コマンド作って変換 var args = new OzackComandArgs(currentCmd, cmdNum, valueList.ToArray()); var cmd = m_builder.Build(args); // 記録 cmdList.Add(cmd); // 次 currentCmd = arg; valueList.Clear(); cmdNum++; continue; } // ただのパラメータ valueList.Add(arg); } return(cmdList); }
public TCommand Build(OzackComandArgs args) { if (m_construct == null) { return(default);