diff options
Diffstat (limited to 'cmd/generate/main.go')
-rw-r--r-- | cmd/generate/main.go | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/cmd/generate/main.go b/cmd/generate/main.go index 249e2a5..dd226ad 100644 --- a/cmd/generate/main.go +++ b/cmd/generate/main.go @@ -5,6 +5,7 @@ import ( _ "embed" "fmt" "os" + "reflect" "sort" "strings" "time" @@ -40,6 +41,10 @@ var timeTagTmpl = template.Must(template.New("time.tag.tmpl"). Parse(`<time datetime="{{ .Machine }}" title="{{ .HumanVerbose }}">{{ .HumanPretty }}</time>`)) func mainWithError() error { + standups, err := ReadStandups("https://fosstodon.org", "lukeshu") + if err != nil { + return err + } contribs, err := ReadContribs("imworkingon/contribs.yml") if err != nil { return err @@ -67,6 +72,26 @@ func mainWithError() error { tmpl := template.Must(template.New("imworkingon.html.tmpl"). Funcs(template.FuncMap{ + "time": func() map[string]time.Weekday { + return map[string]time.Weekday{ + "Sunday": time.Sunday, + "Monday": time.Monday, + "Tuesday": time.Tuesday, + "Wednesday": time.Wednesday, + "Thursday": time.Thursday, + "Friday": time.Friday, + "Saturday": time.Saturday, + } + }, + "reverse": func(x any) any { + in := reflect.ValueOf(x) + l := in.Len() + out := reflect.MakeSlice(in.Type(), l, l) + for i := 0; i < l; i++ { + out.Index(l - (i + 1)).Set(in.Index(i)) + } + return out.Interface() + }, "timeTag": func(ts time.Time, prettyFmt string) (template.HTML, error) { ts = ts.Local() var out strings.Builder @@ -77,6 +102,13 @@ func mainWithError() error { }) return template.HTML(out.String()), err }, + "monthClass": func(m time.Month) string { + if m%2 == 0 { + return "even-month" + } else { + return "odd-month" + } + }, "md2html": MarkdownToHTML, "getUpstream": func(c Contribution) Upstream { // First try any of the documented upstreams. @@ -99,9 +131,11 @@ func mainWithError() error { Parse(htmlTmplStr)) var out bytes.Buffer if err := tmpl.Execute(&out, map[string]any{ - "Contribs": contribs, - "Tags": tags, - "Upstreams": upstreams, + "Contribs": contribs, + "Tags": tags, + "Upstreams": upstreams, + "Standups": standups, + "StandupCalendar": BuildCalendar(standups, func(status *MastodonStatus) Date { return DateOf(status.CreatedAt) }), }); err != nil { return err } |