mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-17 17:32:50 +08:00
parent
2dd0eb9f74
commit
f4d1796e40
@ -307,5 +307,24 @@ namespace Spectre.Console.Tests.Unit.Composition
|
|||||||
console.Lines[5].ShouldBe("│ Grault │ Garply │ Fred │");
|
console.Lines[5].ShouldBe("│ Grault │ Garply │ Fred │");
|
||||||
console.Lines[6].ShouldBe("└────────┴────────┴──────────┘");
|
console.Lines[6].ShouldBe("└────────┴────────┴──────────┘");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Should_Render_Table_Without_Footer_If_No_Rows_Are_Added()
|
||||||
|
{
|
||||||
|
// Given
|
||||||
|
var console = new PlainConsole(width: 80);
|
||||||
|
var table = new Table();
|
||||||
|
table.AddColumns("Foo", "Bar");
|
||||||
|
table.AddColumn(new TableColumn("Baz") { Padding = new Padding(3, 2) });
|
||||||
|
|
||||||
|
// When
|
||||||
|
console.Render(table);
|
||||||
|
|
||||||
|
// Then
|
||||||
|
console.Lines.Count.ShouldBe(3);
|
||||||
|
console.Lines[0].ShouldBe("┌─────┬─────┬────────┐");
|
||||||
|
console.Lines[1].ShouldBe("│ Foo │ Bar │ Baz │");
|
||||||
|
console.Lines[2].ShouldBe("└─────┴─────┴────────┘");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ namespace Spectre.Console
|
|||||||
.Where(x => x.allowWrap)
|
.Where(x => x.allowWrap)
|
||||||
.Max(x => x.width);
|
.Max(x => x.width);
|
||||||
|
|
||||||
var secondMaxColumn = widths.Zip(wrappable, (width, allowWrap) => allowWrap && width != maxColumn ? width : 0).Max();
|
var secondMaxColumn = widths.Zip(wrappable, (width, allowWrap) => allowWrap && width != maxColumn ? width : 1).Max();
|
||||||
var columnDifference = maxColumn - secondMaxColumn;
|
var columnDifference = maxColumn - secondMaxColumn;
|
||||||
|
|
||||||
var ratios = widths.Zip(wrappable, (width, allowWrap) => width == maxColumn && allowWrap ? 1 : 0).ToList();
|
var ratios = widths.Zip(wrappable, (width, allowWrap) => width == maxColumn && allowWrap ? 1 : 0).ToList();
|
||||||
@ -96,9 +96,15 @@ namespace Spectre.Console
|
|||||||
|
|
||||||
var minWidths = new List<int>();
|
var minWidths = new List<int>();
|
||||||
var maxWidths = new List<int>();
|
var maxWidths = new List<int>();
|
||||||
|
|
||||||
|
// Include columns in measurement
|
||||||
|
var measure = ((IRenderable)column.Text).Measure(options, maxWidth);
|
||||||
|
minWidths.Add(measure.Min);
|
||||||
|
maxWidths.Add(measure.Max);
|
||||||
|
|
||||||
foreach (var row in rows)
|
foreach (var row in rows)
|
||||||
{
|
{
|
||||||
var measure = ((IRenderable)row).Measure(options, maxWidth);
|
measure = ((IRenderable)row).Measure(options, maxWidth);
|
||||||
minWidths.Add(measure.Min);
|
minWidths.Add(measure.Min);
|
||||||
maxWidths.Add(measure.Max);
|
maxWidths.Add(measure.Max);
|
||||||
}
|
}
|
||||||
|
@ -178,6 +178,7 @@ namespace Spectre.Console
|
|||||||
|
|
||||||
var showBorder = Border != BorderKind.None;
|
var showBorder = Border != BorderKind.None;
|
||||||
var hideBorder = Border == BorderKind.None;
|
var hideBorder = Border == BorderKind.None;
|
||||||
|
var hasRows = _rows.Count > 0;
|
||||||
|
|
||||||
var maxWidth = width;
|
var maxWidth = width;
|
||||||
if (Width != null)
|
if (Width != null)
|
||||||
@ -303,7 +304,7 @@ namespace Spectre.Console
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show header separator?
|
// Show header separator?
|
||||||
if (firstRow && showBorder && ShowHeaders)
|
if (firstRow && showBorder && ShowHeaders && hasRows)
|
||||||
{
|
{
|
||||||
result.Add(new Segment(border.GetPart(BorderPart.HeaderBottomLeft)));
|
result.Add(new Segment(border.GetPart(BorderPart.HeaderBottomLeft)));
|
||||||
foreach (var (columnIndex, first, lastColumn, columnWidth) in columnWidths.Enumerate())
|
foreach (var (columnIndex, first, lastColumn, columnWidth) in columnWidths.Enumerate())
|
||||||
|
@ -141,6 +141,11 @@ namespace Spectre.Console
|
|||||||
return Array.Empty<Segment>();
|
return Array.Empty<Segment>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (width == 0)
|
||||||
|
{
|
||||||
|
return Array.Empty<Segment>();
|
||||||
|
}
|
||||||
|
|
||||||
var result = new List<Segment>();
|
var result = new List<Segment>();
|
||||||
var segments = SplitLineBreaks(CreateSegments());
|
var segments = SplitLineBreaks(CreateSegments());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user