go-ansi-parser
go-ansi-parser copied to clipboard
WordWrap support
Hello 👋
First, thank you for an amazingly useful project 🎉
It would be fantastic if there was a WordWrap
function that would break up strings by a max-length, but retain the colour stop at EOL and resumed the colouring on the next line when wrapping
(using pseudo-vars rather than ANSI codes directly here)
example := "${BLUE}this is a pretty long string that should ${BOLD}MUST be wrapped${NO_BOLD}${RESET}"
if it was broken up between MUST
and be wrapped
the ansi would look like this
example := "${BLUE}this is a pretty long string that should ${BOLD}MUST${RESET}\n${BLUE}${BOLD} be wrapped${RESET}"
Basically stopping colouring at WordWrap, and the resume the previous colouring on the 2nd line, to retain colouring and formatting
Sounds like a nice idea to me! I'd be very happy to accept a PR for this 👍
I might take a stab at it - do you have any pointers on how to achieve it? I'm not super familiar with the internals of this package or it's dependencies
Yeah, it's all about the Parse function. Line 277 reads characters up to the terminating escape code. You'll need to keep track of the current line count and work out if the current iteration will break that limit.
Thank you, I'll give it a try next week at work if I got time 👌