diff options
Diffstat (limited to 'ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos')
7 files changed, 346 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/AssemblyInfo.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/AssemblyInfo.cs new file mode 100644 index 0000000..8e14d42 --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/AssemblyInfo.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + [DebuggerDisplay("Name = {Name}")] + public class AssemblyInfo : Info + { + public Assembly Assembly { get; protected set; } + + public List<NamespaceInfo> Namespaces { get; private set; } + + public AssemblyInfo(Assembly assembly, XElement xmlDocs) + { + Assembly = assembly; + + Namespaces = + ( + from type in assembly.GetTypes() + where type.IsPublic + orderby type.Namespace ascending, type.Name ascending + group type by type.Namespace into g + select new NamespaceInfo(this, g.Key, g.ToList(), xmlDocs) + ).ToList(); + } + } +} diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/ConstructorInfo.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/ConstructorInfo.cs new file mode 100644 index 0000000..3a00b19 --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/ConstructorInfo.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + public class ConstructorInfo : Info + { + public System.Reflection.ConstructorInfo Constructor { get; private set; } + + public List<System.Reflection.ParameterInfo> Parameters { get; private set; } + + public ConstructorInfo(System.Reflection.ConstructorInfo constructorInfo, XElement xmlDocs) + { + Constructor = constructorInfo; + + Parameters = constructorInfo.GetParameters().ToList(); + } + } +} diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/Info.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/Info.cs new file mode 100644 index 0000000..fda1943 --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/Info.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text.RegularExpressions; +using System.Xml; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + [DebuggerDisplay("Name = {Name}, DisplayName = {DisplayName}, Namespace = {NameSpace}, FullName = {FullName}")] + public abstract class Info + { + //private string fullName; + //private string fullHtmlName; + //private string fullCodeName; + + //protected readonly HtmlFormatter htmlFormatter = new HtmlFormatter(); + //protected readonly XmlDocFormatter xmlDocFormatter = new XmlDocFormatter(); + + //public string Namespace { get; protected set; } + + //public string Name { get; protected set; } + + //public string HtmlName { get; protected set; } + + //public string CodeName { get; protected set; } + + //public string FullName + //{ + // get => fullName ?? $"{Namespace}.{Name}"; + // protected set => fullName = value; + //} + + //public string FullHtmlName + //{ + // get => fullHtmlName ?? $"{Namespace}.{HtmlName}"; + // protected set => fullHtmlName = value; + //} + + //public string FullCodeName + //{ + // get => fullCodeName ?? $"{Namespace}.{CodeName}"; + // protected set => fullCodeName = value; + //} + + //public string Summary { get; protected set; } + + protected string ParseSummary(string memberName, XElement xmlDocs) + { + var members = xmlDocs.Descendants("member"); + var member = members?.SingleOrDefault(m => m.Attribute("name")?.Value == memberName); + var summary = member?.Element("summary"); + if (summary != null) + { + var summaryText = new List<string>(); + foreach (var node in summary.Nodes()) + { + string text; + if (node.NodeType == XmlNodeType.Element) + { + var el = (XElement)node; + switch (el.Name.ToString()) + { + case "paramref": + text = el.Attribute("name").Value; + break; + case "see": + text = el.Attribute("cref").Value.Substring(2); + break; + case "c": + text = el.Value; + break; + default: + throw new InvalidOperationException($"Unhandled element '{el.Name}'."); + } + + text = $"``{text.Trim()}``"; + } + else if (node.NodeType == XmlNodeType.Text) + { + text = node.ToString(); + } + else + { + throw new InvalidOperationException($"Unhandled node type '{node.NodeType}'."); + } + + text = Regex.Replace(text, @"\s{2,}", " ").Trim(); + + summaryText.Add(text); + } + + return string.Join(" ", summaryText); + } + + if (memberName.Substring(2).StartsWith("CsvHelper")) + { + Console.WriteLine($"No summary found for '{memberName}'."); + } + + return null; + } + } +} diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/MethodInfo.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/MethodInfo.cs new file mode 100644 index 0000000..c73913e --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/MethodInfo.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + public class MethodInfo : Info + { + public System.Reflection.MethodInfo Method { get; private set; } + + public List<System.Reflection.ParameterInfo> Parameters { get; private set; } + + public List<Type> GenericArguments { get; private set; } + + public MethodInfo(System.Reflection.MethodInfo methodInfo, XElement xmlDocs) + { + Method = methodInfo; + + Parameters = methodInfo.GetParameters().ToList(); + + GenericArguments = methodInfo.GetGenericArguments().ToList(); + } + } +} diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/NamespaceInfo.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/NamespaceInfo.cs new file mode 100644 index 0000000..a143391 --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/NamespaceInfo.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + [DebuggerDisplay("Name = {Name}")] + public class NamespaceInfo : Info + { + public AssemblyInfo Assembly { get; protected set; } + + public string Namespace { get; protected set; } + + public List<TypeInfo> Types { get; private set; } = new List<TypeInfo>(); + + public List<TypeInfo> Classes { get; private set; } = new List<TypeInfo>(); + + public List<TypeInfo> Interfaces { get; private set; } = new List<TypeInfo>(); + + public List<TypeInfo> Enums { get; private set; } = new List<TypeInfo>(); + + public NamespaceInfo(AssemblyInfo assemblyInfo, string @namespace, List<Type> types, XElement xmlDocs) + { + Assembly = assemblyInfo; + + Namespace = @namespace; + + foreach (var type in types) + { + var typeInfo = new TypeInfo(type, xmlDocs); + Types.Add(typeInfo); + + if (type.IsClass) + { + Classes.Add(typeInfo); + } + else if (type.IsInterface) + { + Interfaces.Add(typeInfo); + } + else if (type.IsEnum) + { + Enums.Add(typeInfo); + } + } + } + } +} diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/PropertyInfo.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/PropertyInfo.cs new file mode 100644 index 0000000..2d53638 --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/PropertyInfo.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + public class PropertyInfo : Info + { + public List<System.Reflection.ParameterInfo> IndexParameters { get; protected set; } + + public TypeInfo Type { get; protected set; } + + public System.Reflection.PropertyInfo Property { get; protected set; } + + public PropertyInfo(TypeInfo type, System.Reflection.PropertyInfo propertyInfo, XElement xmlDocs) + { + Type = type; + + Property = propertyInfo; + + IndexParameters = propertyInfo.GetIndexParameters().ToList(); + } + } +} diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/TypeInfo.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/TypeInfo.cs new file mode 100644 index 0000000..18d67f3 --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Infos/TypeInfo.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Xml.Linq; + +namespace CsvHelper.DocsGenerator.Infos +{ + public class TypeInfo : Info + { + private static readonly LinkGenerator linkGenerator = new LinkGenerator(); + + public Type Type { get; protected set; } + + public List<Type> Attributes { get; protected set; } + + public List<ConstructorInfo> Constructors { get; protected set; } + + public List<Type> Interfaces { get; protected set; } + + public List<FieldInfo> Fields { get; protected set; } + + public List<PropertyInfo> Properties { get; protected set; } + + public List<MethodInfo> Methods { get; protected set; } + + public Stack<Type> Inheritance { get; protected set; } + + public List<Type> Implementers { get; protected set; } + + public TypeInfo(Type type, XElement xmlDocs) + { + Type = type; + + Interfaces = type.GetInterfaces().ToList(); + + Constructors = type + .GetConstructors(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) + .Select(c => new ConstructorInfo(c, xmlDocs)) + .Where(c => !(c.Parameters.Count == 0 && string.IsNullOrEmpty(c.Constructor.GetSummary()))) + .OrderBy(c => c.Parameters.Count) + .ToList(); + + Attributes = type + .GetCustomAttributes() + .Select(a => a.GetType()) + .OrderBy(t => t.Name) + .ToList(); + + var fieldsFlags = type.IsEnum + ? BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly + : BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly; + Fields = type + .GetFields(fieldsFlags) + .OrderBy(f => f.Name) + .ToList(); + + Properties = type + .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly) + .Select(p => new PropertyInfo(this, p, xmlDocs)) + .OrderBy(p => p.Property.Name) + .ToList(); + + Methods = type + .GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly) + .Where(m => !m.IsSpecialName) + .Select(m => new MethodInfo(m, xmlDocs)) + .OrderBy(m => m.Method.Name) + .ToList(); + + Inheritance = new Stack<Type>(); + if (type.BaseType != null) + { + Inheritance.Push(type); + var currentType = type.BaseType; + do + { + Inheritance.Push(currentType); + currentType = currentType.BaseType; + } + while (currentType != null); + } + + Implementers = new List<Type>(); + if (type.BaseType != null && type.BaseType != typeof(object)) + { + Implementers.Add(type.BaseType); + } + + Implementers.AddRange(Interfaces.Select(i => i)); + } + } +} |