package textfmt import "strings" func timesn(s string, n int) string { if n < 0 { return "" } 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([]rune(s)) >= n { return s } n -= len([]rune(s)) return s + timesn("\u00a0", n) } func itemToParagraph(list Entry, itemText Txt, prefix ...string) Entry { p := Entry{ typ: paragraph, wrapWidth: list.wrapWidth, indent: list.indent, indentFirst: list.indentFirst, } if len(prefix) == 0 { p.text = itemText return p } var prefixLength int for _, p := range prefix { prefixLength += len([]rune(p)) + 1 } var prefixText []Txt for _, p := range prefix { prefixText = append(prefixText, Text(p)) } p.indent += prefixLength p.indentFirst -= prefixLength p.text.cat = append(prefixText, itemText) return p }