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)) } }