Beispiel #1
0
 private static void WriteProperty(CodeWriter codeWriter, DataModel model, DataModelMember member)
 {
     WriteXmlDocCommentsFor(codeWriter, member);
     WritePropertyDataMemberAttribute(codeWriter, member);
     WritePropertyDeclaration(codeWriter, member, model.GetTypeByG4Name(member.DeclaredName).CSharpName);
 }
Beispiel #2
0
        private static void WriteProperty(CodeWriter codeWriter, DataModel model, DataModelMember member, bool lastMember)
        {
            string        memberName     = member.SerializedName;
            DataModelType memberType     = model.GetTypeByG4Name(member.DeclaredName);
            string        memberTypeName = memberType.G4DeclaredName;

            codeWriter.WriteLine(@"""" + memberName + @""": ");
            codeWriter.OpenBrace();

            codeWriter.WriteLine(@"""description"": """ + BuildDescription(member.SummaryText) + @""",");

            string canonicalizedName, format;
            bool   isPrimitive = CanonicalizeTypeName(memberTypeName, out canonicalizedName, out format);

            int rank = member.Rank;

            while (rank > 0)
            {
                WriteArrayStart(codeWriter, member); rank--;
            }

            string defaultValue = member.Default;
            bool   hasDefault   = !string.IsNullOrEmpty(defaultValue);

            if (isPrimitive)
            {
                string pattern = member.Pattern;
                string minimum = member.Minimum;

                bool hasMinimum = !(string.IsNullOrEmpty(minimum));
                bool hasPattern = !string.IsNullOrEmpty(pattern);
                bool hasFormat  = !string.IsNullOrEmpty(format);

                codeWriter.WriteLine(@"""type"": """ + canonicalizedName + @"""" + ((hasPattern || hasFormat || hasMinimum || hasDefault) ? "," : ""));

                if (hasFormat)
                {
                    codeWriter.WriteLine(@"""format"": """ + format + @"""" + ((hasPattern || hasMinimum || hasDefault) ? "," : ""));
                }

                if (hasPattern)
                {
                    codeWriter.WriteLine(@"""pattern"": """ + pattern + @"""" + ((hasMinimum || hasDefault) ? "," : ""));
                }

                if (hasMinimum)
                {
                    codeWriter.WriteLine(@"""minimum"": " + minimum + (hasDefault ? "," : ""));
                }

                if (hasDefault)
                {
                    codeWriter.WriteLine(@"""default"": " + defaultValue);
                }
            }
            else if (memberType.Kind == DataModelTypeKind.Enum)
            {
                var sb = new StringBuilder();
                sb.Append(@"""enum"": [ ");

                if (hasDefault)
                {
                    codeWriter.WriteLine(@"""default"": " + defaultValue + ",");
                }

                for (int i = 0; i < memberType.G4DeclaredValues.Length; i++)
                {
                    bool   isFinal = i == memberType.G4DeclaredValues.Length - 1;
                    string name    = memberType.G4DeclaredValues[i].Replace("'", "");
                    sb.Append(@"""" + name + @"""" + (isFinal ? "" : ","));
                }
                codeWriter.WriteLine(sb.ToString() + "]");
            }
            else
            {
                codeWriter.WriteLine(@"""$ref"": ""#/definitions/" + canonicalizedName + @"""");
            }
            rank = member.Rank;
            while (rank > 0)
            {
                WriteArrayEnd(codeWriter); rank--;
            }
            codeWriter.CloseBrace(lastMember ? "" : ",");
        }