package toc
import (
"fmt"
"html"
"strings"
)
func (m *Manager) Render() (string, error) {
categories, err := m.storage.ListCategories()
if err != nil {
return "", err
}
entriesByCategory, err := m.storage.GetEntriesByCategory()
if err != nil {
return "", err
}
var sb strings.Builder
sb.WriteString("đ é˘éçŽĺ˝\n")
sb.WriteString("âââââââââââââââ\n\n")
if len(categories) == 0 {
sb.WriteString("ćć ĺçąť")
return sb.String(), nil
}
for _, cat := range categories {
entries := entriesByCategory[cat.Name]
sb.WriteString(fmt.Sprintf("đ %s", html.EscapeString(cat.Name)))
if len(entries) > 0 {
sb.WriteString(fmt.Sprintf(" (%d)", len(entries)))
}
sb.WriteString("\n")
if len(entries) == 0 {
sb.WriteString(" ćć ĺ
厚\n")
} else {
for _, entry := range entries {
sb.WriteString(fmt.Sprintf(" ⢠%s\n", entry.Link, html.EscapeString(entry.Title)))
}
}
sb.WriteString("\n")
}
sb.WriteString("âââââââââââââââ\n")
return sb.String(), nil
}