Skip to content

Commit f4ef543

Browse files
committed
fix: EnsureValidRelayCommandName
1 parent efe3c82 commit f4ef543

File tree

6 files changed

+2275
-1904
lines changed

6 files changed

+2275
-1904
lines changed

src/Atc.Wpf.SourceGenerators/Extensions/CodeAnalysis/AttributeDataExtensions.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,7 @@ public static string ExtractRelayCommandName(
5353

5454
relayCommandName ??= defaultName;
5555

56-
if (relayCommandName.EndsWith(NameConstants.Handler, StringComparison.Ordinal))
57-
{
58-
relayCommandName = relayCommandName.Substring(0, relayCommandName.Length - NameConstants.Handler.Length);
59-
}
60-
61-
return relayCommandName.EnsureFirstCharacterToUpper() + NameConstants.Command;
56+
return relayCommandName.EnsureValidRelayCommandName();
6257
}
6358

6459
public static string? ExtractRelayCommandCanExecuteName(

src/Atc.Wpf.SourceGenerators/Extensions/StringExtensions.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,29 @@ public static string StripPrefixFromField(
169169
return fieldName;
170170
}
171171

172+
public static string EnsureValidRelayCommandName(
173+
this string relayCommandName)
174+
{
175+
if (relayCommandName.EndsWith(NameConstants.Command + NameConstants.Command, StringComparison.Ordinal))
176+
{
177+
relayCommandName = relayCommandName.Substring(0, relayCommandName.Length - NameConstants.Command.Length);
178+
}
179+
180+
if (relayCommandName.EndsWith(NameConstants.Command, StringComparison.Ordinal))
181+
{
182+
return relayCommandName.EnsureFirstCharacterToUpper() + "X";
183+
}
184+
185+
if (relayCommandName.EndsWith(NameConstants.Handler, StringComparison.Ordinal))
186+
{
187+
relayCommandName = relayCommandName.Substring(0, relayCommandName.Length - NameConstants.Handler.Length);
188+
}
189+
190+
return relayCommandName.EndsWith(NameConstants.Command, StringComparison.Ordinal)
191+
? relayCommandName.EnsureFirstCharacterToUpper()
192+
: relayCommandName.EnsureFirstCharacterToUpper() + NameConstants.Command;
193+
}
194+
172195
public static string EnsureCSharpAliasIfNeeded(
173196
this string typeName)
174197
=> TypeAliases.TryGetValue(typeName, out var alias)

0 commit comments

Comments
 (0)