ServiceStack.NativeTypes.TypeScript.TypeScriptGenerator.AddProperties C# (CSharp) Method

AddProperties() public method

public AddProperties ( System.Text.StringBuilderWrapper sb, MetadataType type, bool includeResponseStatus ) : void
sb System.Text.StringBuilderWrapper
type MetadataType
includeResponseStatus bool
return void
        public void AddProperties(StringBuilderWrapper sb, MetadataType type, bool includeResponseStatus)
        {
            var wasAdded = false;

            var dataMemberIndex = 1;
            if (type.Properties != null)
            {
                foreach (var prop in type.Properties)
                {
                    if (wasAdded) sb.AppendLine();

                    var propType = Type(prop.GetTypeName(Config, allTypes), prop.GenericArgs);
                    var optional = "";
                    if (propType.EndsWith("?"))
                    {
                        propType = propType.Substring(0, propType.Length - 1);
                        optional = "?";
                    }

                    if (Config.MakePropertiesOptional)
                        optional = "?";

                    if (prop.Attributes.Safe().FirstOrDefault(x => x.Name == "Required") != null)
                        optional = "";

                    if (Config.ExportAsTypes && !type.IsInterface.GetValueOrDefault())
                        optional = "";

                    wasAdded = AppendComments(sb, prop.Description);
                    wasAdded = AppendDataMember(sb, prop.DataMember, dataMemberIndex++) || wasAdded;
                    wasAdded = AppendAttributes(sb, prop.Attributes) || wasAdded;
                    sb.AppendLine("{1}{2}: {0};".Fmt(propType, prop.Name.SafeToken().PropertyStyle(), optional));
                }
            }

            if (includeResponseStatus)
            {
                if (wasAdded) sb.AppendLine();

                AppendDataMember(sb, null, dataMemberIndex++);
                sb.AppendLine("{0}{1}: ResponseStatus;".Fmt(
                    typeof(ResponseStatus).Name.PropertyStyle(), Config.ExportAsTypes ? "" : "?"));
            }
        }