mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 00:42:51 +08:00
Add rounded border
This commit is contained in:
parent
66994cd904
commit
108e56c229
@ -87,7 +87,7 @@ namespace Sample
|
|||||||
table.AddRow("Hej 👋", "[green]Världen[/]");
|
table.AddRow("Hej 👋", "[green]Världen[/]");
|
||||||
AnsiConsole.Render(table);
|
AnsiConsole.Render(table);
|
||||||
|
|
||||||
table = new Table(BorderKind.Ascii);
|
table = new Table(BorderKind.Rounded);
|
||||||
table.AddColumns("[red underline]Foo[/]", "Bar");
|
table.AddColumns("[red underline]Foo[/]", "Bar");
|
||||||
table.AddRow("[blue][underline]Hell[/]o[/]", "World 🌍");
|
table.AddRow("[blue][underline]Hell[/]o[/]", "World 🌍");
|
||||||
table.AddRow("[yellow]Patrik [green]\"Lol[/]\" Svensson[/]", "Was [underline]here[/]!");
|
table.AddRow("[yellow]Patrik [green]\"Lol[/]\" Svensson[/]", "Was [underline]here[/]!");
|
||||||
|
@ -12,6 +12,7 @@ namespace Spectre.Console.Tests.Unit.Composition
|
|||||||
[Theory]
|
[Theory]
|
||||||
[InlineData(BorderKind.Ascii, typeof(AsciiBorder))]
|
[InlineData(BorderKind.Ascii, typeof(AsciiBorder))]
|
||||||
[InlineData(BorderKind.Square, typeof(SquareBorder))]
|
[InlineData(BorderKind.Square, typeof(SquareBorder))]
|
||||||
|
[InlineData(BorderKind.Rounded, typeof(RoundedBorder))]
|
||||||
public void Should_Return_Correct_Border_For_Specified_Kind(BorderKind kind, Type expected)
|
public void Should_Return_Correct_Border_For_Specified_Kind(BorderKind kind, Type expected)
|
||||||
{
|
{
|
||||||
// Given, When
|
// Given, When
|
||||||
|
@ -111,7 +111,7 @@ namespace Spectre.Console.Tests.Unit.Composition
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void Should_Render_Table_With_Specified_Border_Correctly()
|
public void Should_Render_Table_With_Ascii_Border_Correctly()
|
||||||
{
|
{
|
||||||
// Given
|
// Given
|
||||||
var console = new PlainConsole(width: 80);
|
var console = new PlainConsole(width: 80);
|
||||||
@ -132,6 +132,28 @@ namespace Spectre.Console.Tests.Unit.Composition
|
|||||||
console.Lines[5].ShouldBe("+-------------------------+");
|
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]
|
[Fact]
|
||||||
public void Should_Render_Table_With_No_Border_Correctly()
|
public void Should_Render_Table_With_No_Border_Correctly()
|
||||||
{
|
{
|
||||||
|
@ -17,6 +17,7 @@ namespace Spectre.Console.Composition
|
|||||||
{ BorderKind.None, new NoBorder() },
|
{ BorderKind.None, new NoBorder() },
|
||||||
{ BorderKind.Ascii, new AsciiBorder() },
|
{ BorderKind.Ascii, new AsciiBorder() },
|
||||||
{ BorderKind.Square, new SquareBorder() },
|
{ BorderKind.Square, new SquareBorder() },
|
||||||
|
{ BorderKind.Rounded, new RoundedBorder() },
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -19,5 +19,10 @@ namespace Spectre.Console
|
|||||||
/// An old school ASCII border.
|
/// An old school ASCII border.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Ascii = 2,
|
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."),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user