54 lines
1.1 KiB
Go
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]) + "..."
|
|
}
|