in python/datafusion/html_formatter.py [0:0]
def _build_table_body(self, batches: list, table_uuid: str) -> list[str]:
"""Build the HTML table body with data rows."""
html = []
html.append("<tbody>")
row_count = 0
for batch in batches:
for row_idx in range(batch.num_rows):
row_count += 1
html.append("<tr>")
for col_idx, column in enumerate(batch.columns):
# Get the raw value from the column
raw_value = self._get_cell_value(column, row_idx)
# Always check for type formatters first to format the value
formatted_value = self._format_cell_value(raw_value)
# Then apply either custom cell builder or standard cell formatting
if self._custom_cell_builder:
# Pass both the raw value and formatted value to let the
# builder decide
cell_html = self._custom_cell_builder(
raw_value, row_count, col_idx, table_uuid
)
html.append(cell_html)
else:
# Standard cell formatting with formatted value
if (
len(str(raw_value)) > self.max_cell_length
and self.enable_cell_expansion
):
cell_html = self._build_expandable_cell(
formatted_value, row_count, col_idx, table_uuid
)
else:
cell_html = self._build_regular_cell(formatted_value)
html.append(cell_html)
html.append("</tr>")
html.append("</tbody>")
return html