sections docs and test

This commit is contained in:
Will McGugan 2022-09-23 15:21:28 +01:00
parent c6001e5226
commit 36fa43da75
3 changed files with 27 additions and 1 deletions

View File

@ -96,7 +96,7 @@ Lines
By default, Tables will show a line under the header only. If you want to show lines between all rows add ``show_lines=True`` to the constructor.
You can also force a line on the next row by setting ``end_section=True`` on the call to ``add_row()``.
You can also force a line on the next row by setting ``end_section=True`` on the call to :meth:`~rich.table.Table.add_row`, or by calling the :meth:`~rich.table.Table.add_section` to add a line between the current and subsequent rows.
Empty Tables

View File

@ -462,6 +462,12 @@ class Table(JupyterMixin):
)
self.rows.append(Row(style=style, end_section=end_section))
def add_section(self) -> None:
"""Add a new section (draw a line after current row)."""
if self.rows:
self.rows[-1].end_section = True
def __rich_console__(
self, console: "Console", options: "ConsoleOptions"
) -> "RenderResult":

View File

@ -209,6 +209,26 @@ def test_table_show_header_false_substitution(box, result):
assert output == result
def test_section():
table = Table("foo")
table.add_section() # Null-op
table.add_row("row1")
table.add_row("row2", end_section=True)
table.add_row("row3")
table.add_row("row4")
table.add_section()
table.add_row("row5")
table.add_section() # Null-op
console = Console(record=True)
console.print(table)
output = console.export_text()
print(repr(output))
expected = "┏━━━━━━┓\n┃ foo ┃\n┡━━━━━━┩\n│ row1 │\n│ row2 │\n├──────┤\n│ row3 │\n│ row4 │\n├──────┤\n│ row5 │\n└──────┘\n"
assert output == expected
if __name__ == "__main__":
render = render_tables()
print(render)