From ac847209e5485c548a778840bfdfa6bd8edd9dc0 Mon Sep 17 00:00:00 2001 From: felixngd Date: Wed, 18 Sep 2024 09:50:26 +0700 Subject: [PATCH] add support: Sentence case, snake_case, Title_Case, lowercase, uppercase --- Assets/EnumExtensionsTests/MyEnum.cs | 3 + ...se.Foundation.EnumExtensions.SourceGen.dll | Bin 122880 -> 139264 bytes .../SourceGen.Common/StringExtensions.cs | 67 ++- .../EnumDeclaration+WriteCode.cs | 437 +++++++++++++++++- 4 files changed, 486 insertions(+), 21 deletions(-) diff --git a/Assets/EnumExtensionsTests/MyEnum.cs b/Assets/EnumExtensionsTests/MyEnum.cs index f4be221..f487d00 100644 --- a/Assets/EnumExtensionsTests/MyEnum.cs +++ b/Assets/EnumExtensionsTests/MyEnum.cs @@ -25,4 +25,7 @@ public enum MyFlags : byte } static partial class MyFlagsExtensions { } + + [EnumExtensions] + public enum MyEnum2 { _FirstCase, SecondCase, Third_Case, forth_case, fifthCase } } diff --git a/Packages/ZBase.Foundation.EnumExtensions/SourceGenerator/ZBase.Foundation.EnumExtensions.SourceGen.dll b/Packages/ZBase.Foundation.EnumExtensions/SourceGenerator/ZBase.Foundation.EnumExtensions.SourceGen.dll index b9440a97fa1d4cb86fc320018a563f8606bfd473..08edfbaabf39765ee4c8d0e100e25aa46225ddd8 100644 GIT binary patch literal 139264 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

y&X@IXH# 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', 'ᐳ') .Replace("[]", "Array") ; + + public static string ToTitleCase(this string value) + { + // Remove leading and trailing underscores + value = value.Trim('_'); + + // Split the string at capital letters or underscores + string[] words = Regex.Split(value, @"(? !string.IsNullOrEmpty(word)) // Remove any empty strings resulting from split + .Select(word => textInfo.ToTitleCase(word.ToLower())) // Convert each word to title case + .ToArray(); + + // Join all words with a single space and return + return string.Join(" ", words).Trim(); + } + + public static string ToSentenceCase(this string value) + { + // Remove leading and trailing underscores + value = value.Trim('_'); + + // Split the string at capital letters or underscores + string[] words = Regex.Split(value, @"(? !string.IsNullOrEmpty(word)) // Remove any empty strings resulting from split + .Select(word => { + word = word.ToLower(); + return word.Length > 0 ? char.ToUpper(word[0]) + word.Substring(1) : word; + }) // Capitalize the first letter of each word + .ToArray(); + + // Join all words with a space and return + return string.Join(" ", words).Trim(); + } + + public static string ToSnakeCase(this string input) + { + // Remove leading and trailing underscores + input = input.Trim('_'); + + // Split the string at capital letters or underscores + string[] words = Regex.Split(input, @"(? !string.IsNullOrEmpty(word)) // Remove any empty strings resulting from split + .Select(word => word.ToLower()) // Convert each word to lower case + .ToArray(); + + // Join all words with an underscore and return + return string.Join("_", words); + } } } diff --git a/Packages/ZBase.Foundation.EnumExtensions/Source~/ZBase.Foundation.EnumExtensions.SourceGen/SourceGen.EnumExtensions/EnumDeclaration+WriteCode.cs b/Packages/ZBase.Foundation.EnumExtensions/Source~/ZBase.Foundation.EnumExtensions.SourceGen/SourceGen.EnumExtensions/EnumDeclaration+WriteCode.cs index cb02446..b9eb21e 100644 --- a/Packages/ZBase.Foundation.EnumExtensions/Source~/ZBase.Foundation.EnumExtensions.SourceGen/SourceGen.EnumExtensions/EnumDeclaration+WriteCode.cs +++ b/Packages/ZBase.Foundation.EnumExtensions/Source~/ZBase.Foundation.EnumExtensions.SourceGen/SourceGen.EnumExtensions/EnumDeclaration+WriteCode.cs @@ -6,20 +6,26 @@ namespace ZBase.Foundation.EnumExtensions partial class EnumDeclaration { private const string GENERATED_CODE = "[global::System.CodeDom.Compiler.GeneratedCode(\"ZBase.Foundation.EnumExtensions.EnumExtensionsGenerator\", \"1.2.2\")]"; - private const string AGGRESSIVE_INLINING = "[global::System.Runtime.CompilerServices.MethodImpl(global::System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]"; + + private const string AGGRESSIVE_INLINING = + "[global::System.Runtime.CompilerServices.MethodImpl(global::System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]"; + private const string EXCLUDE_COVERAGE = "[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]"; private const string UNITY_COLLECTIONS_ALLOCATOR = "global::Unity.Collections.AllocatorManager.AllocatorHandle"; private const string CLASS_VALUES = "Values"; private const string CLASS_UNDERLYING_VALUES = "UnderlyingValues"; private const string CLASS_WRAPPERS = "Wrappers"; private const string CLASS_NAMES = "Names"; + private const string CLASS_LOWER_CASE = "LowerCaseNames"; + private const string CLASS_UPPER_CASE = "UpperCaseNames"; + private const string CLASS_TITLE_CASE = "TitleCaseNames"; + private const string CLASS_SENTENCE_CASE = "SentenceCaseNames"; + private const string CLASS_SNAKE_CASE = "SnakeCaseNames"; private const string CLASS_DISPLAY_NAMES = "DisplayNames"; private const string CLASS_FIXED_NAMES = "FixedNames"; private const string CLASS_FIXED_DISPLAY_NAMES = "FixedDisplayNames"; - private static readonly string[] s_primitiveTypes = new string[] { - "byte", "sbyte", "short", "ushort", "int", "uint", "long", "ulong" - }; + private static readonly string[] s_primitiveTypes = new string[] {"byte", "sbyte", "short", "ushort", "int", "uint", "long", "ulong"}; public string WriteCode() { @@ -103,7 +109,7 @@ private void WriteStruct(ref Printer p) p.PrintLine("[global::System.Runtime.InteropServices.FieldOffset(0)]"); p.PrintBeginLine("public readonly ").Print(FullyQualifiedName).PrintEndLine(" Value;"); p.PrintEndLine(); - + p.PrintLine(GENERATED_CODE); p.PrintLine("[global::System.Runtime.InteropServices.FieldOffset(0)]"); p.PrintBeginLine("public readonly ").Print(UnderlyingTypeName).PrintEndLine(" UnderlyingValue;"); @@ -175,7 +181,7 @@ private void WriteStruct(ref Printer p) p.PrintBeginLine("public bool IsDefined() => ") .Print(ExtensionsName).PrintEndLine(".IsDefined(this.Value);"); p.PrintEndLine(); - + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); p.PrintBeginLine("public bool IsDefinedIn(string name) => ") .Print(ExtensionsName).Print(".IsDefinedIn(name, default(") @@ -197,7 +203,7 @@ private void WriteStruct(ref Printer p) p.PrintBeginLine("public override string ToString() => ") .Print(ExtensionsName).PrintEndLine(".ToStringFast(this.Value);"); p.PrintEndLine(); - + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); p.PrintLine("public override int GetHashCode() => this.UnderlyingValue.GetHashCode();"); p.PrintEndLine(); @@ -211,7 +217,7 @@ private void WriteStruct(ref Printer p) p.PrintBeginLine("public bool Equals(").Print(ExtensionsWrapperName) .PrintEndLine(" other) => this.UnderlyingValue == other.UnderlyingValue;"); p.PrintEndLine(); - + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); p.PrintBeginLine("public override bool Equals(object obj) => obj is ").Print(ExtensionsWrapperName) .PrintEndLine(" other && this.UnderlyingValue == other.UnderlyingValue;"); @@ -274,6 +280,11 @@ private void WriteClass(ref Printer p) p.PrintEndLine(); WriteToString(ref p, @this); + WriteToLowercase(ref p, @this); + WriteToUppercase(ref p, @this); + WriteToTitleCase(ref p, @this); + WriteToSentenceCase(ref p, @this); + WriteToSnakeCase(ref p, @this); if (OnlyNames == false) { @@ -319,6 +330,12 @@ private void WriteClass(ref Printer p) WriteClassDisplayNames(ref p); WriteClassFixedNames(ref p); WriteClassFixedDisplayNames(ref p); + + WriteClassLowercase(ref p); + WriteClassUppercase(ref p); + WriteClassTitleCase(ref p); + WriteClassSentenceCase(ref p); + WriteClassSnakeCase(ref p); } p.CloseScope(); p.PrintEndLine(); @@ -351,10 +368,12 @@ private void WriteClassFixedDisplayNames(ref Printer p) if (OnlyNames == false) { p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); - p.PrintLine($"public static global::Unity.Collections.NativeArray<{FixedStringTypeFullyQualifiedName}>.ReadOnly AsNativeArray({UNITY_COLLECTIONS_ALLOCATOR} allocator)"); + p.PrintLine( + $"public static global::Unity.Collections.NativeArray<{FixedStringTypeFullyQualifiedName}>.ReadOnly AsNativeArray({UNITY_COLLECTIONS_ALLOCATOR} allocator)"); p.OpenScope(); { - p.PrintLine($"var names = global::Unity.Collections.CollectionHelper.CreateNativeArray<{FixedStringTypeFullyQualifiedName}>({ExtensionsName}.Length, allocator, global::Unity.Collections.NativeArrayOptions.UninitializedMemory);"); + p.PrintLine( + $"var names = global::Unity.Collections.CollectionHelper.CreateNativeArray<{FixedStringTypeFullyQualifiedName}>({ExtensionsName}.Length, allocator, global::Unity.Collections.NativeArrayOptions.UninitializedMemory);"); var index = 0; @@ -422,10 +441,12 @@ private void WriteClassFixedNames(ref Printer p) if (OnlyNames == false) { p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); - p.PrintLine($"public static global::Unity.Collections.NativeArray<{FixedStringTypeFullyQualifiedName}>.ReadOnly AsNativeArray({UNITY_COLLECTIONS_ALLOCATOR} allocator)"); + p.PrintLine( + $"public static global::Unity.Collections.NativeArray<{FixedStringTypeFullyQualifiedName}>.ReadOnly AsNativeArray({UNITY_COLLECTIONS_ALLOCATOR} allocator)"); p.OpenScope(); { - p.PrintLine($"var names = global::Unity.Collections.CollectionHelper.CreateNativeArray<{FixedStringTypeFullyQualifiedName}>({ExtensionsName}.Length, allocator, global::Unity.Collections.NativeArrayOptions.UninitializedMemory);"); + p.PrintLine( + $"var names = global::Unity.Collections.CollectionHelper.CreateNativeArray<{FixedStringTypeFullyQualifiedName}>({ExtensionsName}.Length, allocator, global::Unity.Collections.NativeArrayOptions.UninitializedMemory);"); var index = 0; @@ -584,6 +605,281 @@ private void WriteClassNames(ref Printer p) p.CloseScope(); p.PrintEndLine(); } + + private void WriteClassLowercase(ref Printer p) + { + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintBeginLine("public static partial class ").PrintEndLine(CLASS_LOWER_CASE); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine(GENERATED_CODE); + p.PrintLine($"public const string {member.name} = \"{member.name.ToLowerInvariant()}\";"); + p.PrintEndLine(); + } + + if (OnlyNames == false) + { + p.PrintLine($"private static readonly string[] s_names = new string[]"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{member.name},"); + } + } + p.CloseScope("};"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlyMemory AsMemory() => s_names;"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlySpan AsSpan() => s_names;"); + p.PrintEndLine(); + } + + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string GetLowercase({FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintLine("=> value switch"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{FullyQualifiedName}.{member.name} => {member.name},"); + } + + p.PrintLine("_ => ToUnderlyingValue(value).ToString(),"); + } + p.CloseScope("};"); + p = p.DecreasedIndent(); + } + p.CloseScope(); + p.PrintEndLine(); + } + + private void WriteClassUppercase(ref Printer p) + { + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintBeginLine("public static partial class ").PrintEndLine(CLASS_UPPER_CASE); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine(GENERATED_CODE); + p.PrintLine($"public const string {member.name} = \"{member.name.ToUpperInvariant()}\";"); + p.PrintEndLine(); + } + + if (OnlyNames == false) + { + p.PrintLine($"private static readonly string[] s_names = new string[]"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{member.name},"); + } + } + p.CloseScope("};"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlyMemory AsMemory() => s_names;"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlySpan AsSpan() => s_names;"); + p.PrintEndLine(); + } + + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string GetUppercase({FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintLine("=> value switch"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{FullyQualifiedName}.{member.name} => {member.name},"); + } + + p.PrintLine("_ => ToUnderlyingValue(value).ToString(),"); + } + p.CloseScope("};"); + p = p.DecreasedIndent(); + } + p.CloseScope(); + p.PrintEndLine(); + } + + private void WriteClassTitleCase(ref Printer p) + { + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintBeginLine("public static partial class ").PrintEndLine(CLASS_TITLE_CASE); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine(GENERATED_CODE); + p.PrintLine($"public const string {member.name} = \"{member.name.ToTitleCase()}\";"); + p.PrintEndLine(); + } + + if (OnlyNames == false) + { + p.PrintLine($"private static readonly string[] s_names = new string[]"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{member.name},"); + } + } + p.CloseScope("};"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlyMemory AsMemory() => s_names;"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlySpan AsSpan() => s_names;"); + p.PrintEndLine(); + } + + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string GetTitleCase({FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintLine("=> value switch"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{FullyQualifiedName}.{member.name} => {member.name},"); + } + + p.PrintLine("_ => ToUnderlyingValue(value).ToString(),"); + } + p.CloseScope("};"); + p = p.DecreasedIndent(); + } + p.CloseScope(); + p.PrintEndLine(); + } + + private void WriteClassSentenceCase(ref Printer p) + { + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintBeginLine("public static partial class ").PrintEndLine(CLASS_SENTENCE_CASE); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine(GENERATED_CODE); + p.PrintLine($"public const string {member.name} = \"{member.name.ToSentenceCase()}\";"); + p.PrintEndLine(); + } + + if (OnlyNames == false) + { + p.PrintLine($"private static readonly string[] s_names = new string[]"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{member.name},"); + } + } + p.CloseScope("};"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlyMemory AsMemory() => s_names;"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlySpan AsSpan() => s_names;"); + p.PrintEndLine(); + } + + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string GetSentenceCase({FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintLine("=> value switch"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{FullyQualifiedName}.{member.name} => {member.name},"); + } + + p.PrintLine("_ => ToUnderlyingValue(value).ToString(),"); + } + p.CloseScope("};"); + p = p.DecreasedIndent(); + } + p.CloseScope(); + p.PrintEndLine(); + } + + private void WriteClassSnakeCase(ref Printer p) + { + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintBeginLine("public static partial class ").PrintEndLine(CLASS_SNAKE_CASE); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine(GENERATED_CODE); + p.PrintLine($"public const string {member.name} = \"{member.name.ToSnakeCase()}\";"); + p.PrintEndLine(); + } + + if (OnlyNames == false) + { + p.PrintLine($"private static readonly string[] s_names = new string[]"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{member.name},"); + } + } + p.CloseScope("};"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlyMemory AsMemory() => s_names;"); + p.PrintEndLine(); + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine("public static global::System.ReadOnlySpan AsSpan() => s_names;"); + p.PrintEndLine(); + } + + p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string GetSnakeCase({FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintLine("=> value switch"); + p.OpenScope(); + { + foreach (var member in Members) + { + p.PrintLine($"{FullyQualifiedName}.{member.name} => {member.name},"); + } + + p.PrintLine("_ => ToUnderlyingValue(value).ToString(),"); + } + p.CloseScope("};"); + p = p.DecreasedIndent(); + } + p.CloseScope(); + p.PrintEndLine(); + } private void WriteClassUnderlyingValues(ref Printer p) { @@ -623,7 +919,7 @@ private void WriteClassUnderlyingValues(ref Printer p) p.CloseScope(); p.PrintEndLine(); } - + private void WriteClassValues(ref Printer p) { p.PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); @@ -978,7 +1274,8 @@ private void WriteTryParseSpan(ref Printer p, string @this) { if (member.displayName is not null) { - p.PrintLine($"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_DISPLAY_NAMES}.{member.name}), global::System.StringComparison.OrdinalIgnoreCase):"); + p.PrintLine( + $"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_DISPLAY_NAMES}.{member.name}), global::System.StringComparison.OrdinalIgnoreCase):"); p.OpenScope(); { p.PrintLine($"value = {FullyQualifiedName}.{member.name};"); @@ -1003,7 +1300,8 @@ private void WriteTryParseSpan(ref Printer p, string @this) { if (member.displayName is not null) { - p.PrintLine($"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_DISPLAY_NAMES}.{member.name}), global::System.StringComparison.Ordinal):"); + p.PrintLine( + $"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_DISPLAY_NAMES}.{member.name}), global::System.StringComparison.Ordinal):"); p.OpenScope(); { p.PrintLine($"value = {FullyQualifiedName}.{member.name};"); @@ -1030,7 +1328,8 @@ private void WriteTryParseSpan(ref Printer p, string @this) { foreach (var member in Members) { - p.PrintLine($"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_NAMES}.{member.name}), global::System.StringComparison.OrdinalIgnoreCase):"); + p.PrintLine( + $"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_NAMES}.{member.name}), global::System.StringComparison.OrdinalIgnoreCase):"); p.OpenScope(); { p.PrintLine($"value = {FullyQualifiedName}.{member.name};"); @@ -1066,7 +1365,8 @@ private void WriteTryParseSpan(ref Printer p, string @this) { foreach (var member in Members) { - p.PrintLine($"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_NAMES}.{member.name}), global::System.StringComparison.Ordinal):"); + p.PrintLine( + $"case {SPAN} s when global::System.MemoryExtensions.Equals(s, global::System.MemoryExtensions.AsSpan({CLASS_NAMES}.{member.name}), global::System.StringComparison.Ordinal):"); p.OpenScope(); { p.PrintLine($"value = {FullyQualifiedName}.{member.name};"); @@ -1111,7 +1411,8 @@ private void WriteFlags(ref Printer p, string @this) p.PrintLine("///

"); p.PrintLine("/// Determines whether some of the bit fields are set in the current instance."); p.PrintLine("/// "); - p.PrintLine("/// true if all of the bit fields that are set in flag are also set in the current instance; otherwise, false."); + p.PrintLine( + "/// true if all of the bit fields that are set in flag are also set in the current instance; otherwise, false."); } p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); @@ -1126,7 +1427,8 @@ private void WriteFlags(ref Printer p, string @this) p.PrintLine("/// "); p.PrintLine("/// Determines whether any of the bit fields are set in the current instance."); p.PrintLine("/// "); - p.PrintLine("/// true if any of the bit fields that are set in flag is also set in the current instance; otherwise, false."); + p.PrintLine( + "/// true if any of the bit fields that are set in flag is also set in the current instance; otherwise, false."); } p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); @@ -1434,6 +1736,101 @@ private void WriteToString(ref Printer p, string @this) p.CloseScope(); p.PrintEndLine(); } + + private void WriteToLowercase(ref Printer p, string @this) + { + if (NoDocumentation == false) + { + p.PrintLine("/// "); + p.PrintLine($"/// Returns the lowercase string representation of the value."); + p.PrintLine("/// "); + p.PrintLine("/// The value to retrieve the string value for"); + p.PrintLine("/// The lowercase string representation of the value"); + } + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string ToLowercaseFast({@this}{FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintBeginLine("=> ").Print(CLASS_LOWER_CASE).PrintEndLine(".GetLowercase(value);"); + p = p.DecreasedIndent(); + p.PrintEndLine(); + } + + private void WriteToUppercase(ref Printer p, string @this) + { + if (NoDocumentation == false) + { + p.PrintLine("/// "); + p.PrintLine($"/// Returns the uppercase string representation of the value."); + p.PrintLine("/// "); + p.PrintLine("/// The value to retrieve the string value for"); + p.PrintLine("/// The uppercase string representation of the value"); + } + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string ToUppercaseFast({@this}{FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintBeginLine("=> ").Print(CLASS_UPPER_CASE).PrintEndLine(".GetUppercase(value);"); + p = p.DecreasedIndent(); + p.PrintEndLine(); + } + + private void WriteToTitleCase(ref Printer p, string @this) + { + if (NoDocumentation == false) + { + p.PrintLine("/// "); + p.PrintLine($"/// Returns the title case string representation of the value."); + p.PrintLine("/// "); + p.PrintLine("/// The value to retrieve the string value for"); + p.PrintLine("/// The title case string representation of the value"); + } + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string ToTitleCaseFast({@this}{FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintBeginLine("=> ").Print(CLASS_TITLE_CASE).PrintEndLine(".GetTitleCase(value);"); + p = p.DecreasedIndent(); + p.PrintEndLine(); + } + + private void WriteToSentenceCase(ref Printer p, string @this) + { + if (NoDocumentation == false) + { + p.PrintLine("/// "); + p.PrintLine($"/// Returns the sentence case string representation of the value."); + p.PrintLine("/// "); + p.PrintLine("/// The value to retrieve the string value for"); + p.PrintLine("/// The sentence case string representation of the value"); + } + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string ToSentenceCaseFast({@this}{FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintBeginLine("=> ").Print(CLASS_SENTENCE_CASE).PrintEndLine(".GetSentenceCase(value);"); + p = p.DecreasedIndent(); + p.PrintEndLine(); + } + + private void WriteToSnakeCase(ref Printer p, string @this) + { + if (NoDocumentation == false) + { + p.PrintLine("/// "); + p.PrintLine($"/// Returns the snake case string representation of the value."); + p.PrintLine("/// "); + p.PrintLine("/// The value to retrieve the string value for"); + p.PrintLine("/// The snake case string representation of the value"); + } + + p.PrintLine(AGGRESSIVE_INLINING).PrintLine(GENERATED_CODE).PrintLine(EXCLUDE_COVERAGE); + p.PrintLine($"public static string ToSnakeCaseFast({@this}{FullyQualifiedName} value)"); + p = p.IncreasedIndent(); + p.PrintBeginLine("=> ").Print(CLASS_SNAKE_CASE).PrintEndLine(".GetSnakeCase(value);"); + p = p.DecreasedIndent(); + p.PrintEndLine(); + } private static string GetKeyword(Accessibility accessibility) => accessibility switch { @@ -1444,4 +1841,4 @@ private static string GetKeyword(Accessibility accessibility) _ => "public", }; } -} +} \ No newline at end of file