Do not append suffix to text prompt

Do not append suffix to text prompt unless
there are choices or a default value specified.

Closes #413
This commit is contained in:
Patrik Svensson 2021-07-02 19:06:12 +02:00 committed by Patrik Svensson
parent 865552c3f2
commit 2011cb2eff
5 changed files with 55 additions and 3 deletions

View File

@ -1,7 +1,7 @@
{
"projects": [ "src", "tests" ],
"sdk": {
"version": "5.0.202",
"version": "5.0.301",
"rollForward": "latestPatch"
}
}

View File

@ -179,8 +179,10 @@ namespace Spectre.Console
var builder = new StringBuilder();
builder.Append(_prompt.TrimEnd());
var appendSuffix = false;
if (ShowChoices && Choices.Count > 0)
{
appendSuffix = true;
var converter = Converter ?? TypeConverterHelper.ConvertToString;
var choices = string.Join("/", Choices.Select(choice => converter(choice)));
builder.AppendFormat(CultureInfo.InvariantCulture, " [blue][[{0}]][/]", choices);
@ -188,6 +190,7 @@ namespace Spectre.Console
if (ShowDefaultValue && DefaultValue != null)
{
appendSuffix = true;
var converter = Converter ?? TypeConverterHelper.ConvertToString;
builder.AppendFormat(
CultureInfo.InvariantCulture,
@ -196,8 +199,7 @@ namespace Spectre.Console
}
var markup = builder.ToString().Trim();
if (!markup.EndsWith("?", StringComparison.OrdinalIgnoreCase) &&
!markup.EndsWith(":", StringComparison.OrdinalIgnoreCase))
if (appendSuffix)
{
markup += ":";
}

View File

@ -0,0 +1 @@
Enter command$ Orange

View File

@ -12,6 +12,20 @@ namespace Spectre.Console.Tests.Unit
[ExpectationPath("Widgets/Prompt/Text")]
public sealed class TextPromptTests
{
[Fact]
public void Should_Return_Entered_Text()
{
// Given
var console = new TestConsole();
console.Input.PushTextWithEnter("Hello World");
// When
var result = console.Prompt(new TextPrompt<string>("Enter text:"));
// Then
result.ShouldBe("Hello World");
}
[Fact]
[Expectation("ConversionError")]
public Task Should_Return_Validation_Error_If_Value_Cannot_Be_Converted()
@ -218,5 +232,22 @@ namespace Spectre.Console.Tests.Unit
// Then
return Verifier.Verify(console.Output);
}
[Fact]
[Expectation("NoSuffix")]
[GitHubIssue(413)]
public Task Should_Not_Append_Questionmark_Or_Colon_If_No_Choices_Are_Set()
{
// Given
var console = new TestConsole();
console.Input.PushTextWithEnter("Orange");
// When
console.Prompt(
new TextPrompt<string>("Enter command$"));
// Then
return Verifier.Verify(console.Output);
}
}
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Spectre.Console.Tests
{
public sealed class GitHubIssueAttribute : Attribute
{
public int IssueId { get; }
public GitHubIssueAttribute(int issueId)
{
IssueId = issueId;
}
}
}