mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-17 17:32: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" ],
|
"projects": [ "src", "tests" ],
|
||||||
"sdk": {
|
"sdk": {
|
||||||
"version": "5.0.202",
|
"version": "5.0.301",
|
||||||
"rollForward": "latestPatch"
|
"rollForward": "latestPatch"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -179,8 +179,10 @@ namespace Spectre.Console
|
|||||||
var builder = new StringBuilder();
|
var builder = new StringBuilder();
|
||||||
builder.Append(_prompt.TrimEnd());
|
builder.Append(_prompt.TrimEnd());
|
||||||
|
|
||||||
|
var appendSuffix = false;
|
||||||
if (ShowChoices && Choices.Count > 0)
|
if (ShowChoices && Choices.Count > 0)
|
||||||
{
|
{
|
||||||
|
appendSuffix = true;
|
||||||
var converter = Converter ?? TypeConverterHelper.ConvertToString;
|
var converter = Converter ?? TypeConverterHelper.ConvertToString;
|
||||||
var choices = string.Join("/", Choices.Select(choice => converter(choice)));
|
var choices = string.Join("/", Choices.Select(choice => converter(choice)));
|
||||||
builder.AppendFormat(CultureInfo.InvariantCulture, " [blue][[{0}]][/]", choices);
|
builder.AppendFormat(CultureInfo.InvariantCulture, " [blue][[{0}]][/]", choices);
|
||||||
@ -188,6 +190,7 @@ namespace Spectre.Console
|
|||||||
|
|
||||||
if (ShowDefaultValue && DefaultValue != null)
|
if (ShowDefaultValue && DefaultValue != null)
|
||||||
{
|
{
|
||||||
|
appendSuffix = true;
|
||||||
var converter = Converter ?? TypeConverterHelper.ConvertToString;
|
var converter = Converter ?? TypeConverterHelper.ConvertToString;
|
||||||
builder.AppendFormat(
|
builder.AppendFormat(
|
||||||
CultureInfo.InvariantCulture,
|
CultureInfo.InvariantCulture,
|
||||||
@ -196,8 +199,7 @@ namespace Spectre.Console
|
|||||||
}
|
}
|
||||||
|
|
||||||
var markup = builder.ToString().Trim();
|
var markup = builder.ToString().Trim();
|
||||||
if (!markup.EndsWith("?", StringComparison.OrdinalIgnoreCase) &&
|
if (appendSuffix)
|
||||||
!markup.EndsWith(":", StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
{
|
||||||
markup += ":";
|
markup += ":";
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
Enter command$ Orange
|
@ -12,6 +12,20 @@ namespace Spectre.Console.Tests.Unit
|
|||||||
[ExpectationPath("Widgets/Prompt/Text")]
|
[ExpectationPath("Widgets/Prompt/Text")]
|
||||||
public sealed class TextPromptTests
|
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]
|
[Fact]
|
||||||
[Expectation("ConversionError")]
|
[Expectation("ConversionError")]
|
||||||
public Task Should_Return_Validation_Error_If_Value_Cannot_Be_Converted()
|
public Task Should_Return_Validation_Error_If_Value_Cannot_Be_Converted()
|
||||||
@ -218,5 +232,22 @@ namespace Spectre.Console.Tests.Unit
|
|||||||
// Then
|
// Then
|
||||||
return Verifier.Verify(console.Output);
|
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