45 lines
990 B
Go

package terminal_utils
import (
"strings"
"time"
)
/**
* Format a timestamp in human-readable form.
*/
func FormatDate(t time.Time) string {
return t.Format("Jan 2, 2006 15:04:05")
}
/**
* Wrap lines to fixed width, while respecting word breaks
*/
func WrapParagraph(paragraph string, width int) []string {
var lines []string
i := 0
for i < len(paragraph)-width {
// Find a word break at the end of the line to avoid splitting up words
end := i + width
for end > i && paragraph[end] != ' ' { // Look for a space, starting at the end
end -= 1
}
lines = append(lines, paragraph[i:end])
i = end + 1
}
lines = append(lines, paragraph[i:])
return lines
}
/**
* Return the text as a wrapped, indented block
*/
func WrapText(text string, width int) string {
paragraphs := strings.Split(text, "\n")
var lines []string
for _, paragraph := range paragraphs {
lines = append(lines, WrapParagraph(paragraph, width)...)
}
return strings.Join(lines, "\n ")
}