mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-10-31 09:09:25 +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:
		 Patrik Svensson
					Patrik Svensson
				
			
				
					committed by
					
						 Patrik Svensson
						Patrik Svensson
					
				
			
			
				
	
			
			
			 Patrik Svensson
						Patrik Svensson
					
				
			
						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; | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user