Skip to content

Commit 181f7e8

Browse files
committed
Add support for EnumFormat in GetString() to return values other than the name of the enum
Closes #4
1 parent 31ee8da commit 181f7e8

28 files changed

+711
-1
lines changed

Src/FastEnum.Tests.CodeGen/Issues/TestIssue3.verified.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,22 @@ internal static partial class TestEnumExtensions
155155
_ => value.ToString()
156156
};
157157

158+
public static string GetString(this global::TestEnum value, TestEnumFormat format = TestEnumFormat.Default)
159+
{
160+
if ((format & TestEnumFormat.Name) == TestEnumFormat.Name)
161+
{
162+
if (value == global::TestEnum.None) return "None";
163+
if (value == global::TestEnum.Value) return "Value";
164+
}
165+
166+
if ((format & TestEnumFormat.Value) == TestEnumFormat.Value)
167+
{
168+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
169+
}
170+
171+
return value.ToString();
172+
}
173+
158174
public static bool TryGetUnderlyingValue(this global::TestEnum value, out Int32 underlyingValue)
159175
{
160176
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Attributes/DisplayAttribute.input.verified.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,41 @@ public static partial class MyEnumExtensions
371371
_ => value.ToString()
372372
};
373373

374+
public static string GetString(this Some.Namespace.Here.MyEnum value, Some.Namespace.Here.MyEnumFormat format = Some.Namespace.Here.MyEnumFormat.Default)
375+
{
376+
if ((format & Some.Namespace.Here.MyEnumFormat.DisplayName) == Some.Namespace.Here.MyEnumFormat.DisplayName)
377+
{
378+
if (value == Some.Namespace.Here.MyEnum.Value1) return "myname1";
379+
if (value == Some.Namespace.Here.MyEnum.Value2) return "myname2\0<-nullbyte";
380+
if (value == Some.Namespace.Here.MyEnum.Value3) return "myname3\t<-tab";
381+
if (value == Some.Namespace.Here.MyEnum.Value4) return "myname4\"<-qoute";
382+
}
383+
384+
if ((format & Some.Namespace.Here.MyEnumFormat.Description) == Some.Namespace.Here.MyEnumFormat.Description)
385+
{
386+
if (value == Some.Namespace.Here.MyEnum.Value2) return "mydescription2\0<-nullbyte";
387+
if (value == Some.Namespace.Here.MyEnum.Value3) return "mydescription3\t<-tab";
388+
if (value == Some.Namespace.Here.MyEnum.Value4) return "mydescription4\"<-qoute";
389+
if (value == Some.Namespace.Here.MyEnum.Value5) return "mydescription5";
390+
}
391+
392+
if ((format & Some.Namespace.Here.MyEnumFormat.Name) == Some.Namespace.Here.MyEnumFormat.Name)
393+
{
394+
if (value == Some.Namespace.Here.MyEnum.Value1) return "Value1";
395+
if (value == Some.Namespace.Here.MyEnum.Value2) return "Value2";
396+
if (value == Some.Namespace.Here.MyEnum.Value3) return "Value3";
397+
if (value == Some.Namespace.Here.MyEnum.Value4) return "Value4";
398+
if (value == Some.Namespace.Here.MyEnum.Value5) return "Value5";
399+
}
400+
401+
if ((format & Some.Namespace.Here.MyEnumFormat.Value) == Some.Namespace.Here.MyEnumFormat.Value)
402+
{
403+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
404+
}
405+
406+
return value.ToString();
407+
}
408+
374409
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum value, out Int32 underlyingValue)
375410
{
376411
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Basics/DifferentUnderlyingType.input.verified.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,21 @@ public static partial class MyEnumExtensions
133133
_ => value.ToString()
134134
};
135135

136+
public static string GetString(this Some.Namespace.Here.MyEnum value, Some.Namespace.Here.MyEnumFormat format = Some.Namespace.Here.MyEnumFormat.Default)
137+
{
138+
if ((format & Some.Namespace.Here.MyEnumFormat.Name) == Some.Namespace.Here.MyEnumFormat.Name)
139+
{
140+
if (value == Some.Namespace.Here.MyEnum.Value) return "Value";
141+
}
142+
143+
if ((format & Some.Namespace.Here.MyEnumFormat.Value) == Some.Namespace.Here.MyEnumFormat.Value)
144+
{
145+
return ((Byte)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
146+
}
147+
148+
return value.ToString();
149+
}
150+
136151
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum value, out Byte underlyingValue)
137152
{
138153
switch (value)
@@ -288,6 +303,21 @@ public static partial class MyEnum2Extensions
288303
_ => value.ToString()
289304
};
290305

306+
public static string GetString(this Some.Namespace.Here.MyEnum2 value, Some.Namespace.Here.MyEnum2Format format = Some.Namespace.Here.MyEnum2Format.Default)
307+
{
308+
if ((format & Some.Namespace.Here.MyEnum2Format.Name) == Some.Namespace.Here.MyEnum2Format.Name)
309+
{
310+
if (value == Some.Namespace.Here.MyEnum2.Value) return "Value";
311+
}
312+
313+
if ((format & Some.Namespace.Here.MyEnum2Format.Value) == Some.Namespace.Here.MyEnum2Format.Value)
314+
{
315+
return ((UInt64)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
316+
}
317+
318+
return value.ToString();
319+
}
320+
291321
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum2 value, out UInt64 underlyingValue)
292322
{
293323
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Basics/ValueExplicit.input.verified.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,23 @@ public static partial class MyEnumExtensions
189189
_ => value.ToString()
190190
};
191191

192+
public static string GetString(this Some.Namespace.Here.MyEnum value, Some.Namespace.Here.MyEnumFormat format = Some.Namespace.Here.MyEnumFormat.Default)
193+
{
194+
if ((format & Some.Namespace.Here.MyEnumFormat.Name) == Some.Namespace.Here.MyEnumFormat.Name)
195+
{
196+
if (value == Some.Namespace.Here.MyEnum.First) return "First";
197+
if (value == Some.Namespace.Here.MyEnum.Second) return "Second";
198+
if (value == Some.Namespace.Here.MyEnum.Third) return "Third";
199+
}
200+
201+
if ((format & Some.Namespace.Here.MyEnumFormat.Value) == Some.Namespace.Here.MyEnumFormat.Value)
202+
{
203+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
204+
}
205+
206+
return value.ToString();
207+
}
208+
192209
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum value, out Int32 underlyingValue)
193210
{
194211
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Basics/ValueMultiple.input.verified.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,22 @@ public static partial class MyEnumExtensions
161161
_ => value.ToString()
162162
};
163163

164+
public static string GetString(this Some.Namespace.Here.MyEnum value, Some.Namespace.Here.MyEnumFormat format = Some.Namespace.Here.MyEnumFormat.Default)
165+
{
166+
if ((format & Some.Namespace.Here.MyEnumFormat.Name) == Some.Namespace.Here.MyEnumFormat.Name)
167+
{
168+
if (value == Some.Namespace.Here.MyEnum.First) return "First";
169+
if (value == Some.Namespace.Here.MyEnum.Second) return "Second";
170+
}
171+
172+
if ((format & Some.Namespace.Here.MyEnumFormat.Value) == Some.Namespace.Here.MyEnumFormat.Value)
173+
{
174+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
175+
}
176+
177+
return value.ToString();
178+
}
179+
164180
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum value, out Int32 underlyingValue)
165181
{
166182
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Basics/ValueSingle.input.verified.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,21 @@ public static partial class MyEnumExtensions
133133
_ => value.ToString()
134134
};
135135

136+
public static string GetString(this Some.Namespace.Here.MyEnum value, Some.Namespace.Here.MyEnumFormat format = Some.Namespace.Here.MyEnumFormat.Default)
137+
{
138+
if ((format & Some.Namespace.Here.MyEnumFormat.Name) == Some.Namespace.Here.MyEnumFormat.Name)
139+
{
140+
if (value == Some.Namespace.Here.MyEnum.First) return "First";
141+
}
142+
143+
if ((format & Some.Namespace.Here.MyEnumFormat.Value) == Some.Namespace.Here.MyEnumFormat.Value)
144+
{
145+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
146+
}
147+
148+
return value.ToString();
149+
}
150+
136151
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum value, out Int32 underlyingValue)
137152
{
138153
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Flags/DuplicateValues.input.verified.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,24 @@ public static partial class ProfileExtensions
202202
{
203203
public static string GetString(this Some.Namespace.Here.Profile value) => value.ToString();
204204

205+
public static string GetString(this Some.Namespace.Here.Profile value, Some.Namespace.Here.ProfileFormat format = Some.Namespace.Here.ProfileFormat.Default)
206+
{
207+
if ((format & Some.Namespace.Here.ProfileFormat.Name) == Some.Namespace.Here.ProfileFormat.Name)
208+
{
209+
if (value == Some.Namespace.Here.Profile.Unknown) return "Unknown";
210+
if (value == Some.Namespace.Here.Profile.WindowsLegacy) return "WindowsLegacy";
211+
if (value == Some.Namespace.Here.Profile.WindowsServer2022) return "WindowsServer2022";
212+
if (value == Some.Namespace.Here.Profile.NewestServer) return "NewestServer";
213+
}
214+
215+
if ((format & Some.Namespace.Here.ProfileFormat.Value) == Some.Namespace.Here.ProfileFormat.Value)
216+
{
217+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
218+
}
219+
220+
return value.ToString();
221+
}
222+
205223
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.Profile value, out Int32 underlyingValue)
206224
{
207225
switch (value.ToString())

Src/FastEnum.Tests.CodeGen/Resources/Flags/Flags.input.verified.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,24 @@ public static partial class MyEnumExtensions
209209
_ => value.ToString()
210210
};
211211

212+
public static string GetString(this Some.Namespace.Here.MyEnum value, Some.Namespace.Here.MyEnumFormat format = Some.Namespace.Here.MyEnumFormat.Default)
213+
{
214+
if ((format & Some.Namespace.Here.MyEnumFormat.Name) == Some.Namespace.Here.MyEnumFormat.Name)
215+
{
216+
if (value == Some.Namespace.Here.MyEnum.First) return "First";
217+
if (value == Some.Namespace.Here.MyEnum.Second) return "Second";
218+
if (value == Some.Namespace.Here.MyEnum.Third) return "Third";
219+
if (value == Some.Namespace.Here.MyEnum.Other) return "Other";
220+
}
221+
222+
if ((format & Some.Namespace.Here.MyEnumFormat.Value) == Some.Namespace.Here.MyEnumFormat.Value)
223+
{
224+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
225+
}
226+
227+
return value.ToString();
228+
}
229+
212230
public static bool TryGetUnderlyingValue(this Some.Namespace.Here.MyEnum value, out Int32 underlyingValue)
213231
{
214232
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Flags/NegativeFlags.input.verified.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,24 @@ internal static partial class SignedFlagsExtensions
203203
_ => value.ToString()
204204
};
205205

206+
public static string GetString(this global::SignedFlags value, SignedFlagsFormat format = SignedFlagsFormat.Default)
207+
{
208+
if ((format & SignedFlagsFormat.Name) == SignedFlagsFormat.Name)
209+
{
210+
if (value == global::SignedFlags.None) return "None";
211+
if (value == global::SignedFlags.One) return "One";
212+
if (value == global::SignedFlags.Negative) return "Negative";
213+
if (value == global::SignedFlags.Combo) return "Combo";
214+
}
215+
216+
if ((format & SignedFlagsFormat.Value) == SignedFlagsFormat.Value)
217+
{
218+
return ((Int64)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
219+
}
220+
221+
return value.ToString();
222+
}
223+
206224
public static bool TryGetUnderlyingValue(this global::SignedFlags value, out Int64 underlyingValue)
207225
{
208226
switch (value)

Src/FastEnum.Tests.CodeGen/Resources/Naming/DifferentNamespace.input.verified.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,21 @@ public static partial class MyEnumExtensions
133133
_ => value.ToString()
134134
};
135135

136+
public static string GetString(this Some.Namespace.Here1.MyEnum value, Some.Namespace.Here1.MyEnumFormat format = Some.Namespace.Here1.MyEnumFormat.Default)
137+
{
138+
if ((format & Some.Namespace.Here1.MyEnumFormat.Name) == Some.Namespace.Here1.MyEnumFormat.Name)
139+
{
140+
if (value == Some.Namespace.Here1.MyEnum.Value) return "Value";
141+
}
142+
143+
if ((format & Some.Namespace.Here1.MyEnumFormat.Value) == Some.Namespace.Here1.MyEnumFormat.Value)
144+
{
145+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
146+
}
147+
148+
return value.ToString();
149+
}
150+
136151
public static bool TryGetUnderlyingValue(this Some.Namespace.Here1.MyEnum value, out Int32 underlyingValue)
137152
{
138153
switch (value)
@@ -288,6 +303,21 @@ public static partial class MyEnumExtensions
288303
_ => value.ToString()
289304
};
290305

306+
public static string GetString(this Some.Namespace.Here2.MyEnum value, Some.Namespace.Here2.MyEnumFormat format = Some.Namespace.Here2.MyEnumFormat.Default)
307+
{
308+
if ((format & Some.Namespace.Here2.MyEnumFormat.Name) == Some.Namespace.Here2.MyEnumFormat.Name)
309+
{
310+
if (value == Some.Namespace.Here2.MyEnum.Value) return "Value";
311+
}
312+
313+
if ((format & Some.Namespace.Here2.MyEnumFormat.Value) == Some.Namespace.Here2.MyEnumFormat.Value)
314+
{
315+
return ((Int32)value).ToString(System.Globalization.NumberFormatInfo.InvariantInfo);
316+
}
317+
318+
return value.ToString();
319+
}
320+
291321
public static bool TryGetUnderlyingValue(this Some.Namespace.Here2.MyEnum value, out Int32 underlyingValue)
292322
{
293323
switch (value)

0 commit comments

Comments
 (0)