public static AssemblyDom Build(AssemblyDoc asmDoc, Assembly asm, Func<MemberDom, bool> filterMembers, FindOptions findOptions) { var ret = new AssemblyDom { _name = asmDoc.Name, ReflectionAssembly = asm }; asmDoc.MergeWithReflection(asm, findOptions, out ret.ErrorUnboundTypes, out ret.ErrorUnboundMembers); ret.AllTypes = asmDoc.Types.Select(_ => TypeDom.Build(_, ret, filterMembers)).ToArray(); ret.FillNamespaces(); ret.FillNestedTypes(); return ret; }
public static AssemblyDom Build(AssemblyDoc asmDoc, Assembly asm, Func <MemberDom, bool> filterMembers, FindOptions findOptions) { var ret = new AssemblyDom { _name = asmDoc.Name, ReflectionAssembly = asm }; asmDoc.MergeWithReflection(asm, findOptions, out ret.ErrorUnboundTypes, out ret.ErrorUnboundMembers); ret.AllTypes = asmDoc.Types.Select(_ => TypeDom.Build(_, ret, filterMembers)).ToArray(); ret.FillNamespaces(); ret.FillNestedTypes(); return(ret); }
private static void AddAssembly(OfflineDynamicPage rootItems, AssemblyDom asmDom) { var asmItem = new OfflineDynamicPage { Parent = rootItems, UrlPart = asmDom.Name, RussianTitle = asmDom.Name, RussianContent = GenerateHtml.Generate(asmDom), }; rootItems.Childs.Add(asmItem); AddNamespaces(asmItem, asmDom.Namespaces); }
static WarningOrError GetUnboundError(AssemblyDom asmDom) { if ( (asmDom.ErrorUnboundTypes == null || asmDom.ErrorUnboundTypes.Length == 0) && (asmDom.ErrorUnboundMembers == null || asmDom.ErrorUnboundMembers.Length == 0) ) { return(null); } return(new WarningOrError { ErrorType = WarningOrError.ErrorTypeEn.HaveUnboundTypesOrMembers, AssemblyName = asmDom.Name, UnboundTypes = asmDom.ErrorUnboundTypes, UnboundMembers = asmDom.ErrorUnboundMembers }); }
public static TypeDom Build(TypeDoc doc, AssemblyDom asm, Func <MemberDom, bool> filterMembers) { var ret = new TypeDom { Assembly = asm, DocInfo = doc.DocInfo, Type = doc.ReflectionType, }; MemberDom[] members = doc.Members .Where(_ => _.ReflectionMemberInfo != null) .Select(_ => MemberDom.Build(ret, _.ReflectionMemberInfo, _.DocInfo)) .ToArray(); members = members.Where( _ => (filterMembers == null || filterMembers(_)) && !_.IsPrivateOrInternal ).ToArray(); ret.AllMembers = members; ret.Constructors = members.OfType <ConstructorDom>().OrderBy(_ => _.ShortSignature).ToArray(); ret.Fields = members.OfType <FieldDom>() .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Properties = members.OfType <PropertyDom>() .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Methods = members.OfType <MethodDom>() .Where(_ => !_.IsOperator) .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Operators = members.OfType <MethodDom>() .Where(_ => _.IsOperator) .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Events = members.OfType <EventDom>() .OrderBy(_ => _.ShortSignature) .ToArray(); ret.GenericTypeParameters = GenericParameterDom.BuildTypeGenericParameters(ret.Type, ret.DocInfo); return(ret); }
public static SolutionDom Build(string name, string[] assemblyFiles, string[] xmlDocFiles, string xmlNamespaceProjectFile = null, Func <MemberDom, bool> filterMembers = null, FindOptions findOptions = null) { if (findOptions == null) { findOptions = new FindOptions(); //использовать значения по умолчанию } IEnumerable <AssemblyDoc> docs = ParseDocfiles(xmlDocFiles); var asmsDict = AssemblyUtils.LoadAllAssemblies(assemblyFiles) .ToDictionary(_ => _.GetName().Name); var asmDoms = new List <AssemblyDom>(); var errors = new List <WarningOrError>(); foreach (var doc in docs) { AssemblyDom asmDom = null; try { asmDom = AssemblyDom.Build(doc, asmsDict[doc.Name], filterMembers, findOptions); } catch (Exception ex) { errors.Add(new WarningOrError { AssemblyName = doc.Name, InnerException = ex, ErrorType = WarningOrError.ErrorTypeEn.BindingWithReflection }); } if (asmDom != null) { asmDoms.Add(asmDom); var error = GetUnboundError(asmDom); if (error != null) { errors.Add(error); } } } var ret = new SolutionDom { Assemblies = asmDoms.ToArray(), Errors = errors, Name = name }; ret.Namespaces = MergeNamespaces(ret.Assemblies.SelectMany(_ => _.Namespaces)); ret.AllTypes = ret.Assemblies.SelectMany(_ => _.AllTypes).ToArray(); //ret.Namespaces.SelectMany(_ => _.Types).ToArray(); PopulateExtentionMethods.Populate(ret.AllTypes); MergeDocWithBaseClasses.Merge(ret.AllTypes); //namespaces if (xmlNamespaceProjectFile != null) { var comm = NamespaceCommentsParser.Parse(XDocument.Load(xmlNamespaceProjectFile).Root); foreach (var ns in ret.Namespaces) { NamespaceComments c; if (comm.TryGetValue(ns.Name, out c)) { ns.DocInfo = c.Comments; } } } foreach (var type in ret.AllTypes) { type.FillOverrideIndex(); } return(ret); }
public static TypeDom Build(TypeDoc doc, AssemblyDom asm, Func<MemberDom, bool> filterMembers) { var ret = new TypeDom { Assembly = asm, DocInfo = doc.DocInfo, Type = doc.ReflectionType, }; MemberDom[] members = doc.Members .Where(_ => _.ReflectionMemberInfo != null) .Select(_ => MemberDom.Build(ret, _.ReflectionMemberInfo, _.DocInfo)) .ToArray(); members = members.Where( _ => (filterMembers==null || filterMembers(_)) && !_.IsPrivateOrInternal ).ToArray(); ret.AllMembers = members; ret.Constructors = members.OfType<ConstructorDom>().OrderBy(_ => _.ShortSignature).ToArray(); ret.Fields = members.OfType<FieldDom>() .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Properties = members.OfType<PropertyDom>() .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Methods = members.OfType<MethodDom>() .Where(_ => !_.IsOperator) .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Operators = members.OfType<MethodDom>() .Where(_ => _.IsOperator) .OrderBy(_ => _.ShortSignature) .ToArray(); ret.Events = members.OfType<EventDom>() .OrderBy(_ => _.ShortSignature) .ToArray(); ret.GenericTypeParameters = GenericParameterDom.BuildTypeGenericParameters(ret.Type, ret.DocInfo); return ret; }
static WarningOrError GetUnboundError(AssemblyDom asmDom) { if ( (asmDom.ErrorUnboundTypes == null || asmDom.ErrorUnboundTypes.Length == 0) && (asmDom.ErrorUnboundMembers == null || asmDom.ErrorUnboundMembers.Length == 0) ) return null; return new WarningOrError { ErrorType = WarningOrError.ErrorTypeEn.HaveUnboundTypesOrMembers, AssemblyName = asmDom.Name, UnboundTypes = asmDom.ErrorUnboundTypes, UnboundMembers = asmDom.ErrorUnboundMembers }; }
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") ) ); }