Skip to content

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

Merged
aymanbagabas merged 2 commits intomainfrom
smart-wrap
Mar 29, 2024
Merged

feat(term): ansi: move Wrap to Hardwrap and introduce Wrap#57
aymanbagabas merged 2 commits intomainfrom
smart-wrap

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
@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