Skip to content

Commit

Permalink
[v2] Fix source generator to properly split enum member names
Browse files Browse the repository at this point in the history
  • Loading branch information
henrikfroehling committed Mar 18, 2024
1 parent 2af8612 commit 6c57928
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/libs/Trakt.NET/Enums/TraktAccessTokenType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
namespace TraktNET
{
[TraktEnum]
[JsonConverter(typeof(TraktAccessScopeJsonConverter))]
[JsonConverter(typeof(TraktAccessTokenTypeJsonConverter))]
public enum TraktAccessTokenType
{
Unspecified,
Expand Down
19 changes: 19 additions & 0 deletions src/libs/Trakt.NET/Enums/TraktEpisodeType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System.Text.Json.Serialization;
using TraktNET.SourceGenerators;

namespace TraktNET
{
[TraktEnum]
[JsonConverter(typeof(TraktEpisodeTypeJsonConverter))]
public enum TraktEpisodeType
{
Unspecified,
Standard,
SeriesPremiere,
SeasonPremiere,
MidSeasonFinale,
MidSeasonPremiere,
SeasonFinale,
SeriesFinale
}
}
22 changes: 13 additions & 9 deletions src/tools/Trakt.NET.SourceGenerators/SourceGenerationHelper.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Globalization;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;

namespace TraktNET.SourceGenerators
{
Expand Down Expand Up @@ -45,7 +46,7 @@ public static partial class ").Append(enumToGenerate.EnumExtensionClassName);
{
stringBuilder.Append(@"
").Append(enumToGenerate.Name).Append('.').Append(member)
.Append(" => ").Append('"').Append(member.ToLower(CultureInfo.InvariantCulture)).Append(@""",");
.Append(" => ").Append('"').Append(member.ToLowercaseNamingConvention()).Append(@""",");
}
}

Expand All @@ -68,13 +69,10 @@ public static partial class ").Append(enumToGenerate.EnumExtensionClassName);
foreach (string member in enumToGenerate.Values)
{
stringBuilder.Append(@"
").Append($"\"{member.ToLower(CultureInfo.InvariantCulture)}\" => {enumToGenerate.Name}.{member},");
").Append($"\"{member.ToLowercaseNamingConvention()}\" => {enumToGenerate.Name}.{member},");

stringBuilder.Append(@"
").Append($"\"{member.ToUpper(CultureInfo.InvariantCulture)}\" => {enumToGenerate.Name}.{member},");

stringBuilder.Append(@"
").Append($"\"{member}\" => {enumToGenerate.Name}.{member},");
").Append($"\"{member.ToLowercaseNamingConvention().ToUpperInvariant()}\" => {enumToGenerate.Name}.{member},");
}

stringBuilder.Append(@"
Expand All @@ -96,7 +94,7 @@ public static partial class ").Append(enumToGenerate.EnumExtensionClassName);
foreach (string member in enumToGenerate.Values)
{
stringBuilder.Append(@"
").Append(enumToGenerate.Name).Append('.').Append(member).Append(" => ").Append('"').Append(member).Append(@""",");
").Append(enumToGenerate.Name).Append('.').Append(member).Append(" => ").Append('"').Append(member.ToDisplayName()).Append(@""",");
}

stringBuilder.Append(@"
Expand All @@ -107,7 +105,6 @@ public static partial class ").Append(enumToGenerate.EnumExtensionClassName);

stringBuilder.Append(@"
}
");

stringBuilder.Append(@"
Expand Down Expand Up @@ -140,5 +137,12 @@ public override void Write(Utf8JsonWriter writer, ").Append(enumToGenerate.Name)

return stringBuilder.ToString();
}

internal static string ToLowercaseNamingConvention(this string value) => CapitalLetter.Replace(value, "_").ToLowerInvariant();

internal static string ToDisplayName(this string value) => CapitalLetter.Replace(value, " ");

private static readonly Regex CapitalLetter = new(@"(?<=[A-Z])(?=[A-Z][a-z]) | (?<=[^A-Z])(?=[A-Z]) | (?<=[A-Za-z])(?=[^A-Za-z])",
RegexOptions.IgnorePatternWhitespace);
}
}

0 comments on commit 6c57928

Please sign in to comment.