private static List <MethodDescription> GetMethodList(IEnumerable <HtmlNode> detailsections, string searchitem) { List <MethodDescription> mdlist = new List <MethodDescription>(); // div with class section details has a div with sectionTitle class and the title is Constructor Detail var detailsection = detailsections.FirstOrDefault(x => x.Descendants("div") .FirstOrDefault(subnode => (subnode.Attributes["class"] != null ? subnode.Attributes["class"].Value.Contains("sectionTitle") : false) && subnode.InnerText.Contains(searchitem)) != null); if (detailsection != null) { var sectionItems = detailsection.Descendants("div").Where(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("sectionItem") : false); foreach (var sectionItem in sectionItems) { try { MethodDescription md = CreateMethodDescription(sectionItem); mdlist.Add(md); } catch (Exception) { } } } return(mdlist); }
private static MethodDescription CreateMethodDescription(HtmlNode sectionItem) { MethodDescription md = new MethodDescription(); try { md.Name = sectionItem.Descendants("div").First(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("itemTitle") : false).InnerText.Split("(".ToCharArray())[0].Trim(); } catch (InvalidOperationException) { // maybe constructor handling here. } md.Attributes = sectionItem.Attributes["class"].Value.Split().ToList(); var description = sectionItem.Descendants("div").FirstOrDefault(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("full-description") : false); md.Description = description.InnerHtml.Trim(); var paramtables = sectionItem.Descendants("table").Where(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("methodItem") : false) .Select(x => new { category = x.ParentNode.ChildNodes[x.ParentNode.ChildNodes.IndexOf(x) - 2].InnerText.TrimEnd(":".ToCharArray()), table = x }); foreach (var paramtable in paramtables) { if (paramtable.category == "Returns" || paramtable.category == "Parameters") { CreateParameters(md, paramtable.table); } } return(md); }
public ConstructorDescription(MethodDescription methodDescription) { Attributes = methodDescription.Attributes; Description = methodDescription.Description; Name = methodDescription.Name; Parameters = methodDescription.Parameters; ReturnType = methodDescription.ReturnType; }
private static void AppendMethod(StringBuilder classcontent, MethodDescription cd) { foreach (string s in cd.CreateMethodStubs()) { classcontent.AppendLine(); classcontent.AppendLine(s + ";"); } }
private static void CreateParameters(MethodDescription md, HtmlNode paramtable) { foreach (var row in paramtable.Descendants("tr")) { Parameter p = new Parameter(); // get type of method parameter without brackets p.Type = row.Descendants("td").First(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("methodItemType") : false).InnerText.TrimStart("{".ToCharArray()).TrimEnd("}".ToCharArray()); try { p.Name = row.Descendants("td").First(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("methodItemName") : false).InnerText.Trim(); } catch (InvalidOperationException) { // no name means it is a return value md.ReturnType = p.Type; continue; } p.Description = row.Descendants("td").First(x => x.Attributes["class"] != null ? x.Attributes["class"].Value.Contains("methodItemDesc") : false).InnerText.Trim(); md.Parameters.Add(p); } }