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