static XElement BuildNsSection(TypeDom.TypeKindEnum kind, TypeDom[] types) { if (!types.Any()) { return(null); } XElement tbody; var ret = Section( Names[kind + "_s"], x("table", a("class", "doc_table"), tbody = x("tbody")) ); tbody.Add(BuildRow(new XElement[0], x("span", Names[Strings.Name]), Names[Strings.Description].ToSpan(), "th")); foreach (var type in types) { tbody.Add(BuildRow( Enumerable.Repeat(GetImage(Navigation.GetIconCss((kind + (type.Type.IsPublic ? "Pub" : "Prot")).To <MemberIconsEnum>()), Names[kind.ToString()], Navigation.EmptyImage, Names[kind.ToString()]), 1), BuildTypeUrl(type.Type, false), XMLUtils.GetTagInnerXml(type.DocInfo, "summary", Navigation, false) )); } return(ret); }
static string Generate(SolutionDom sln) { XElement body; var doc = GetDoc(out body); body.Add(x("h1", sln.Name)); XElement tbody; var table = Section( Names[Strings.Namespace + "_s"], x("table", a("class", "doc_table"), tbody = x("tbody")) ); tbody.Add(BuildRow(new XElement[0], x("span", Names[Strings.Name]), Names[Strings.Description].ToSpan(), "th")); foreach (var ns in sln.Namespaces) { tbody.Add(BuildRow( Enumerable.Empty <XElement>(), BuildNsUrl(ns.Name), XMLUtils.GetTagInnerXml(ns.DocInfo, "summary", Navigation, false) )); } body.Add(table); return(doc.ToString()); }
static XElement BuildNestedTypes(IEnumerable <TypeDom> members) { if (members == null || !members.Any()) { return(null); } return(BuildMembers(Names[Strings.NestedTypes], members.Select(_ => new MemberColumns { Name = BuildTypeUrl(_.Type), Description = XMLUtils.GetTagInnerXml(_.DocInfo, "summary", Navigation, false) } ))); }
static XElement BuildEnding(AssemblyDom asm, XElement docInfo) { var remarks = XMLUtils.GetTagInnerXml(docInfo, "remarks", Navigation, true); return (x("div", remarks == null ? x("span") : Section(Names[Strings.Remarks], x("p", remarks)), Section(Names[Strings.VersionInfo], x("p", x("b", Names[Strings.Version] + ": "), asm.Version, x("br"), x("b", Names[Strings.NetRuntimeVersion] + ": "), asm.RuntimeVersion ), a("class", "doc_version") ) )); }
static string Generate(MemberDom member) { var doc = GetDoc(out var body); body.Add( x("h1", member.Type.SimpleName + GetMemberName(member) + Names[Strings.SuffixDelimeter] + Names[GetMethodKindName(member)] + " ", member.GetParametersLongSignature()), x("p", XMLUtils.GetTagInnerXml(member.DocInfo, "summary", Navigation, true)), NamespaceAssembly(member.DeclaringType), GenerateSyntax(member), BuldParameters(Names[Strings.TypeParameters], member.GenericArguments), BuldParameters(Names[Strings.Parameters], member.Params), BuildReturns(member), BuildEnding(member.Type.Assembly, member.DocInfo) ); return(doc.ToString()); }
static XElement GetMemberDescription(MemberDom m) { var ret = XMLUtils.GetTagInnerXml(m.DocInfo, "summary", Navigation, false) ?? string.Empty.ToSpan(); var inherited = m.GetInheritedFrom(); var overrides = m.GetOverrides(); if (overrides != null) { ret.Add((" (" + Names[Strings.Overrides] + " ").ToSpan(), BuildMemberUrl(overrides, false, true), ")".ToSpan()); } else if (inherited != null) { ret.Add((" (" + Names[Strings.InheritedFrom] + " ").ToSpan(), BuildTypeUrl(inherited), ")".ToSpan()); } return(ret); }
static XElement BuildReturns(MemberDom m) { if (!(m is MethodDom meth)) { return(BuildMemberType(m)); } if (meth.MemberType == null || meth.MemberType == typeof(void)) { return(null); } return (x("div", a("class", "doc_return"), x("h4", Names[Strings.ReturnValue], a("class", "doc_h4")), Names[Strings.Type] + ": ", BuildTypeUrl(meth.MemberType), x("br"), XMLUtils.GetTagInnerXml(m.DocInfo, "returns", Navigation, true) )); }
static string Generate(TypeDom type) { var doc = GetDoc(out var body); body.Add( x("h1", type.GetDisplayName(false) + Names[Strings.SuffixDelimeter] + Names[type.TypeKind.ToString()]), x("p", XMLUtils.GetTagInnerXml(type.DocInfo, "summary", Navigation, true)), InheritanceSection(type), NamespaceAssembly(type.Type), GenerateSyntax(type), BuldParameters(Names[Strings.TypeParameters], type.GenericTypeParameters) ); for (int i = 0; i <= (int)MemberTypeSection.Events; i++) { body.Add(BuildMembers((MemberTypeSection)i, type)); } body.Add(BuildEnding(type.Assembly, type.DocInfo)); return(doc.ToString()); }