fix(table): correctly truncate escaped cells #603
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #502.
This pull request introduces new utility functions for handling terminal escape sequences and updates the table rendering logic to use these utilities. It also includes comprehensive unit tests for the new functions. Much of the new utility functions is derived from here (I made the assumption that this project is aiming for minimal dependencies).
New Utility Functions for Escape Sequences:
table/escape_utils.go
: Added functions to handle terminal escape sequences, includingtruncate
,lengthWithoutEscapeSequences
,extractEscapeSequences
, andapplyEscapeSequences
.Tests for New Utility Functions:
table/escape_utils_test.go
: Added tests fortruncate
,lengthWithoutEscapeSequences
,extractEscapeSequences
, andapplyEscapeSequences
to ensure they work correctly with various types of strings, including those with escape sequences, emojis, and combining characters.Updates to Table Rendering Logic:
table/table.go
: Replacedrunewidth.Truncate
with the newtruncate
function in theheadersView
andrenderRow
methods to properly handle escape sequences. [1] [2]Assumptions: