package alpsbase import ( "html/template" "net/url" "strings" "time" "github.com/dustin/go-humanize" "github.com/emersion/go-imap" ) const ( inputDateLayout = "2006-01-02" inputTimeLayout = "15:04" ) var templateFuncs = template.FuncMap{ "tuple": func(values ...interface{}) []interface{} { return values }, "pathescape": func(s string) string { return url.PathEscape(s) }, "formatdate": func(t time.Time) string { return t.Format("Mon Jan 02 15:04") }, "formatflag": func(flag string) string { switch flag { case imap.SeenFlag: return "Seen" case imap.AnsweredFlag: return "Answered" case imap.FlaggedFlag: return "Starred" case imap.DraftFlag: return "Draft" default: return flag } }, "ismutableflag": func(flag string) bool { switch flag { case imap.AnsweredFlag, imap.DeletedFlag, imap.DraftFlag: return false default: return true } }, "join": func(l []string, sep string) string { return strings.Join(l, sep) }, "formatinputdate": func(t time.Time) string { if t.IsZero() { return "" } return t.Format(inputDateLayout) }, "formatinputtime": func(t time.Time) string { if t.IsZero() { return "" } return t.Format(inputTimeLayout) }, "humantime": humanize.Time, }