Exemple #1
0
        public void SaveAs(string fileName, bool create, Property.DataOutputFlags flags)
        {
            XmlDocument xml = create ? null : Xml;

            if (null == xml)
            {
                xml = new XmlDocument();
                xml.AppendChild(xml.CreateElement("ZezeConfig"));
                if (false == create)
                {
                    Xml = xml;
                }
            }

            if (flags == Property.DataOutputFlags.All)
            {
                BeanDefine.SaveAs(xml, xml.DocumentElement, create);
            }

            for (int i = 0; i < _Beans.Count; ++i)
            {
                Bean b = _Beans[i];
                b.RowIndex = i;
                b.SaveAs(xml, xml.DocumentElement, create, flags);
            }

            using (TextWriter sw = new StreamWriter(fileName, false, Encoding.UTF8))
            {
                xml.Save(sw);
            }
        }
Exemple #2
0
        public static void Gen(StreamWriter sw, Document doc, EnumDefine e, Property.DataOutputFlags flags)
        {
            var fullName = e.FullName().Replace('.', '_');

            sw.WriteLine($"export enum {fullName} {{");
            foreach (var v in e.ValueMap.Values)
            {
                sw.WriteLine($"    {v.Name} = {v.Value},");
            }
            sw.WriteLine($"}}");
        }
Exemple #3
0
        public void SaveAs(XmlDocument xml, XmlElement parent, bool create, Property.DataOutputFlags flags)
        {
            XmlElement self = create ? null : Self;

            if (null == self)
            {
                self = xml.CreateElement("bean");
                parent.AppendChild(self);
                if (false == create)
                {
                    Self = self;
                }
            }

            if (flags == Property.DataOutputFlags.All)
            {
                self.SetAttribute("DefineFullName", DefineFullName);
            }

            if (RowIndex >= 0)
            {
                self.SetAttribute("row", RowIndex.ToString());
            }

            // 使用 DefineFullName 找到 BeanDefine。慢的话,可以加cache优化速度。
            BeanDefine beanDefine = Document.BeanDefine;

            if (false == string.IsNullOrEmpty(DefineFullName))
            {
                beanDefine = FormMain.Instance.Documents.SearchReference(DefineFullName);
            }

            foreach (var varDefine in beanDefine.Variables)
            {
                if (0 == (varDefine.DataOutputFlags & flags))
                {
                    continue;
                }

                if (VariableMap.TryGetValue(varDefine.Name, out var varData))
                {
                    varDefine.DetectType(varData.Value);
                    varData.SaveAs(xml, self, create, flags);
                }
                else
                {
                    varDefine.DetectType("");
                }
            }
        }
Exemple #4
0
 public static void Gen(string srcHome, Document doc, Property.DataOutputFlags flags)
 {
     using (System.IO.StreamWriter sw = doc.OpenStreamWriter(srcHome, ".cs"))
     {
         sw.WriteLine($"// auto generated.");
         sw.WriteLine();
         sw.WriteLine($"using System;");
         sw.WriteLine($"using System.Collections.Generic;");
         sw.WriteLine($"using System.Xml;");
         sw.WriteLine();
         sw.WriteLine($"namespace {doc.Namespace}");
         sw.WriteLine($"{{");
         Gen(sw, doc, doc.BeanDefine, "    ", flags);
         sw.WriteLine($"}}"); // end of namespace
     }
 }
Exemple #5
0
        public static void Gen(FormMain main, Property.DataOutputFlags flags, FormBuildProgress progress)
        {
            switch (flags)
            {
            case Property.DataOutputFlags.Client:
                main.Documents.ForEachFile(
                    (Documents.File file) =>
                {
                    progress.AppendLine($"生成ts客户端代码. {file.Document.RelateName}", Color.Black);
                    BeanFormatter.Gen(main.ConfigProject.ClientSrcDirectory, file.Document, Property.DataOutputFlags.Client);
                    return(progress.Running);
                });
                break;

            default:
                throw new Exception("Ts. Client Only");
            }
        }
Exemple #6
0
        public static void Gen(FormMain main, Property.DataOutputFlags flags, FormBuildProgress progress)
        {
            switch (flags)
            {
            case Property.DataOutputFlags.Server:
                main.Documents.ForEachFile(
                    (Documents.File file) =>
                {
                    progress.AppendLine($"生成cs服务器代码. {file.Document.RelateName}", Color.Black);
                    BeanFormatter.Gen(main.ConfigProject.ServerSrcDirectory, file.Document, Property.DataOutputFlags.Server);
                    return(progress.Running);
                });

                if (false == progress.Running)
                {
                    return;
                }
                GenManager(main, main.ConfigProject.ServerSrcDirectory);
                break;

            case Property.DataOutputFlags.Client:
                main.Documents.ForEachFile(
                    (Documents.File file) =>
                {
                    progress.AppendLine($"生成cs客户端代码. {file.Document.RelateName}", Color.Black);
                    BeanFormatter.Gen(main.ConfigProject.ClientSrcDirectory, file.Document, Property.DataOutputFlags.Client);
                    return(progress.Running);
                });
                if (false == progress.Running)
                {
                    return;
                }
                GenManager(main, main.ConfigProject.ClientSrcDirectory);
                break;
            }
        }
Exemple #7
0
        public static void Gen(string srcHome, Document doc, Property.DataOutputFlags flags)
        {
            using (StreamWriter sw = doc.OpenStreamWriter(srcHome, ".ts"))
            {
                sw.WriteLine($"// auto generated.");
                sw.WriteLine();
                Gen(sw, doc, doc.BeanDefine, flags);
                sw.WriteLine();

                var _ClassName = doc.BeanDefine._FullName().Replace('.', '_');
                var DataName   = doc.BeanDefine.FullName().Replace('.', '_');
                sw.WriteLine($"export class {DataName} {{");
                sw.WriteLine($"    public static Beans: Array<{_ClassName}> = new Array<{_ClassName}>();");
                if (false == FormMain.Instance.PropertyManager.Properties.TryGetValue(Property.Id.PName, out var pid))
                {
                    throw new Exception("Property.Id miss!");
                }
                foreach (var var in doc.BeanDefine.Variables)
                {
                    if (0 == (var.DataOutputFlags & flags))
                    {
                        continue;
                    }
                    if (false == var.IsKeyable())
                    {
                        continue;
                    }
                    if (false == var.PropertiesList.Contains(pid))
                    {
                        continue;
                    }
                    var key   = TypeHelper.GetName(var);
                    var value = _ClassName;
                    sw.WriteLine($"    public static BeansMap{var.Name}: Map<{key}, {value}> = new Map<{key}, {value}>();");
                }
                sw.WriteLine();
                sw.WriteLine($"    public static Load(): void");
                sw.WriteLine($"    {{");
                foreach (var bean in doc.Beans)
                {
                    sw.Write($"        var bean{bean.RowIndex}: {_ClassName} = ");
                    GenLoad(sw, "        ", doc.BeanDefine, bean, flags);
                    sw.WriteLine($";");
                    sw.WriteLine($"        {DataName}.Beans.push(bean{bean.RowIndex});");
                    foreach (var var in doc.BeanDefine.Variables)
                    {
                        if (0 == (var.DataOutputFlags & flags))
                        {
                            continue;
                        }
                        if (false == var.IsKeyable())
                        {
                            continue;
                        }
                        if (false == var.PropertiesList.Contains(pid))
                        {
                            continue;
                        }
                        sw.WriteLine($"        {DataName}.BeansMap{var.Name}.set(bean{bean.RowIndex}.V{var.Name}, bean{bean.RowIndex});");
                        sw.WriteLine();
                    }
                }
                sw.WriteLine($"    }}");
                sw.WriteLine($"}}");
            }
        }
Exemple #8
0
        public static void GenLoad(StreamWriter sw, string prefix, VarDefine varDefine, Bean.VarData varData, Property.DataOutputFlags flags)
        {
            switch (varDefine.TypeNow)
            {
            case VarDefine.EType.Date:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: new Date(\"{varData.Value}\"),");
                }
                break;

            case VarDefine.EType.Double:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.Enum:
                sw.WriteLine($"{prefix}V{varDefine.Name}: {varDefine.FullName().Replace('.', '_')}.{varData.Value}");
                break;

            case VarDefine.EType.Float:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.Int:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.Long:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{prefix}V{varDefine.Name}: {varData.Value},");
                }
                break;

            case VarDefine.EType.String:
                var strValue = (null == varData.Value) ? "" : varData.Value;
                sw.WriteLine($"{prefix}V{varDefine.Name}: \"{strValue}\",");
                break;

            case VarDefine.EType.List:
                sw.WriteLine($"{prefix}V{varDefine.Name}: [");
                foreach (var bean in varData.Beans)
                {
                    sw.Write(prefix + "    ");
                    GenLoad(sw, prefix + "    ", varDefine.Reference, bean, flags);
                    sw.WriteLine(",");
                }
                sw.WriteLine($"{prefix}],");
                break;
            }
        }
Exemple #9
0
            public void SaveAs(XmlDocument xml, XmlElement parent, bool create, Property.DataOutputFlags flags)
            {
                XmlElement self     = create ? null : Self;
                XmlElement selfList = create ? null : SelfList;

                if (null == self)
                {
                    // new
                    self = xml.CreateElement(Name);
                    parent.AppendChild(self);
                    if (false == create)
                    {
                        Self = self;
                    }
                }
                else
                {
                    if (self.Name != Name)
                    {
                        // Name Change
                        XmlElement e = xml.CreateElement(Name);
                        parent.ReplaceChild(e, self);
                        self = e;
                        if (null != selfList)
                        {
                            self.AppendChild(selfList);
                        }
                    }
                }

                if (flags == Property.DataOutputFlags.All)
                {
                    if (GridColumnNameWidth > 0)
                    {
                        self.SetAttribute("nw", GridColumnNameWidth.ToString());
                    }
                    if (GridColumnValueWidth > 0)
                    {
                        self.SetAttribute("vw", GridColumnValueWidth.ToString());
                    }
                }

                if (_Beans.Count > 0) // 这里没有判断Type,直接根据数据来决定怎么保存。
                {
                    if (null == selfList)
                    {
                        selfList = xml.CreateElement("list");
                        self.AppendChild(selfList);
                        if (false == create)
                        {
                            SelfList = selfList;
                        }
                    }
                    for (int i = 0; i < _Beans.Count; ++i)
                    {
                        Bean b = _Beans[i];
                        b.RowIndex = i;
                        b.SaveAs(xml, selfList, create, flags);
                    }
                }
                else
                {
                    self.InnerText = Value;
                }
            }
Exemple #10
0
 public static void Gen(System.IO.StreamWriter sw, Document doc, EnumDefine e, string prefix, Property.DataOutputFlags flags)
 {
     sw.WriteLine($"{prefix}public enum {e.Name}");
     sw.WriteLine($"{prefix}{{");
     foreach (var v in e.ValueMap.Values)
     {
         sw.WriteLine($"{prefix}    {v.Name} = {v.Value},");
     }
     sw.WriteLine($"{prefix}}}");
 }
Exemple #11
0
 public static void GenLoad(StreamWriter sw, string baseTable, BeanDefine beanDefine, Bean bean, Property.DataOutputFlags flags)
 {
     foreach (var varDefine in beanDefine.Variables)
     {
         if (0 == (varDefine.DataOutputFlags & flags))
         {
             continue;
         }
         if (bean.VariableMap.TryGetValue(varDefine.Name, out var varData))
         {
             GenLoad(sw, baseTable, varDefine, varData, flags);
         }
         else if (VarDefine.EType.List == varDefine.TypeNow)
         {
             sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {{}}");
         }
         else if (false == string.IsNullOrEmpty(varDefine.Default))
         {
             sw.WriteLine($"{baseTable}.{varDefine.NamePinyin}\"] = {GetDefaultInitialize(varDefine)}");
         }
     }
 }
Exemple #12
0
        public static void GenLoad(StreamWriter sw, string baseTable, VarDefine varDefine, Bean.VarData varData, Property.DataOutputFlags flags)
        {
            switch (varDefine.TypeNow)
            {
            case VarDefine.EType.Date:
                // 先使用string. 看看lua怎么用。
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varData.Value}\"");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varDefine.Default}\"");
                }
                break;

            case VarDefine.EType.Int:
            case VarDefine.EType.Float:
            case VarDefine.EType.Double:
            case VarDefine.EType.Long:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {varData.Value}");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {varDefine.Default}");
                }
                break;

            case VarDefine.EType.Enum:
                var enumClassName = varDefine.FullNamePinyin().Replace('.', '_');
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = Config.Enums.{enumClassName}.{varData.ValuePinyin}");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = Config.Enums.{enumClassName}.{varDefine.DefaultPinyin}");
                }
                break;

            case VarDefine.EType.String:
                if (false == string.IsNullOrEmpty(varData.Value))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varData.Value}\"");
                }
                else if (false == string.IsNullOrEmpty(varDefine.Default))
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"{varDefine.Default}\"");
                }
                else
                {
                    sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = \"\"");
                }
                break;

            case VarDefine.EType.List:
                sw.WriteLine($"{baseTable}.{varDefine.NamePinyin} = {{}}");
                foreach (var bean in varData.Beans)
                {
                    var beanVarName = $"{baseTable}.{varDefine.NamePinyin}[{bean.RowIndex + 1}]";
                    sw.WriteLine($"{beanVarName} = {{}}");
                    GenLoad(sw, beanVarName, varDefine.Reference, bean, flags);
                }
                break;
            }
        }
Exemple #13
0
        public static void Gen(string srcHome, Document doc, Property.DataOutputFlags flags)
        {
            using (StreamWriter sw = doc.OpenStreamWriter(srcHome, ".lua"))
            {
                sw.WriteLine($"-- auto generated.");
                sw.WriteLine();
                sw.WriteLine($"local Config = {{}}");
                sw.WriteLine();
                sw.WriteLine($"Config.Beans = {{}}");

                if (false == FormMain.Instance.PropertyManager.Properties.TryGetValue(Property.Id.PName, out var pid))
                {
                    throw new Exception("Property.Id miss!");
                }

                // gen enum
                SortedDictionary <string, EnumDefine> enums = new SortedDictionary <string, EnumDefine>();
                doc.BeanDefine.ForEach(
                    (BeanDefine bd) =>
                {
                    foreach (var e in bd.EnumDefines.Values)
                    {
                        enums.Add(e.FullNamePinyin().Replace('.', '_'), e);
                    }
                    return(true);
                });
                sw.WriteLine($"Config.Enums = {{}}");
                foreach (var e in enums)
                {
                    sw.WriteLine($"Config.Enums.{e.Key} = {{}}");
                    foreach (var v in e.Value.ValueMap.Values)
                    {
                        sw.WriteLine($"Config.Enums.{e.Key}.{v.NamePinyin} = {v.Value}");
                    }
                }
                // gen map if need
                foreach (var var in doc.BeanDefine.Variables)
                {
                    if (0 == (var.DataOutputFlags & flags))
                    {
                        continue;
                    }
                    if (false == var.IsKeyable())
                    {
                        continue;
                    }
                    if (false == var.PropertiesList.Contains(pid))
                    {
                        continue;
                    }
                    sw.WriteLine($"Config.BeansMap{var.NamePinyin} = {{}}");
                }
                sw.WriteLine();
                foreach (var bean in doc.Beans)
                {
                    sw.WriteLine($"Config.Beans[{bean.RowIndex + 1}] = {{}}");
                    GenLoad(sw, $"Config.Beans[{bean.RowIndex + 1}]", doc.BeanDefine, bean, flags);
                    foreach (var var in doc.BeanDefine.Variables)
                    {
                        if (0 == (var.DataOutputFlags & flags))
                        {
                            continue;
                        }
                        if (false == var.IsKeyable())
                        {
                            continue;
                        }
                        if (false == var.PropertiesList.Contains(pid))
                        {
                            continue;
                        }
                        // 需要确认,如果 var 是 string 时,下面 Index 写法是否正确。
                        sw.WriteLine($"Config.BeansMap{var.NamePinyin}[Config.Beans[{bean.RowIndex + 1}].{var.NamePinyin}] = Config.Beans[{bean.RowIndex + 1}]");
                    }
                    sw.WriteLine();
                }
                sw.WriteLine();
                sw.WriteLine($"return Config");
            }
        }
Exemple #14
0
        public static void Gen(System.IO.StreamWriter sw, Document doc, BeanDefine bean, string prefix, Property.DataOutputFlags flags)
        {
            sw.WriteLine($"{prefix}public class {bean.Name}");
            sw.WriteLine($"{prefix}{{");

            // sub bean
            foreach (var sub in bean.BeanDefines.Values)
            {
                Gen(sw, doc, sub, prefix + "    ", flags);
            }

            foreach (var e in bean.EnumDefines.Values)
            {
                Gen(sw, doc, e, prefix + "    ", flags);
            }

            if (false == FormMain.Instance.PropertyManager.Properties.TryGetValue(Property.IdList.PName, out var pid))
            {
                throw new Exception("Property.Id miss!");
            }

            // var property
            foreach (var var in bean.Variables)
            {
                if (0 == (var.DataOutputFlags & flags))
                {
                    continue;
                }

                sw.WriteLine($"{prefix}    public {TypeHelper.GetName(var)} V{var.Name} {{ get; set; }}{TypeHelper.GetDefaultInitialize(var)}");
                if (var.Type == VarDefine.EType.List)
                {
                    foreach (var varRef in var.Reference.Variables)
                    {
                        if (0 == (varRef.DataOutputFlags & flags))
                        {
                            continue;
                        }
                        if (false == varRef.IsKeyable())
                        {
                            continue;
                        }

                        if (false == varRef.PropertiesList.Contains(pid))
                        {
                            continue;
                        }

                        sw.WriteLine($"{prefix}    public Dictionary<{TypeHelper.GetName(varRef)}, {var.Reference.FullName()}> V{var.Name}Map{varRef.Name} {{ get; }} = new Dictionary<{TypeHelper.GetName(varRef)}, {var.Reference.FullName()}>();");
                    }
                }
            }
            sw.WriteLine();

            // load。解析代码都生成吧,虽然有点烦。不过不会代码依赖也好。
            sw.WriteLine($"{prefix}    public {bean.Name}(XmlElement self)");
            sw.WriteLine($"{prefix}    {{");
            sw.WriteLine($"{prefix}        foreach (XmlNode node in self.ChildNodes)");
            sw.WriteLine($"{prefix}        {{");
            sw.WriteLine($"{prefix}            if (XmlNodeType.Element != node.NodeType)");
            sw.WriteLine($"{prefix}                continue;");
            sw.WriteLine($"{prefix}            XmlElement e = (XmlElement)node;");
            sw.WriteLine($"{prefix}            switch (e.Name)");
            sw.WriteLine($"{prefix}            {{");

            foreach (var var in bean.Variables)
            {
                if (0 == (var.DataOutputFlags & flags))
                {
                    continue;
                }
                sw.WriteLine($"{prefix}                case \"{var.Name}\":");
                TypeHelper.GenLoader(sw, doc, var, prefix + "                    ", flags);
                sw.WriteLine($"{prefix}                    break;");
                sw.WriteLine();
            }

            sw.WriteLine($"{prefix}                default:");
            sw.WriteLine($"{prefix}                    throw new Exception(\"unkown var name: \" + e.Name);");
            sw.WriteLine($"{prefix}            }}");
            sw.WriteLine($"{prefix}        }}");
            sw.WriteLine($"{prefix}    }}");
            sw.WriteLine($"{prefix}}}"); // end of bean
            sw.WriteLine();
        }
Exemple #15
0
        public static void Gen(StreamWriter sw, Document doc, BeanDefine bean, Property.DataOutputFlags flags)
        {
            // gen enum
            foreach (var e in bean.EnumDefines.Values)
            {
                Gen(sw, doc, e, flags);
            }

            var beanFullName = bean.FullName().Replace('.', '_');

            sw.WriteLine($"export class _{beanFullName} {{");
            if (false == FormMain.Instance.PropertyManager.Properties.TryGetValue(Property.IdList.PName, out var pid))
            {
                throw new Exception("Property.Id miss!");
            }

            // var property
            foreach (var var in bean.Variables)
            {
                if (0 == (var.DataOutputFlags & flags))
                {
                    continue;
                }
                var typeName = TypeHelper.GetName(var);
                if (var.Type != VarDefine.EType.List)
                {
                    sw.WriteLine($"    public V{var.Name}?: {typeName}{TypeHelper.GetDefaultInitialize(var)};");
                }
                else
                {
                    sw.WriteLine($"    private _V{var.Name}?: {typeName};");
                    sw.WriteLine($"    public get V{var.Name}() {{");
                    sw.WriteLine($"        return this._V{var.Name};");
                    sw.WriteLine($"    }}");
                    sw.WriteLine($"    public set V{var.Name}(value: {typeName}) {{");
                    sw.WriteLine($"        this._V{var.Name} = value;");
                    sw.WriteLine($"        for (var i = 0; i < value.length; ++i) {{");
                    foreach (var varRef in var.Reference.Variables)
                    {
                        if (false == varRef.IsKeyable())
                        {
                            continue;
                        }
                        if (false == varRef.PropertiesList.Contains(pid))
                        {
                            continue;
                        }
                        var key   = TypeHelper.GetName(varRef);
                        var value = var.Reference.FullName().Replace('.', '_');
                        sw.WriteLine($"            var bean = value[i];");
                        sw.WriteLine($"            this.V{var.Name}Map{varRef.Name}.set(bean.V{varRef.Name}, bean);");
                    }
                    sw.WriteLine($"        }}");
                    sw.WriteLine($"    }}");
                    foreach (var varRef in var.Reference.Variables)
                    {
                        if (false == varRef.IsKeyable())
                        {
                            continue;
                        }
                        if (false == varRef.PropertiesList.Contains(pid))
                        {
                            continue;
                        }
                        var key   = TypeHelper.GetName(varRef);
                        var value = var.Reference.FullName().Replace('.', '_');
                        sw.WriteLine($"    public V{var.Name}Map{varRef.Name}?: Map<{key}, _{value}> = new Map<{key}, _{value}>();");
                    }
                }
            }
            sw.WriteLine($"}}"); // end of bean
            sw.WriteLine();

            // sub bean
            foreach (var sub in bean.BeanDefines.Values)
            {
                Gen(sw, doc, sub, flags);
            }
        }
Exemple #16
0
 public static void GenLoad(StreamWriter sw, string prefix, BeanDefine beanDefine, Bean bean, Property.DataOutputFlags flags)
 {
     sw.WriteLine($"{{");
     foreach (var varDefine in beanDefine.Variables)
     {
         if (0 == (varDefine.DataOutputFlags & flags))
         {
             continue;
         }
         if (bean.VariableMap.TryGetValue(varDefine.Name, out var varData))
         {
             GenLoad(sw, prefix + "    ", varDefine, varData, flags);
         }
         else if (VarDefine.EType.List == varDefine.TypeNow)
         {
             sw.WriteLine($"{prefix}    V{varDefine.Name}: [");
             sw.WriteLine($"{prefix}    ],");
         }
     }
     sw.Write($"{prefix}}}");
 }
Exemple #17
0
        public static void GenLoader(System.IO.StreamWriter sw, Document doc, VarDefine var, string prefix, Property.DataOutputFlags flags)
        {
            switch (var.TypeNow)
            {
            case VarDefine.EType.Double:
                sw.WriteLine($"{prefix}if (!string.IsNullOrEmpty(e.InnerText))");
                sw.WriteLine($"{prefix}    V{var.Name} = double.Parse(e.InnerText);");
                break;

            case VarDefine.EType.Enum:
                sw.WriteLine($"{prefix}V{var.Name} = ({var.Name})System.Enum.Parse(typeof({var.Name}), e.InnerText);");
                break;

            case VarDefine.EType.Float:
                sw.WriteLine($"{prefix}if (!string.IsNullOrEmpty(e.InnerText))");
                sw.WriteLine($"{prefix}    V{var.Name} = float.Parse(e.InnerText);");
                break;

            case VarDefine.EType.Int:
                sw.WriteLine($"{prefix}if (!string.IsNullOrEmpty(e.InnerText))");
                sw.WriteLine($"{prefix}    V{var.Name} = int.Parse(e.InnerText);");
                break;

            case VarDefine.EType.List:
                sw.WriteLine($"{prefix}Manager.LoadList(e, (XmlElement eInList) =>");
                sw.WriteLine($"{prefix}{{");
                sw.WriteLine($"{prefix}    var beanInList = new {var.Reference.FullName()}(eInList);");
                sw.WriteLine($"{prefix}    V{var.Name}.Add(beanInList);");
                if (false == FormMain.Instance.PropertyManager.Properties.TryGetValue(Property.IdList.PName, out var pid))
                {
                    throw new Exception("Property.Id miss!");
                }
                foreach (var varRef in var.Reference.Variables)
                {
                    if (false == varRef.IsKeyable())
                    {
                        continue;
                    }

                    if (false == varRef.PropertiesList.Contains(pid))
                    {
                        continue;
                    }

                    sw.WriteLine($"{prefix}    V{var.Name}Map{varRef.Name}.Add(beanInList.V{varRef.Name}, beanInList);");
                }
                sw.WriteLine($"{prefix}}});");
                break;

            case VarDefine.EType.Long:
                sw.WriteLine($"{prefix}if (!string.IsNullOrEmpty(e.InnerText))");
                sw.WriteLine($"{prefix}    V{var.Name} = long.Parse(e.InnerText);");
                break;

            case VarDefine.EType.String:
                sw.WriteLine($"{prefix}V{var.Name} = e.InnerText;");
                break;

            case VarDefine.EType.Date:
                sw.WriteLine($"{prefix}V{var.Name} = DateTime.Parse(e.InnerText);");
                break;

            default:
                throw new Exception("unknown type");
            }
        }