コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 public ConstructorDescription(MethodDescription methodDescription)
 {
     Attributes  = methodDescription.Attributes;
     Description = methodDescription.Description;
     Name        = methodDescription.Name;
     Parameters  = methodDescription.Parameters;
     ReturnType  = methodDescription.ReturnType;
 }
コード例 #4
0
 private static void AppendMethod(StringBuilder classcontent, MethodDescription cd)
 {
     foreach (string s in cd.CreateMethodStubs())
     {
         classcontent.AppendLine();
         classcontent.AppendLine(s + ";");
     }
 }
コード例 #5
0
 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);
     }
 }