package textfmt import "strings" func timesn(s string, n int) string { ss := make([]string, n+1) return strings.Join(ss, s) } func numDigits(n int) int { if n == 0 { return 1 } var d int for n > 0 { d++ n /= 10 } return d } func maxLength(names []string) int { var m int for _, n := range names { if len([]rune(n)) > m { m = len([]rune(n)) } } return m } func padRight(s string, n int) string { if len(s) >= n { return s } n -= len([]rune(s)) return s + timesn(" ", n) } func singleLine(text string) string { var l []string p := strings.Split(text, "\n") for _, part := range p { part = strings.TrimSpace(part) if part == "" { continue } l = append(l, part) } return strings.Join(l, " ") } func writeLines(w *writer, txt string, indentFirst, indent int) { lines := strings.Split(txt, "\n") for i, l := range lines { if i > 0 { w.write("\n") } ind := indentFirst if i > 0 { ind = indent } w.write(timesn(" ", ind)) w.write(l) } }