34 lines
722 B
Go
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))
|
|
}
|
|
}
|