Initial commit

This commit is contained in:
2020-04-13 15:16:46 +01:00
commit 17a40cb95f
81 changed files with 10120 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
using AutoBet.ApiGenerator.Extensions;
using System;
using System.IO;
using System.Text;
using System.Xml.Linq;
namespace AutoBet.ApiGenerator
{
internal class ApiEnumsGenerator
{
public string _inputXmlFile { get; }
public string _outputFilesDirectory { get; }
public ApiEnumsGenerator(string inputXmlFile, string outputFilesDirectory)
{
_inputXmlFile = inputXmlFile;
_outputFilesDirectory = outputFilesDirectory;
}
internal void Process(string namespaceValue, string modelFolder, string enumFolder)
{
var doc = XDocument.Load(_inputXmlFile);
var nodes = doc.Root.Elements("simpleType");
namespaceValue += $".{modelFolder}.{enumFolder}";
var enumsDirectory = Path.Combine(_outputFilesDirectory, modelFolder, enumFolder);
Directory.CreateDirectory(enumsDirectory);
foreach (var node in nodes)
{
var sb = new StringBuilder();
CSharpClassBuilder.UsingHeader(sb, namespaceValue, "System.Runtime.Serialization");
var descriptionNode = node.Element("description");
if (descriptionNode != null && !String.IsNullOrWhiteSpace(descriptionNode.Value))
{
CSharpClassBuilder.Summary(sb, descriptionNode.Value, isClassSummary: true);
}
var name = node.Attribute("name").Value;
CSharpClassBuilder.EnumHeader(sb, name);
var validValues = node.Element("validValues");
if (validValues == null)
{
continue;
}
var enumValues = validValues.Elements("value");
foreach(var enumValue in enumValues)
{
var parameterName = enumValue.Attribute("name").Value;
sb.AppendWithIndent(8, "");
sb.AppendFormat("[EnumMember(Value = \"{0}\")]", parameterName);
sb.AppendLine();
sb.AppendWithIndent(8, "");
var upperCaseNextLetter = true;
for (var i = 0; i < parameterName.Length; i++)
{
if (upperCaseNextLetter)
{
upperCaseNextLetter = false;
sb.Append(Char.ToUpper(parameterName[i]));
continue;
}
if(parameterName[i] == '_')
{
upperCaseNextLetter = true;
continue;
}
sb.Append(Char.ToLower(parameterName[i]));
}
sb.Append(',');
sb.AppendLine();
}
sb.Remove(sb.Length - 3, 3);
sb.AppendLine();
CSharpClassBuilder.ClassFooter(sb);
CSharpClassBuilder.UsingFooter(sb);
File.WriteAllText(Path.Combine(enumsDirectory, $"{name}.cs"), sb.ToString());
}
}
}
}