diff --git a/termstr/termstr.py b/termstr/termstr.py index 887fbc0..4e868bd 100644 --- a/termstr/termstr.py +++ b/termstr/termstr.py @@ -173,13 +173,13 @@ _ZERO_WIDTH_SPACE = "\u200b" def _pad_wide_chars(str_): - parts = [] - last_width = None - for char in str_: - width = cwcwidth.wcwidth(char) - parts.append(f"{_ZERO_WIDTH_SPACE}{char}" if width != 0 and last_width == 2 else char) - last_width = width - padded_str = "".join(parts) + def parts(): + last_width = None + for char in str_: + width = cwcwidth.wcwidth(char) + yield f"{_ZERO_WIDTH_SPACE}{char}" if width != 0 and last_width == 2 else char + last_width = width + padded_str = "".join(parts()) if len(padded_str) > 0 and cwcwidth.wcwidth(padded_str[-1]) == 2: padded_str += _ZERO_WIDTH_SPACE return str_ if len(padded_str) == len(str_) else padded_str