"time"
)
+func interfaceToTime(i interface{}) time.Time {
+ switch s := i.(type) {
+ case time.Time:
+ return s
+ case string:
+ d, e := stringToDate(s)
+ if e == nil {
+ return d
+ }
+ errorf("Invalid Time/Date format")
+ default:
+ errorf("Only Time is supported for this key")
+ }
+
+ return *new(time.Time)
+}
+
func interfaceToStringToDate(i interface{}) time.Time {
s := interfaceToString(i)
- if d, e := parseDateWith(s, []string{
+ if d, e := stringToDate(s); e == nil {
+ return d
+ }
+
+ return time.Unix(0, 0)
+}
+
+func stringToDate(s string) (time.Time, error) {
+ return parseDateWith(s, []string{
time.RFC3339,
time.RFC1123Z,
time.RFC1123,
"02 Jan 06 15:04 MST",
"2006-01-02",
"02 Jan 2006",
- }); e == nil {
- return d
- }
-
- return time.Unix(0, 0)
+ })
}
// TODO remove this and return a proper error.
return 0
}
-func interfaceToTime(i interface{}) time.Time {
- switch s := i.(type) {
- case time.Time:
- return s
- default:
- errorf("Only Time is supported for this key")
- }
-
- return *new(time.Time)
-}
-
func interfaceToString(i interface{}) string {
switch s := i.(type) {
case string:
case "keywords":
page.Keywords = interfaceArrayToStringArray(v)
case "date", "pubdate":
- page.Date = interfaceToStringToDate(v)
+ page.Date = interfaceToTime(v)
case "draft":
page.Draft = interfaceToBool(v)
case "layout":
for i, u := range vvv {
a[i] = interfaceToString(u)
}
- page.Params[strings.ToLower(k)] = a
+ page.Params[loki] = a
}
}
}
func TestDegenerateDateFrontMatter(t *testing.T) {
p, _ := ReadFrom(strings.NewReader(PAGE_WITH_INVALID_DATE), "page/with/invalid/date")
- if p.Date != time.Unix(0, 0) {
- t.Fatalf("Date should be set to computer epoch. Got: %s", p.Date)
+ if p.Date != *new(time.Time) {
+ t.Fatalf("Date should be set to time.Time zero value. Got: %s", p.Date)
}
}