ref: b75af1551d03e829569adcc202cfd68bc0244b2b
dir: /format.go/
package main
import (
"strings"
"github.com/chzyer/readline"
)
func hyphenate(input string) string {
width := readline.GetScreenWidth()
result, remainder := hyphenateline(input, width)
var cresult string
for len([]rune(remainder)) > width {
cresult, remainder = hyphenateline(remainder, width)
result += cresult
}
return result + remainder
}
func hyphenateline(input string, width int) (string, string) {
if strings.HasPrefix(input, "\n") {
return "", input[1:]
}
begin, _, _ := strings.Cut(input, "\n")
hyphenate := false
if len([]rune(begin)) > width-1 {
begin = string([]rune(begin)[:width-1])
hyphenate = true
}
remainder := string([]rune(input)[len([]rune(begin)):])
if hyphenate == true && begin[width-2] != ' ' {
begin += "-"
}
if len(remainder) > width-1 {
begin += "\n"
}
return begin, remainder
}