mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 08:52:50 +08:00
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:
parent
865552c3f2
commit
2011cb2eff
@ -1,7 +1,7 @@
|
||||
{
|
||||
"projects": [ "src", "tests" ],
|
||||
"sdk": {
|
||||
"version": "5.0.202",
|
||||
"version": "5.0.301",
|
||||
"rollForward": "latestPatch"
|
||||
}
|
||||
}
|
@ -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 += ":";
|
||||
}
|
||||
|
@ -0,0 +1 @@
|
||||
Enter command$ Orange
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
18
test/Spectre.Console.Tests/Utilities/GitHubIssueAttribute.cs
Normal file
18
test/Spectre.Console.Tests/Utilities/GitHubIssueAttribute.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user