Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Handle toml.LocalDate and toml.LocalDateTime in front matter
- Loading branch information
There are no files selected for viewing
|
|
@@ -17,6 +17,10 @@ import ( |
|
|
"strings" |
|
|
"time" |
|
|
|
|
|
"github.com/spf13/cast" |
|
|
|
|
|
toml "github.com/pelletier/go-toml/v2" |
|
|
|
|
|
"github.com/go-playground/locales" |
|
|
) |
|
|
|
|
|
@@ -125,3 +129,13 @@ func (f TimeFormatter) Format(t time.Time, layout string) string { |
|
|
|
|
|
return s |
|
|
} |
|
|
|
|
|
func ToTimeInDefaultLocationE(i interface{}, location *time.Location) (tim time.Time, err error) { |
|
|
switch vv := i.(type) { |
|
|
case toml.LocalDate: |
|
|
return vv.AsTime(location), nil |
|
|
case toml.LocalDateTime: |
|
|
return vv.AsTime(location), nil |
|
|
} |
|
|
return cast.ToTimeInDefaultLocationE(i, location) |
|
|
} |
|
|
@@ -104,6 +104,7 @@ expiryDate=%s |
|
|
if quoted { |
|
|
return fmt.Sprintf("%q", d) |
|
|
} |
|
|
|
|
|
return d |
|
|
} |
|
|
|
|
|
@@ -124,7 +125,6 @@ expiryDate=%s |
|
|
"short-date-yaml-qouted.nn.md", createPageContent(pageTemplYaml, shortDateTempl, true), |
|
|
"long-date-yaml-unqouted.en.md", createPageContent(pageTemplYaml, longDateTempl, false), |
|
|
"long-date-yaml-unqouted.nn.md", createPageContent(pageTemplYaml, longDateTempl, false), |
|
|
|
|
|
// TOML |
|
|
"short-date-toml-unqouted.en.md", createPageContent(pageTemplTOML, shortDateTempl, false), |
|
|
"short-date-toml-unqouted.nn.md", createPageContent(pageTemplTOML, shortDateTempl, false), |
|
|
@@ -180,8 +180,8 @@ ExpiryDate: 2099-07-13 15:28:01 +0000 UTC` |
|
|
// TOML |
|
|
// These fails: TOML (Burnt Sushi) defaults to local timezone. |
|
|
// TODO(bep) check go-toml |
|
|
// b.AssertFileContent("public/en/short-date-toml-unqouted/index.html", expectShortDateEn) |
|
|
// b.AssertFileContent("public/nn/short-date-toml-unqouted/index.html", expectShortDateNn) |
|
|
b.AssertFileContent("public/en/short-date-toml-unqouted/index.html", expectShortDateEn) |
|
|
b.AssertFileContent("public/nn/short-date-toml-unqouted/index.html", expectShortDateNn) |
|
|
b.AssertFileContent("public/en/short-date-toml-qouted/index.html", expectShortDateEn) |
|
|
b.AssertFileContent("public/nn/short-date-toml-qouted/index.html", expectShortDateNn) |
|
|
|
|
|
|
|
|
@@ -17,6 +17,7 @@ import ( |
|
|
"strings" |
|
|
"time" |
|
|
|
|
|
"github.com/gohugoio/hugo/common/htime" |
|
|
"github.com/gohugoio/hugo/common/paths" |
|
|
|
|
|
"github.com/gohugoio/hugo/common/loggers" |
|
|
@@ -130,7 +131,7 @@ func dateAndSlugFromBaseFilename(location *time.Location, name string) (time.Tim |
|
|
return time.Time{}, "" |
|
|
} |
|
|
|
|
|
d, err := cast.ToTimeInDefaultLocationE(withoutExt[:10], location) |
|
|
d, err := htime.ToTimeInDefaultLocationE(withoutExt[:10], location) |
|
|
if err != nil { |
|
|
return time.Time{}, "" |
|
|
} |
|
|
@@ -371,7 +372,7 @@ func (f *frontmatterFieldHandlers) newDateFieldHandler(key string, setter func(d |
|
|
return false, nil |
|
|
} |
|
|
|
|
|
date, err := cast.ToTimeInDefaultLocationE(v, d.Location) |
|
|
date, err := htime.ToTimeInDefaultLocationE(v, d.Location) |
|
|
if err != nil { |
|
|
return false, nil |
|
|
} |
|
|
|
|
|
@@ -55,7 +55,7 @@ func (ns *Namespace) AsTime(v interface{}, args ...interface{}) (interface{}, er |
|
|
} |
|
|
} |
|
|
|
|
|
return cast.ToTimeInDefaultLocationE(v, loc) |
|
|
return htime.ToTimeInDefaultLocationE(v, loc) |
|
|
|
|
|
} |
|
|
|
|
|
|