private string GenerateRelationOtherTypesEnum(string indent) { var enumData = indent + "/// <summary>Enum listing all relationships between CV terms used in the included CVs</summary>\n"; enumData += indent + "public enum " + RelationsOtherTypesEnumName + " : int\n" + indent + "{\n"; var dict = new Dictionary <string, OBO_File.OBO_Typedef>(); var unknownDef = new OBO_File.OBO_Typedef { Def = "Unknown term relationship" }; dict.Add("Unknown", unknownDef); foreach (var obo in _allObo) { foreach (var typedef in obo.Typedefs.Values) { // Remove all duplicates, and automatically create new items.... dict[typedef.Id] = typedef; } } // part_of sets are separate. if (dict.ContainsKey("part_of")) { dict.Remove("part_of"); } foreach (var item in dict) { if (!string.IsNullOrWhiteSpace(item.Value.Def)) { enumData += indent + " /// " + EscapeXmlEntities("summary", item.Value.DefShort) + "\n"; } else { enumData += indent + " /// <summary>Description not provided</summary>\n"; } if (!string.IsNullOrWhiteSpace(item.Value.Comment)) { enumData += indent + " /// " + EscapeXmlEntities("remarks", item.Value.Comment) + "\n"; } enumData += indent + " " + item.Key + ",\n\n"; } return(enumData + indent + "}"); }
public void Read(string url) { var fileData = (new WebClient()).DownloadString(url); FileData = new OBO_File(url); using (var reader = new StringReader(fileData)) { var line = reader.ReadLine(); while (string.IsNullOrWhiteSpace(line) && line != null) { line = reader.ReadLine(); } var type = "header"; var data = new List <KeyValuePair <string, string> >(); while (reader.Peek() != -1 && !string.IsNullOrWhiteSpace(line)) { if (line.StartsWith("[")) { type = line; line = reader.ReadLine(); while (string.IsNullOrWhiteSpace(line) && line != null) { line = reader.ReadLine(); } } data.Clear(); while (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("[")) { var keyStop = line.IndexOf(':'); var valueStart = line[keyStop + 1] == ' ' ? keyStop + 2 : keyStop + 1; data.Add(new KeyValuePair <string, string>(line.Substring(0, keyStop), line.Substring(valueStart))); line = reader.ReadLine(); while (string.IsNullOrWhiteSpace(line) && line != null) { line = reader.ReadLine(); } } switch (type.ToLower()) { case "header": FileData.Header = new OBO_File.OBO_Header(data); break; case "[term]": var term = new OBO_File.OBO_Term(data); if (FileData.Terms.ContainsKey(term.Id)) { Console.WriteLine("Warning: Duplicate term id found"); Console.WriteLine("\tFirst term: \t\"" + FileData.Terms[term.Id].Id + "\": \"" + FileData.Terms[term.Id].Def + "\"."); Console.WriteLine("\tConflict term: \t\"" + term.Id + "\": \"" + term.Def + "\"."); Console.WriteLine("\tChanging conflict id to \"" + term.Id + "_\""); term.Id = term.Id + "_"; } FileData.Terms.Add(term.Id, term); break; case "[typedef]": var typeDef = new OBO_File.OBO_Typedef(data); FileData.Typedefs.Add(typeDef.Id, typeDef); break; case "[instance]": var instance = new OBO_File.OBO_Instance(data); FileData.Instances.Add(instance.Id, instance); break; } } } foreach (var import in FileData.Header.Import) { var reader = new OBO_Reader(); reader.Read(import); ImportedFileData.Add(reader.FileData); ImportedFileData.AddRange(reader.ImportedFileData); } }