//ソース内のname部分を値に変換する private static string convert_names(string st, string tmpstr) { var output = string.Empty; var lines = tmpstr.Split('\n'); for (var n = 0; n < lines.Length; n++) { var l = lines[n].TrimEnd(); var oindex = l.IndexOf("[["); var cindex = l.IndexOf("]]"); if (oindex >= 0 && cindex >= 0 && oindex < cindex) { var name = l.Substring(oindex + 2, cindex - oindex - 2); var val = _getvalue(st, name).Trim(); var result = EditUtil.Insert(l, "[[" + name + "]]", val).TrimEnd(); if (!string.IsNullOrWhiteSpace(result)) { output += result + "\n"; } } else { output += l + "\n"; } } return(output); }
static void Main(string[] args) // 0 --- excel file, 1 --- output dir { //System.Diagnostics.Debugger.Break(); m_ld = new LoadTemplateAndValues(args[0]); m_curpath = Path.GetDirectoryName(Path.GetFullPath(args[0])); string filename, lang, enc, tempfunc; var outpusrc = m_ld.GetInitalSource(out filename, out lang, out enc, out tempfunc); if (!string.IsNullOrEmpty(enc)) { m_enc = enc; } if (!string.IsNullOrEmpty(tempfunc)) { m_overwride_tempfunc = File.ReadAllText(Path.Combine(m_curpath, tempfunc), Encoding.GetEncoding(enc)); } //stateを収集 var state_str = string.Empty; var state_list = new List <string>(); { for (var c = START_COL; c < m_ld.GetMaxCol(); c++) { var s = m_ld.GetValue(STATE_ROW, c); if (string.IsNullOrEmpty(s) || string.IsNullOrEmpty(s.Trim())) { continue; } state_list.Add(s.Trim()); } // state_list.ForEach(s => { if (!string.IsNullOrEmpty(state_str)) { state_str += ","; } state_str += s + "\n"; }); } // func_str作成 var func_str = string.Empty; foreach (var st in state_list) { var tmpstr = m_ld.GetInitialFuncSource(m_overwride_tempfunc); tmpstr = convert_partsifexist_obs(st, tmpstr); tmpstr = convert_names(st, tmpstr); func_str += EditUtil.TrimLines(tmpstr); } //outputsrc作成 outpusrc = EditUtil.Insert(outpusrc, "$contents1$", state_str); outpusrc = EditUtil.Insert(outpusrc, "$contents2$", func_str); if (lang.ToLower() == "vba") { var select_str = string.Empty; foreach (var st in state_list) { select_str += "Case \"" + st + "\"\n\t" + st + "(bFirst)\n"; } outpusrc = EditUtil.Insert(outpusrc, "$contents3$", select_str); } // outpusrc = "//This source is created by ExcelStateChartConverter.exe. Source : " + args[0] + "\n" + outpusrc; File.WriteAllText(Path.Combine(args[1], filename), outpusrc, Encoding.UTF8); }