summaryrefslogtreecommitdiff
path: root/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-05-12 09:24:40 +0800
committerchai <215380520@qq.com>2023-05-12 09:24:40 +0800
commit2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (patch)
treea471fafed72e80b4ac3ac3002e06c34220dd6058 /ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs
parentb8a694746562b37dc8dc5b8b5aec8612bb0964fc (diff)
*misc
Diffstat (limited to 'ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs')
-rw-r--r--ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs94
1 files changed, 94 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs
new file mode 100644
index 0000000..c557199
--- /dev/null
+++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Formatters/HtmlFormatter.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+namespace CsvHelper.DocsGenerator.Formatters
+{
+ public class HtmlFormatter
+ {
+ public string Format(Type type, bool generateLinks = false, bool isCodeBlock = false)
+ {
+ var symbols = isCodeBlock ? Symbols.Code : Symbols.Html;
+
+ var @namespace = type.Namespace;
+ var name = type.Name;
+
+ if (type.IsByRef)
+ {
+ name = name.TrimEnd('&');
+ }
+
+ if (generateLinks)
+ {
+ if (@namespace.StartsWith("CsvHelper"))
+ {
+ name = $"[{name}](/api/{@namespace}/{name})";
+ }
+ else
+ {
+ name = $"[{name}](https://docs.microsoft.com/en-us/dotnet/api/{@namespace.ToLower()}.{name.ToLower()})";
+ }
+ }
+
+ var genericArgumentsText = string.Empty;
+ var genericArguments = type.GetGenericArguments().ToList();
+ if (genericArguments.Count > 0)
+ {
+ name = name.Substring(0, name.IndexOf('`'));
+ genericArgumentsText = $"{symbols["<"]}{string.Join(", ", genericArguments.Select(a => Format(a)))}{symbols[">"]}";
+ }
+
+ return $"{name}{genericArgumentsText}";
+ }
+
+ public string Format(MethodBase methodInfo, bool generateLinks = false, bool isCodeBlock = false)
+ {
+ var symbols = isCodeBlock ? Symbols.Code : Symbols.Html;
+
+ var @namespace = methodInfo.DeclaringType.Namespace;
+ var typeName = methodInfo.DeclaringType.Name;
+ var methodName = methodInfo.Name;
+
+ var name = methodInfo.IsConstructor ? typeName : methodName;
+
+ var genericArgumentsText = string.Empty;
+ var genericArguments = new List<Type>();
+ if (!methodInfo.IsConstructor)
+ {
+ genericArguments = methodInfo.GetGenericArguments().ToList();
+ if (genericArguments.Count > 0)
+ {
+ genericArgumentsText = $"{symbols["<"]}{string.Join(", ", genericArguments.Select(a => Format(a)))}{symbols[">"]}";
+ }
+ }
+
+ var parametersText = string.Empty;
+ var parameters = methodInfo.GetParameters().ToList();
+ if (parameters.Count > 0)
+ {
+ var typeGenericArguments = methodInfo.DeclaringType.GetGenericArguments();
+
+ parametersText = string.Join(", ", parameters.Select(p =>
+ {
+ // Don't generate links if the type is a generic parameter.
+ var shouldGenerateLinks = generateLinks &&
+ !(
+ typeGenericArguments.Any(a => $"{a.Namespace}.{a.Name}" == $"{p.ParameterType.Namespace}.{p.ParameterType.Name}") ||
+ genericArguments.Any(a => $"{a.Namespace}.{a.Name}" == $"{p.ParameterType.Namespace}.{p.ParameterType.Name}")
+ );
+
+ var outText = p.IsOut ? "out " : string.Empty;
+ return $"{outText}{Format(p.ParameterType, shouldGenerateLinks)}";
+ }));
+ }
+
+ return $"{name}{genericArgumentsText}({parametersText})";
+ }
+
+ public string Format(MemberInfo memberInfo, bool generateLinks = false, bool isCodeBlock = false)
+ {
+ return memberInfo.Name;
+ }
+ }
+}