diff --git a/Bonsai.Sgen/CSharpCodeDomGeneratorSettings.cs b/Bonsai.Sgen/CSharpCodeDomGeneratorSettings.cs index dbb35d9..19bfaee 100644 --- a/Bonsai.Sgen/CSharpCodeDomGeneratorSettings.cs +++ b/Bonsai.Sgen/CSharpCodeDomGeneratorSettings.cs @@ -8,6 +8,9 @@ public CSharpCodeDomGeneratorSettings() { GenerateDataAnnotations = false; GenerateJsonMethods = true; + TypeNameGenerator = new CSharpTypeNameGenerator(); + EnumNameGenerator = new CSharpEnumNameGenerator(); + PropertyNameGenerator = new CSharpPropertyNameGenerator(); JsonLibrary = CSharpJsonLibrary.NewtonsoftJson; ArrayInstanceType = "System.Collections.Generic.List"; ArrayBaseType = "System.Collections.Generic.List"; diff --git a/Bonsai.Sgen/CSharpEnumNameGenerator.cs b/Bonsai.Sgen/CSharpEnumNameGenerator.cs new file mode 100644 index 0000000..f2f6de9 --- /dev/null +++ b/Bonsai.Sgen/CSharpEnumNameGenerator.cs @@ -0,0 +1,17 @@ +using NJsonSchema; +using NJsonSchema.CodeGeneration; +using YamlDotNet.Serialization.NamingConventions; + +namespace Bonsai.Sgen +{ + internal class CSharpEnumNameGenerator : IEnumNameGenerator + { + readonly DefaultEnumNameGenerator defaultGenerator = new(); + + public string Generate(int index, string name, object value, JsonSchema schema) + { + var defaultName = defaultGenerator.Generate(index, name, value, schema); + return PascalCaseNamingConvention.Instance.Apply(defaultName); + } + } +} diff --git a/Bonsai.Sgen/CSharpPropertyNameGenerator.cs b/Bonsai.Sgen/CSharpPropertyNameGenerator.cs new file mode 100644 index 0000000..5a81c60 --- /dev/null +++ b/Bonsai.Sgen/CSharpPropertyNameGenerator.cs @@ -0,0 +1,14 @@ +using NJsonSchema; +using YamlDotNet.Serialization.NamingConventions; + +namespace Bonsai.Sgen +{ + internal class CSharpPropertyNameGenerator : NJsonSchema.CodeGeneration.CSharp.CSharpPropertyNameGenerator + { + public override string Generate(JsonSchemaProperty property) + { + var defaultName = base.Generate(property); + return PascalCaseNamingConvention.Instance.Apply(defaultName); + } + } +} diff --git a/Bonsai.Sgen/CSharpTypeNameGenerator.cs b/Bonsai.Sgen/CSharpTypeNameGenerator.cs new file mode 100644 index 0000000..5941705 --- /dev/null +++ b/Bonsai.Sgen/CSharpTypeNameGenerator.cs @@ -0,0 +1,14 @@ +using NJsonSchema; +using YamlDotNet.Serialization.NamingConventions; + +namespace Bonsai.Sgen +{ + internal class CSharpTypeNameGenerator : DefaultTypeNameGenerator + { + protected override string Generate(JsonSchema schema, string typeNameHint) + { + var defaultName = base.Generate(schema, typeNameHint); + return PascalCaseNamingConvention.Instance.Apply(defaultName); + } + } +}