diff --git a/src/Spectre.Console/Prompts/ConfirmationPrompt.cs b/src/Spectre.Console/Prompts/ConfirmationPrompt.cs index d1f5b820..4909ee2b 100644 --- a/src/Spectre.Console/Prompts/ConfirmationPrompt.cs +++ b/src/Spectre.Console/Prompts/ConfirmationPrompt.cs @@ -40,10 +40,13 @@ public sealed class ConfirmationPrompt : IPrompt public bool ShowDefaultValue { get; set; } = true; /// - /// Gets or sets a value indicating whether the confirmation - /// should use case insensitive matching. + /// Gets or sets the string comparer to use when comparing user input + /// against Yes/No choices. /// - public bool CaseInsensitive { get; set; } = true; + /// + /// Defaults to . + /// + public StringComparer Comparer { get; set; } = StringComparer.CurrentCultureIgnoreCase; /// /// Initializes a new instance of the class. @@ -63,7 +66,8 @@ public sealed class ConfirmationPrompt : IPrompt /// public async Task ShowAsync(IAnsiConsole console, CancellationToken cancellationToken) { - var comparer = CaseInsensitive ? StringComparer.CurrentCultureIgnoreCase : StringComparer.CurrentCulture; + var comparer = Comparer ?? StringComparer.CurrentCultureIgnoreCase; + var prompt = new TextPrompt(_prompt, comparer) .InvalidChoiceMessage(InvalidChoiceMessage) .ValidationErrorMessage(InvalidChoiceMessage) @@ -75,6 +79,6 @@ public sealed class ConfirmationPrompt : IPrompt var result = await prompt.ShowAsync(console, cancellationToken).ConfigureAwait(false); - return Yes.ToString().Equals(result.ToString(), CaseInsensitive ? StringComparison.CurrentCultureIgnoreCase : StringComparison.CurrentCulture); + return comparer.Compare(Yes.ToString(), result.ToString()) == 0; } } \ No newline at end of file