Files
workinf_Blender_Wasm/blender-5.2.0/tests/performance/api/table.py
2026-08-12 04:47:48 -04:00

52 lines
1.6 KiB
Python

# SPDX-FileCopyrightText: 2026 Blender Authors
#
# SPDX-License-Identifier: Apache-2.0
class MarkdownColumn:
def __init__(self, name, width=10, is_visible=True, alignment='LEFT'):
self.name = name
self.width = width
self.is_visible = is_visible
self.alignment = alignment
if len(self.name) > self.width:
self.width = len(self.name)
class MarkdownTable:
def __init__(self):
self.columns = []
self.show_header = True
def add_column(self, *args, **kwargs):
self.columns.append(MarkdownColumn(*args, **kwargs))
def print_header(self):
if not self.show_header:
return
values = []
lines = []
for column in self.columns:
if not column.is_visible:
continue
values.append(f"{column.name:{column.width}}")
alignment_char = ':' if column.alignment == 'RIGHT' else '-'
lines.append('-' * (column.width - 1) + alignment_char)
print('| ' + (' | '.join(values)) + ' |')
print('| ' + (' | '.join(lines)) + ' |')
def print_row(self, row_values, end='\n'):
values = []
for column, value in zip(self.columns, row_values):
if not column.is_visible:
continue
if len(value) > column.width:
column.width = len(value)
if column.alignment == 'LEFT':
values.append(f"{value:<{column.width}}")
else:
values.append(f"{value:>{column.width}}")
print("| " + (" | ".join(values)) + " |", end=end, flush=True)