Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(term): ansi: move Wrap to Hardwrap and introduce Wrap #57

Merged
merged 2 commits into from
Mar 29, 2024

Conversation

aymanbagabas
Copy link
Member

ANSI aware text wrapping that breaks word boundaries only when necessary.

Fixes: charmbracelet/lipgloss#275
Fixes: muesli/reflow#43

@aymanbagabas aymanbagabas force-pushed the smart-wrap branch 2 times, most recently from 2441682 to 6b796dc Compare March 28, 2024 18:07
aymanbagabas added a commit to charmbracelet/lipgloss that referenced this pull request Mar 28, 2024
aymanbagabas added a commit to charmbracelet/lipgloss that referenced this pull request Mar 28, 2024
ANSI aware text wrapping that breaks word boundaries only when
necessary.

Fixes: charmbracelet/lipgloss#275
Fixes: muesli/reflow#43
aymanbagabas added a commit to charmbracelet/lipgloss that referenced this pull request Mar 28, 2024
// account for wide-characters in the string. The breakpoints string is a list
// of characters that are considered breakpoints for word wrapping. A hyphen
// (-) is always considered a breakpoint.
func SmartWrap(s string, limit int, breakpoints string) string {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe SmartWrap is incorrect since there's a smarter way to wrap the text with less word breakage. Perhaps Wrap should be Hardwrap and this becomes just Wrap.

aymanbagabas added a commit to charmbracelet/lipgloss that referenced this pull request Mar 28, 2024
@aymanbagabas aymanbagabas changed the title feat(term): ansi: add SmartWrap feat(term): ansi: move Wrap to Hardwrap and introduce Wrap Mar 29, 2024
@aymanbagabas aymanbagabas merged commit 62a6965 into main Mar 29, 2024
11 checks passed
@aymanbagabas aymanbagabas deleted the smart-wrap branch March 29, 2024 18:52
aymanbagabas added a commit to charmbracelet/lipgloss that referenced this pull request Mar 29, 2024
* feat: switch to term/ansi for text manipulation

Use ANSI aware, wide characters support, uniseg backed term/ansi package
to calculate string widths, truncate, and wrap strings.

Related: muesli/reflow#71
Fixes: #258
Fixes: #220

* fix: combining both conditional and unconditional wrapping

Uses `ansi.SmartWrap` charmbracelet/x#57

Fixes: muesli/reflow#43

* chore: update deps

* Update get.go
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Extra newlines when combining unconditional and standard word wrapping
3 participants