summaryrefslogtreecommitdiff
path: root/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Startup.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/Startup.cs
parentb8a694746562b37dc8dc5b8b5aec8612bb0964fc (diff)
*misc
Diffstat (limited to 'ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Startup.cs')
-rw-r--r--ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Startup.cs110
1 files changed, 110 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Startup.cs b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Startup.cs
new file mode 100644
index 0000000..698a60d
--- /dev/null
+++ b/ThirdParty/CsvHelper-master/docs-src/CsvHelper.DocsGenerator/Startup.cs
@@ -0,0 +1,110 @@
+using CsvHelper.DocsGenerator.Generators;
+using CsvHelper.DocsGenerator.Infos;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System.IO;
+using System.Linq;
+using System.Xml.Linq;
+
+namespace CsvHelper.DocsGenerator
+{
+ public class Startup
+ {
+ public Startup Configure()
+ {
+ return this;
+ }
+
+ public Startup Run()
+ {
+ var outputDirectoryPath = Path.Combine(Directory.GetCurrentDirectory(), "Output");
+ if (Directory.Exists(outputDirectoryPath))
+ {
+ Directory.Delete(outputDirectoryPath, true);
+ }
+
+ Directory.CreateDirectory(outputDirectoryPath);
+
+ var xmlDocs = XElement.Load("CsvHelper.xml");
+
+ var assemblyInfo = new AssemblyInfo(typeof(CsvHelperException).Assembly, xmlDocs);
+
+ GenerateMarkdownFiles(outputDirectoryPath, assemblyInfo);
+ GenerateToc(outputDirectoryPath, assemblyInfo);
+
+ return this;
+ }
+
+ private void GenerateMarkdownFiles(string outputDirectoryPath, AssemblyInfo assemblyInfo)
+ {
+ var documentGeneratorFactory = new DocumentGeneratorFactory();
+
+ // Write assembly file.
+ var documentGenerator = documentGeneratorFactory.Create(assemblyInfo);
+ var content = documentGenerator.Generate();
+ var filePath = Path.Combine(outputDirectoryPath, "api.md");
+ File.WriteAllText(filePath, content);
+
+ outputDirectoryPath = Path.Combine(outputDirectoryPath, "api");
+ Directory.CreateDirectory(outputDirectoryPath);
+
+ // Write namespace files and directories.
+ foreach (var @namespace in assemblyInfo.Namespaces)
+ {
+ var directoryPath = Path.Combine(outputDirectoryPath, @namespace.Namespace);
+ if (!Directory.Exists(directoryPath))
+ {
+ Directory.CreateDirectory(directoryPath);
+ }
+
+ documentGenerator = documentGeneratorFactory.Create(@namespace);
+ content = documentGenerator.Generate();
+ filePath = Path.Join(outputDirectoryPath, $"{@namespace.Namespace}.md");
+ File.WriteAllText(filePath, content);
+ }
+
+ // Write type files.
+ foreach (var @namespace in assemblyInfo.Namespaces)
+ {
+ var directoryPath = Path.Combine(outputDirectoryPath, @namespace.Namespace);
+ foreach (var typeInfo in @namespace.Types)
+ {
+ documentGenerator = documentGeneratorFactory.Create(typeInfo);
+ content = documentGenerator.Generate();
+ filePath = Path.Combine(directoryPath, $"{typeInfo.Type.Name}.md");
+ File.WriteAllText(filePath, content);
+ }
+ }
+ }
+
+ private void GenerateToc(string outputDirectoryPath, AssemblyInfo assemblyInfo)
+ {
+ var toc = new JObject
+ (
+ new JProperty("api", new JObject
+ (
+ new JProperty("title", "CsvHelper Namespaces"),
+ new JProperty("path", "api"),
+ new JProperty("children", new JArray
+ (
+ assemblyInfo.Namespaces.Select(namespaceInfo => new JObject(
+ new JProperty("title", namespaceInfo.Namespace),
+ new JProperty("path", $"api/{namespaceInfo.Namespace}"),
+ new JProperty("children", new JArray
+ (
+ namespaceInfo.Types.Select(typeInfo => new JObject
+ (
+ new JProperty("title", typeInfo.Type.Name),
+ new JProperty("path", $"api/{namespaceInfo.Namespace}/{typeInfo.Type.Name}")
+ ))
+ ))
+ ))
+ ))
+ ))
+ );
+
+ var filePath = Path.Combine(outputDirectoryPath, "api.json");
+ File.WriteAllText(filePath, JsonConvert.SerializeObject(toc, Formatting.Indented));
+ }
+ }
+}