Exemple #1
0
        //ソース内の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);
        }
Exemple #2
0
        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);
        }