Files
ainovel-clients/tui/layout.go
2026-03-08 12:02:46 +08:00

54 lines
1.1 KiB
Go

package tui
import "fmt"
// --- 辅助函数 ---
func renderField(label, value string) string {
if value == "" {
value = "-"
}
return fieldLabelStyle.Render(label) + fieldValueStyle.Render(value) + "\n"
}
func renderFlowField(flow string) string {
if flow == "" {
flow = "-"
}
label := fieldLabelStyle.Render("Flow")
if flow != "writing" && flow != "-" && flow != "" {
return label + highlightValueStyle.Render(flow) + "\n"
}
return label + fieldValueStyle.Render(flow) + "\n"
}
func renderHighlightField(label, value string) string {
return fieldLabelStyle.Render(label) + highlightValueStyle.Render(value) + "\n"
}
func formatNumber(n int) string {
if n == 0 {
return "0"
}
s := fmt.Sprintf("%d", n)
result := make([]byte, 0, len(s)+len(s)/3)
for i, c := range s {
if i > 0 && (len(s)-i)%3 == 0 {
result = append(result, ',')
}
result = append(result, byte(c))
}
return string(result)
}
func truncate(s string, max int) string {
runes := []rune(s)
if len(runes) <= max {
return s
}
if max < 4 {
return string(runes[:max])
}
return string(runes[:max-3]) + "..."
}