private string GetCsCode(SpecificType currentType) { if (string.IsNullOrEmpty(currentType.TypeName)) { return(string.Empty); } SchemaDotOrgProperty[] properties = GetProperties(currentType.TypeName); StringBuilder result = new StringBuilder(); result.AppendLine("using Bam.Net.Schema.Org.DataTypes;"); result.AppendLine(); result.AppendLine("namespace Bam.Net.Schema.Org.Things"); result.AppendLine("{"); result.AppendFormat("\t///<summary>{0}</summary>\r\n", GetTypeDescription(currentType.TypeName)); result.AppendFormat("\tpublic class {0}", currentType.ClassName); if (!string.IsNullOrEmpty(currentType.Extends)) { result.AppendFormat(": {0}", currentType.Extends); } result.AppendLine(); result.AppendLine("\t{"); foreach (SchemaDotOrgProperty prop in properties) { result.AppendFormat("\t\t///<summary>{0}</summary>\r\n", prop.Description); result.AppendFormat("\t\tpublic {0} {1} {{get; set;}}\r\n", prop.ExpectedType, prop.Name.PrefixWithUnderscoreIfStartsWithNumber().PascalCase()); } result.AppendLine("\t}"); result.AppendLine("}"); return(result.ToString()); }
private HashSet <SpecificType> GetTypes() { HashSet <SpecificType> results = new HashSet <SpecificType>(); Queue <SpecificType> queue = new Queue <SpecificType>(); SpecificType thing = new SpecificType { TypeName = "Thing", Extends = "DataType" }; results.Add(thing); queue.Enqueue(thing); while (queue.Count > 0) { OutLine($"Queue count is {queue.Count}", ConsoleColor.Yellow); SpecificType currentType = queue.Dequeue(); OutLine($"Getting sub types for {currentType.TypeName}", ConsoleColor.Cyan); List <SpecificType> subTypes = GetSubTypes(currentType.TypeName).ToList(); OutLine($"Found {subTypes.Count} sub types", ConsoleColor.Blue); subTypes.ForEach(subType => { queue.Enqueue(subType); results.Add(subType); OutLine($"\t{subType.TypeName} extends {subType.Extends}", ConsoleColor.DarkCyan); }); } return(results); }
public override bool Equals(object obj) { SpecificType type = obj as SpecificType; if (type == null) { return(false); } return(ToString().Equals(type.ToString())); }
private void WriteCsCode(SpecificType currentType) { OutLine($"Writing code for {currentType.TypeName}: {currentType.Extends}", ConsoleColor.Cyan); int num; string specified = $"C:\\Schema.org\\{currentType.TypeName.LettersOnly()}.cs"; string path = specified.GetNextFileName(out num); if (num > 0) { currentType.ClassName = $"{currentType.ClassName}_{num}"; } string code = GetCsCode(currentType); TryWrite(code, path); }