package readline

import "strings"

// WrapText - Wraps a text given a specified width, and returns the formatted
// string as well the number of lines it will occupy
func WrapText(text string, lineWidth int) (wrapped string, lines int) {
	words := strings.Fields(text)
	if len(words) == 0 {
		return
	}
	wrapped = words[0]
	spaceLeft := lineWidth - len(wrapped)
	// There must be at least a line
	if text != "" {
		lines++
	}
	for _, word := range words[1:] {
		if len(word)+1 > spaceLeft {
			lines++
			wrapped += "\n" + word
			spaceLeft = lineWidth - len(word)
		} else {
			wrapped += " " + word
			spaceLeft -= 1 + len(word)
		}
	}
	return
}