ref: f6808341cc21e3b4c27b6b69ae4a7a1e79fc92b5
dir: /format.go/
package main
import (
"strings"
"github.com/chzyer/readline"
)
func hyphenate(input string) string {
width := readline.GetScreenWidth()
var remainder = []rune(input)
var result []rune
for len(remainder) > width-1 {
if strings.HasPrefix(string(remainder), "\n") {
result = append(result, '\n')
remainder = remainder[1:]
continue
}
index := strings.Index(string(remainder), "\n")
// If a newline is found at or before the wrap position, break there.
if index != -1 && index <= width-1 {
result = append(result, remainder[:index]...)
remainder = remainder[index:]
continue
}
// otherwise we need to break the line
result = append(result, remainder[:width-1]...)
result = append(result, '\n')
remainder = remainder[width-1:]
}
result = append(result, remainder...)
return string(result)
}