mirror of
				https://github.com/nsnail/spectre.console.git
				synced 2025-11-01 01:25:27 +08:00 
			
		
		
		
	Add rounded border
This commit is contained in:
		 Patrik Svensson
					Patrik Svensson
				
			
				
					committed by
					
						 Patrik Svensson
						Patrik Svensson
					
				
			
			
				
	
			
			
			 Patrik Svensson
						Patrik Svensson
					
				
			
						parent
						
							66994cd904
						
					
				
				
					commit
					108e56c229
				
			| @@ -87,7 +87,7 @@ namespace Sample | ||||
|             table.AddRow("Hej 👋", "[green]Världen[/]"); | ||||
|             AnsiConsole.Render(table); | ||||
|  | ||||
|             table = new Table(BorderKind.Ascii); | ||||
|             table = new Table(BorderKind.Rounded); | ||||
|             table.AddColumns("[red underline]Foo[/]", "Bar"); | ||||
|             table.AddRow("[blue][underline]Hell[/]o[/]", "World 🌍"); | ||||
|             table.AddRow("[yellow]Patrik [green]\"Lol[/]\" Svensson[/]", "Was [underline]here[/]!"); | ||||
|   | ||||
| @@ -12,6 +12,7 @@ namespace Spectre.Console.Tests.Unit.Composition | ||||
|             [Theory] | ||||
|             [InlineData(BorderKind.Ascii, typeof(AsciiBorder))] | ||||
|             [InlineData(BorderKind.Square, typeof(SquareBorder))] | ||||
|             [InlineData(BorderKind.Rounded, typeof(RoundedBorder))] | ||||
|             public void Should_Return_Correct_Border_For_Specified_Kind(BorderKind kind, Type expected) | ||||
|             { | ||||
|                 // Given, When | ||||
|   | ||||
| @@ -111,7 +111,7 @@ namespace Spectre.Console.Tests.Unit.Composition | ||||
|         } | ||||
|  | ||||
|         [Fact] | ||||
|         public void Should_Render_Table_With_Specified_Border_Correctly() | ||||
|         public void Should_Render_Table_With_Ascii_Border_Correctly() | ||||
|         { | ||||
|             // Given | ||||
|             var console = new PlainConsole(width: 80); | ||||
| @@ -132,6 +132,28 @@ namespace Spectre.Console.Tests.Unit.Composition | ||||
|             console.Lines[5].ShouldBe("+-------------------------+"); | ||||
|         } | ||||
|  | ||||
|         [Fact] | ||||
|         public void Should_Render_Table_With_Rounded_Border_Correctly() | ||||
|         { | ||||
|             // Given | ||||
|             var console = new PlainConsole(width: 80); | ||||
|             var table = new Table(BorderKind.Rounded); | ||||
|             table.AddColumns("Foo", "Bar", "Baz"); | ||||
|             table.AddRow("Qux", "Corgi", "Waldo"); | ||||
|             table.AddRow("Grault", "Garply", "Fred"); | ||||
|  | ||||
|             // When | ||||
|             console.Render(table); | ||||
|  | ||||
|             // Then | ||||
|             console.Lines[0].ShouldBe("╭────────┬────────┬───────╮"); | ||||
|             console.Lines[1].ShouldBe("│ Foo    │ Bar    │ Baz   │"); | ||||
|             console.Lines[2].ShouldBe("├────────┼────────┼───────┤"); | ||||
|             console.Lines[3].ShouldBe("│ Qux    │ Corgi  │ Waldo │"); | ||||
|             console.Lines[4].ShouldBe("│ Grault │ Garply │ Fred  │"); | ||||
|             console.Lines[5].ShouldBe("╰────────┴────────┴───────╯"); | ||||
|         } | ||||
|  | ||||
|         [Fact] | ||||
|         public void Should_Render_Table_With_No_Border_Correctly() | ||||
|         { | ||||
|   | ||||
| @@ -17,6 +17,7 @@ namespace Spectre.Console.Composition | ||||
|             { BorderKind.None, new NoBorder() }, | ||||
|             { BorderKind.Ascii, new AsciiBorder() }, | ||||
|             { BorderKind.Square, new SquareBorder() }, | ||||
|             { BorderKind.Rounded, new RoundedBorder() }, | ||||
|         }; | ||||
|  | ||||
|         /// <summary> | ||||
|   | ||||
| @@ -19,5 +19,10 @@ namespace Spectre.Console | ||||
|         /// An old school ASCII border. | ||||
|         /// </summary> | ||||
|         Ascii = 2, | ||||
|  | ||||
|         /// <summary> | ||||
|         /// A rounded border. | ||||
|         /// </summary> | ||||
|         Rounded = 3, | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										37
									
								
								src/Spectre.Console/Composition/Borders/RoundedBorder.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/Spectre.Console/Composition/Borders/RoundedBorder.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| using System; | ||||
|  | ||||
| namespace Spectre.Console.Composition | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Represents a rounded border. | ||||
|     /// </summary> | ||||
|     public sealed class RoundedBorder : Border | ||||
|     { | ||||
|         /// <inheritdoc/> | ||||
|         protected override string GetBoxPart(BorderPart part) | ||||
|         { | ||||
|             return part switch | ||||
|             { | ||||
|                 BorderPart.HeaderTopLeft => "╭", | ||||
|                 BorderPart.HeaderTop => "─", | ||||
|                 BorderPart.HeaderTopSeparator => "┬", | ||||
|                 BorderPart.HeaderTopRight => "╮", | ||||
|                 BorderPart.HeaderLeft => "│", | ||||
|                 BorderPart.HeaderSeparator => "│", | ||||
|                 BorderPart.HeaderRight => "│", | ||||
|                 BorderPart.HeaderBottomLeft => "├", | ||||
|                 BorderPart.HeaderBottom => "─", | ||||
|                 BorderPart.HeaderBottomSeparator => "┼", | ||||
|                 BorderPart.HeaderBottomRight => "┤", | ||||
|                 BorderPart.CellLeft => "│", | ||||
|                 BorderPart.CellSeparator => "│", | ||||
|                 BorderPart.ColumnRight => "│", | ||||
|                 BorderPart.FooterBottomLeft => "╰", | ||||
|                 BorderPart.FooterBottom => "─", | ||||
|                 BorderPart.FooterBottomSeparator => "┴", | ||||
|                 BorderPart.FooterBottomRight => "╯", | ||||
|                 _ => throw new InvalidOperationException("Unknown box part."), | ||||
|             }; | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user