1
0
textfmt/text.go

76 lines
1.1 KiB
Go
Raw Normal View History

2025-09-11 21:16:09 +02:00
package textfmt
2025-11-02 06:27:17 +01:00
import "strings"
2025-09-11 21:16:09 +02:00
func timesn(s string, n int) string {
2025-10-14 20:46:32 +02:00
if n < 0 {
return ""
}
2025-09-11 21:16:09 +02:00
ss := make([]string, n+1)
return strings.Join(ss, s)
}
2025-10-10 15:47:36 +02:00
func numDigits(n int) int {
2025-09-11 21:16:09 +02:00
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 {
2025-10-14 20:46:32 +02:00
if len([]rune(s)) >= n {
2025-10-10 15:47:36 +02:00
return s
}
2025-09-11 21:16:09 +02:00
n -= len([]rune(s))
2025-10-14 20:46:32 +02:00
return s + timesn("\u00a0", n)
}
2025-10-28 00:47:41 +01:00
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
}