예제 #1
0
        public void ExportConfigStruct()
        {
            List <object[]> dicts  = new List <object[]>();
            List <object[]> fields = new List <object[]>();


            for (int i = 0; i < dataStruct.fields.Count; i++)
            {
                DataField dataField = dataStruct.fields[i];

                if (dataField.fieldNameIsEnable)
                {
                    object[] lines = new object[] { dataField.field, dataField.GetTsTypeName() };
                    fields.Add(lines);
                }
                else
                {
                    object[] lines = new object[] { dataField.field, dataField.GetTsTypeName(), Regex.Replace(dataField.field, @"[^A-Za-z0-9_]", @"_") };
                    dicts.Add(lines);
                }
            }


            List <object[]> langs = new List <object[]>();


            for (int i = 0; i < dataStruct.fields.Count; i++)
            {
                DataField dataField = dataStruct.fields[i];

                if (dataField.field.StartsWith("zh_cn_"))
                {
                    object[] lines = new object[] { dataField.field.Replace("zh_cn_", ""), dataField.field, fieldName };
                    langs.Add(lines);
                }
                else if (dataField.field.StartsWith("cn_"))
                {
                    object[] lines = new object[] { dataField.field.Replace("cn_", ""), dataField.field, fieldName };
                    langs.Add(lines);
                }
            }



            string parse      = "";
            string parseArray = "";

            if (isExtend)
            {
                StringWriter sw = new StringWriter();
                sw.WriteLine($"  static parse(txt: string): {classNameConfig} ");
                sw.WriteLine("      {");

                sw.WriteLine($"          let csv = toStringArray(txt);");
                sw.WriteLine($"          let config = new {classNameConfig}();");


                for (int i = 0; i < dataStruct.fields.Count; i++)
                {
                    DataField dataField = dataStruct.fields[i];
                    sw.WriteLine($"          config.{dataField.field} = {GetParseCsvTxt(dataField, i)};");
                }

                sw.WriteLine("          return config;");
                sw.WriteLine("      }");

                parse = sw.ToString();



                // parseArray
                sw = new StringWriter();
                sw.WriteLine($"  static parseArray(txt: string): {classNameConfig}[] ");
                sw.WriteLine("      {");
                sw.WriteLine($"          let csv = toStringArray(txt, /[;]/);");
                sw.WriteLine($"          let list:{classNameConfig}[] = [];");
                sw.WriteLine($"          for(let i = 0; i < csv.length; i ++)");
                sw.WriteLine("          {");
                sw.WriteLine($"              list.push(      {classNameConfig}.parse(csv[i])          );");
                sw.WriteLine("           }");

                sw.WriteLine("          return list;");
                sw.WriteLine("      }");

                parseArray = sw.ToString();
            }



            TemplateSystem template = new TemplateSystem(File.ReadAllText(TemplatingFiles.Client.ConfigStructTemplates));

            template.AddVariable("classNameConfigStruct", classNameConfigStruct);
            template.AddVariable("fields", fields.ToArray());
            template.AddVariable("dicts", dicts.ToArray());
            template.AddVariable("langs", langs.ToArray());
            template.AddVariable("parse", parse);
            template.AddVariable("parseArray", parseArray);
            string content = template.Parse();
            string path    = string.Format(OutPaths.Client.ConfigStructTeamplate, classNameConfigStruct);

            PathHelper.CheckPath(path);
            File.WriteAllText(path, content);
        }