Example #1
0
        private void GenerateModelEnum(Type type)
        {
            if (ModelsCodeGenerated.Contains(type) || CannotGenerateAssemblyTypes(type))
            {
                return;
            }
            ModelsCodeGenerated.Add(type);
            EnumReferenceInfo enumReferenceInfo = new EnumReferenceInfo
            {
                Name      = type.Name,
                NameSpace = type.Namespace
            };
            Type baseEumType = Enum.GetUnderlyingType(type);

            enumReferenceInfo.TypeName = GetFullNameOfType(baseEumType, true);
            foreach (object name in Enum.GetValues(type))
            {
                object res   = Convert.ChangeType(name, baseEumType);
                string value = "";
                if (res != null)
                {
                    value = res.ToString();
                }
                if (!enumReferenceInfo.KeyValues.Any(x => x.Key == name.ToString()))
                {
                    enumReferenceInfo.KeyValues.Add(new KeyValue <string, string>(name.ToString(), value));
                }
            }
            NamespaceReferenceInfo.Enums.Add(enumReferenceInfo);
        }
Example #2
0
        private void GenerateModelEnum(EnumReferenceInfo enumReferenceInfo, string prefix, StringBuilder builder)
        {
            if (string.IsNullOrEmpty(enumReferenceInfo.TypeName) || enumReferenceInfo.TypeName.Equals("byte", StringComparison.OrdinalIgnoreCase) || enumReferenceInfo.TypeName.Equals("int", StringComparison.OrdinalIgnoreCase))
            {
                enumReferenceInfo.TypeName = "Int";
            }
            builder.AppendLine(prefix + $"public enum {enumReferenceInfo.Name.ToCamelCase()} : {enumReferenceInfo.TypeName} {{");
            foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues)
            {
                builder.AppendLine($"{prefix + prefix} case {name.Key.ToCamelCase()} = {name.Value}");
            }

            builder.AppendLine($"{prefix + prefix }static func detect{enumReferenceInfo.Name}(value: {enumReferenceInfo.TypeName}) -> {enumReferenceInfo.Name.ToCamelCase()} {{");
            builder.AppendLine($"{prefix + prefix + prefix}switch value {{");
            foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues)
            {
                builder.AppendLine($"{prefix + prefix + prefix} case {name.Value}:");
                builder.AppendLine($"{prefix + prefix + prefix + prefix} return .{name.Key.ToCamelCase()}");
            }
            if (enumReferenceInfo.KeyValues.Count > 0)
            {
                builder.AppendLine($"{prefix + prefix + prefix} default:");
                builder.AppendLine($"{prefix + prefix + prefix + prefix} return .{enumReferenceInfo.KeyValues[0].Key.ToCamelCase()}");
            }
            builder.AppendLine(prefix + prefix + prefix + prefix + "}");
            builder.AppendLine(prefix + prefix + prefix + "}");
            builder.AppendLine(prefix + "}");
            builder.AppendLine();
        }
Example #3
0
        private void GenerateModelEnum(string serviceName, EnumReferenceInfo enumReferenceInfo, string prefix, StringBuilder builder)
        {
            builder.AppendLine("package " + serviceName + "." + enumReferenceInfo.NameSpace + ";"); //+ " : " + enumReferenceInfo.TypeName
            builder.AppendLine();
            builder.AppendLine("public enum " + enumReferenceInfo.Name + " {");                     //+ " : " + enumReferenceInfo.TypeName
            foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues)
            {
                string lastChar = enumReferenceInfo.KeyValues.IndexOf(name) == enumReferenceInfo.KeyValues.Count - 1 ? ";" : ",";
                builder.AppendLine($"{prefix}{name.Key}(\"{name.Key}\", {name.Value}){lastChar}");
            }
            builder.AppendLine(prefix + $@"private String stringValue;
    private int intValue;

    private {enumReferenceInfo.Name}(String toString, int value) {{
        stringValue = toString;
        intValue = value;
    }}

    @Override
    public String toString() {{
        return stringValue;
    }}");

            builder.AppendLine("}");
            builder.AppendLine();
        }
Example #4
0
 private void GenerateModelEnum(EnumReferenceInfo enumReferenceInfo, string prefix, StringBuilder builder)
 {
     builder.AppendLine(prefix + "export enum " + enumReferenceInfo.Name + " {");//+ " : " + enumReferenceInfo.TypeName
     foreach (SignalGo.Shared.Models.KeyValue <string, string> name in enumReferenceInfo.KeyValues)
     {
         builder.AppendLine($"{prefix + prefix}{name.Key} = {name.Value},");
     }
     builder.AppendLine(prefix + "}");
     builder.AppendLine();
 }