From 374f085e3c2e4d0a2e9a9f17eb268b2d90808945 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Fri, 23 Aug 2024 15:38:44 -0400 Subject: [PATCH 1/7] Make tag adjustments to heading component --- great_tables/_utils_render_html.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/great_tables/_utils_render_html.py b/great_tables/_utils_render_html.py index 5bacdc1e7..9a794a45d 100644 --- a/great_tables/_utils_render_html.py +++ b/great_tables/_utils_render_html.py @@ -39,22 +39,20 @@ def create_heading_component_h(data: GTData) -> StringBuilder: ) if has_subtitle: - heading = f""" - - {title} + heading = f""" + {title} - - {subtitle} + + {subtitle} """ else: - heading = f""" - - {title} + heading = f""" + {title} """ result.append(heading) - return StringBuilder('', result, "\n") + return StringBuilder(result) def create_columns_component_h(data: GTData) -> str: From 365f2ab84efbe9cd4ab4178fd1c7f9b5b2767437 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Fri, 23 Aug 2024 15:39:15 -0400 Subject: [PATCH 2/7] Insert tags when assembling HTML parts --- great_tables/gt.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/great_tables/gt.py b/great_tables/gt.py index 720aab7d4..a6797b8a7 100644 --- a/great_tables/gt.py +++ b/great_tables/gt.py @@ -366,8 +366,10 @@ def _render_as_html( table_tag_open = f'' html_table = f"""{table_tag_open}{table_colgroups} + {heading_component.make_string()} {column_labels_component} + {body_component} {source_notes_component} {footnotes_component} From edd47dc0a2a2de7ea4871001409545c5b5ce9492 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Fri, 23 Aug 2024 15:41:15 -0400 Subject: [PATCH 3/7] Update HTML table snapshots --- tests/__snapshots__/test_export.ambr | 12 ++++++------ tests/__snapshots__/test_formats.ambr | 2 ++ tests/__snapshots__/test_repr.ambr | 10 ++++++++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/tests/__snapshots__/test_export.ambr b/tests/__snapshots__/test_export.ambr index 0e9a01548..5d4a39c29 100644 --- a/tests/__snapshots__/test_export.ambr +++ b/tests/__snapshots__/test_export.ambr @@ -49,20 +49,20 @@
- - - + + + - - + + - + diff --git a/tests/__snapshots__/test_formats.ambr b/tests/__snapshots__/test_formats.ambr index 761ee5f2b..66fec6a7e 100644 --- a/tests/__snapshots__/test_formats.ambr +++ b/tests/__snapshots__/test_formats.ambr @@ -14,6 +14,7 @@ # name: test_format_repr_snap ''' class="gt_table" data-quarto-disable-processing="false" data-quarto-bootstrap="false"> + @@ -26,6 +27,7 @@ + diff --git a/tests/__snapshots__/test_repr.ambr b/tests/__snapshots__/test_repr.ambr index cffe989b1..1319d6e2b 100644 --- a/tests/__snapshots__/test_repr.ambr +++ b/tests/__snapshots__/test_repr.ambr @@ -49,11 +49,13 @@
Data listing from exibble
Data listing from exibble
exibble is a Great Tables dataset.
exibble is a Great Tables dataset.
num char currency
grp_a
numrow group
1.11 × 10−1
+ + @@ -122,11 +124,13 @@
x y
1
+ + @@ -201,11 +205,13 @@
x y
1
+ + @@ -277,11 +283,13 @@
x y
1
+ + @@ -350,11 +358,13 @@
x y
1
+ + From 13d16ed3155280d36408c311b5d3888d210e8407 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Mon, 26 Aug 2024 13:40:50 -0400 Subject: [PATCH 4/7] Restore line break on initial `` tag --- great_tables/_utils_render_html.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/great_tables/_utils_render_html.py b/great_tables/_utils_render_html.py index 9a794a45d..6a792ccbf 100644 --- a/great_tables/_utils_render_html.py +++ b/great_tables/_utils_render_html.py @@ -39,7 +39,8 @@ def create_heading_component_h(data: GTData) -> StringBuilder: ) if has_subtitle: - heading = f""" + heading = f""" + From 9e1d278843c9b03ee07f3d2e7752e77b93771e01 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Mon, 26 Aug 2024 13:41:34 -0400 Subject: [PATCH 5/7] Restore linebreak --- great_tables/_utils_render_html.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/great_tables/_utils_render_html.py b/great_tables/_utils_render_html.py index 6a792ccbf..de962b5ca 100644 --- a/great_tables/_utils_render_html.py +++ b/great_tables/_utils_render_html.py @@ -47,7 +47,8 @@ def create_heading_component_h(data: GTData) -> StringBuilder: """ else: - heading = f""" + heading = f""" + """ From 59b9585208375fb6877fedf2a4d1c6b922b90aa4 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Mon, 26 Aug 2024 13:45:45 -0400 Subject: [PATCH 6/7] Update test_export.ambr --- tests/__snapshots__/test_export.ambr | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/__snapshots__/test_export.ambr b/tests/__snapshots__/test_export.ambr index 5d4a39c29..55f06da4a 100644 --- a/tests/__snapshots__/test_export.ambr +++ b/tests/__snapshots__/test_export.ambr @@ -50,7 +50,8 @@
x y
1
{title}
{subtitle}
{title}
- + + From 00885d165816383aff00f2bd28a2734c00cd37c5 Mon Sep 17 00:00:00 2001 From: Richard Iannone Date: Mon, 26 Aug 2024 14:01:47 -0400 Subject: [PATCH 7/7] Remove Stringbuilder cls and usage --- great_tables/_text.py | 25 ------------------------- great_tables/_utils_render_html.py | 11 ++++------- great_tables/gt.py | 2 +- tests/test_utils_render_html.py | 2 +- 4 files changed, 6 insertions(+), 34 deletions(-) diff --git a/great_tables/_text.py b/great_tables/_text.py index 79501c7a3..74239776a 100644 --- a/great_tables/_text.py +++ b/great_tables/_text.py @@ -21,31 +21,6 @@ class Html(Text): """HTML text""" -class StringBuilder: - pieces: list[Union[str, "StringBuilder"]] - - def __init__(self, *args: Union[str, "StringBuilder"]): - self.pieces = list(args) - - def _collect(self, lst: list[str]): - for piece in self.pieces: - if isinstance(piece, str): - lst.append(piece) - else: - piece._collect(lst) - - def make_string(self) -> str: - lst = [] - self._collect(lst) - return "".join(lst) - - def append(self, *args: str) -> None: - self.pieces.extend(args) - - def prepend(self, *args: str) -> None: - self.pieces[0:0] = args - - def _md_html(x: str) -> str: str = commonmark.commonmark(x) return re.sub(r"^

|

\n$", "", str) diff --git a/great_tables/_utils_render_html.py b/great_tables/_utils_render_html.py index de962b5ca..f12d59828 100644 --- a/great_tables/_utils_render_html.py +++ b/great_tables/_utils_render_html.py @@ -8,12 +8,11 @@ from ._gt_data import GTData from ._tbl_data import _get_cell, cast_frame_to_string, n_rows, replace_null_frame -from ._text import StringBuilder, _process_text, _process_text_id +from ._text import _process_text, _process_text_id from ._utils import heading_has_subtitle, heading_has_title, seq_groups -def create_heading_component_h(data: GTData) -> StringBuilder: - result = StringBuilder() +def create_heading_component_h(data: GTData) -> str: title = data._heading.title subtitle = data._heading.subtitle @@ -23,7 +22,7 @@ def create_heading_component_h(data: GTData) -> StringBuilder: # If there is no title or heading component, then return an empty string if not has_title and not has_subtitle: - return result + return "" # Raise an error if there is a subtitle but no title if not has_title and has_subtitle: @@ -52,9 +51,7 @@ def create_heading_component_h(data: GTData) -> StringBuilder:
""" - result.append(heading) - - return StringBuilder(result) + return heading def create_columns_component_h(data: GTData) -> str: diff --git a/great_tables/gt.py b/great_tables/gt.py index a6797b8a7..5715720a9 100644 --- a/great_tables/gt.py +++ b/great_tables/gt.py @@ -367,7 +367,7 @@ def _render_as_html( html_table = f"""{table_tag_open}{table_colgroups} -{heading_component.make_string()} +{heading_component} {column_labels_component} {body_component} diff --git a/tests/test_utils_render_html.py b/tests/test_utils_render_html.py index 526c803c5..da0241a75 100644 --- a/tests/test_utils_render_html.py +++ b/tests/test_utils_render_html.py @@ -20,7 +20,7 @@ def assert_rendered_source_notes(snapshot, gt): def assert_rendered_heading(snapshot, gt): built = gt._build_data("html") - heading = create_heading_component_h(built).make_string() + heading = create_heading_component_h(built) assert snapshot == heading
Data listing from exibble
{title}