项目文件夹

文件
2026-07-13 13:00:08 +08:00

64 行
2.2 KiB
Go

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
package cli
import (
"fmt"
"strings"
"reasonix/internal/i18n"
"reasonix/internal/memory"
)
func renderMemory(width int, set *memory.Set) string {
var b strings.Builder
fmt.Fprintf(&b, "%s\n", viewHeader("%s", strings.TrimRight(i18n.M.MemoryLoaded, ":")))
if len(set.Docs) > 0 {
b.WriteString(viewSubhead("docs") + "\n")
for _, d := range set.Docs {
scope := "(" + string(d.Scope) + ")"
fmt.Fprintf(&b, " %s %s\n", viewMeta(scope), viewCompactPath(d.Path, viewBudget(width, 2+visibleWidth(scope)+2)))
}
}
facts := set.Store.List()
archived := set.Store.ListArchived()
hasSaved := len(facts) > 0 || strings.TrimSpace(set.Index) != ""
if hasSaved {
if len(set.Docs) > 0 {
b.WriteByte('\n')
}
header := strings.TrimRight(strings.TrimSpace(i18n.M.MemorySavedHeader), ":")
b.WriteString(viewSubhead(viewCompactText(header, viewBudget(width, 2))) + "\n")
for _, f := range facts {
label := f.Title
if label == "" {
label = f.Description
}
meta := ""
if label != "" {
meta = " " + viewMeta(viewCompactText(label, min(40, viewBudget(width, 2+visibleWidth(f.Name)+2))))
}
fmt.Fprintf(&b, " %s%s\n", viewCompactText(f.Name, viewBudget(width, 2+visibleWidth(meta))), meta)
}
}
if len(archived) > 0 {
if len(set.Docs) > 0 || hasSaved {
b.WriteByte('\n')
}
b.WriteString(viewSubhead(viewCompactText(i18n.M.ListMemoryArchived, viewBudget(width, 2))) + "\n")
for _, f := range archived {
meta := string(f.Type)
if !f.ArchivedAt.IsZero() {
meta += " · " + f.ArchivedAt.Format("2006-01-02 15:04:05Z")
}
name := viewCompactText(f.Name, viewBudget(width, 2))
fmt.Fprintf(&b, " %s %s\n", name, viewMeta(viewCompactText(meta, min(48, viewBudget(width, 2+visibleWidth(name)+2)))))
fmt.Fprintf(&b, " %s\n", viewCompactPath(f.Path, viewBudget(width, 4)))
}
}
if (hasSaved || len(archived) > 0) && set.Store.Dir != "" {
fmt.Fprintf(&b, " %s\n", viewCompactText(strings.TrimSpace(fmt.Sprintf(i18n.M.MemoryStoredUnderFmt, set.Store.Dir)), viewBudget(width, 2)))
}
b.WriteString("\n")
b.WriteString(viewHint(viewCompactText(i18n.M.MemoryEditHint, viewBudget(width, 2))))
return strings.TrimRight(b.String(), "\n")
}