1
0
textfmt/text.go

75 lines
1014 B
Go

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)
}
}