From f245e1aa3ca52053983d97ddca9113029c90fe31 Mon Sep 17 00:00:00 2001 From: Tsuyoshi Hombashi Date: Sun, 26 Jul 2020 21:55:30 +0900 Subject: [PATCH] Fix colorize_terminal to clear preprocess data when the value changed --- pytablewriter/writer/_table_writer.py | 14 +++++++++++++- test/writer/text/test_markdown_writer.py | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/pytablewriter/writer/_table_writer.py b/pytablewriter/writer/_table_writer.py index 48a873c1..e7ffc413 100644 --- a/pytablewriter/writer/_table_writer.py +++ b/pytablewriter/writer/_table_writer.py @@ -397,7 +397,7 @@ def __init__(self) -> None: self._style_filters = [] # type: List[StyleFilterFunc] self._styler = self._create_styler(self) self.style_filter_kwargs = {} # type: Dict[str, Any] - self.colorize_terminal = True + self.__colorize_terminal = True self.__enable_ansi_escape = True self.max_workers = 1 @@ -489,6 +489,18 @@ def column_styles(self, value: Sequence[Optional[Style]]) -> None: self.__clear_preprocess() + @property + def colorize_terminal(self) -> bool: + return self.__colorize_terminal + + @colorize_terminal.setter + def colorize_terminal(self, value: bool) -> None: + if self.__colorize_terminal == value: + return + + self.__colorize_terminal = value + self.__clear_preprocess() + @property def enable_ansi_escape(self) -> bool: return self.__enable_ansi_escape diff --git a/test/writer/text/test_markdown_writer.py b/test/writer/text/test_markdown_writer.py index 849a7cf9..bea5972d 100644 --- a/test/writer/text/test_markdown_writer.py +++ b/test/writer/text/test_markdown_writer.py @@ -817,6 +817,23 @@ def test_normal_ansi_style(self): assert regexp_ansi_escape.search(out) assert regexp_ansi_escape.sub("", out) == expected + def test_normal_colorize_terminal(self): + writer = table_writer_class() + writer.column_styles = [ + Style(color="red"), + Style(bg_color="white"), + ] + writer.headers = ["fg color", "bg color"] + writer.value_matrix = [["hoge", "foo"]] + + writer.colorize_terminal = True + out = writer.dumps() + assert regexp_ansi_escape.search(out) + + writer.colorize_terminal = False + out = writer.dumps() + assert regexp_ansi_escape.search(out) is None + def test_normal_enable_ansi_escape(self): writer = table_writer_class() writer.column_styles = [