Files
royalroadupdates/internal/formatter/table.go
2026-07-12 02:49:54 +02:00

34 lines
722 B
Go

package formatter
import (
"fmt"
"io"
"strings"
"royalroadupdates/internal/royalroad"
)
// PrintTable writes a plain-text aligned table of stories to w.
func PrintTable(w io.Writer, stories []royalroad.Story) {
if len(stories) == 0 {
return
}
nameHeader := "Story Name"
updateHeader := "Last Update"
maxNameLen := len(nameHeader)
for _, s := range stories {
if l := len(s.Name); l > maxNameLen {
maxNameLen = l
}
}
fmt.Fprintf(w, "%-*s %s\n", maxNameLen, nameHeader, updateHeader)
fmt.Fprintf(w, "%s %s\n", strings.Repeat("-", maxNameLen), strings.Repeat("-", len(updateHeader)))
for _, s := range stories {
fmt.Fprintf(w, "%-*s %s\n", maxNameLen, s.Name, Relative(s.DateModified))
}
}