summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/htime/time.go14
-rw-r--r--hugolib/dates_test.go6
-rw-r--r--resources/page/pagemeta/page_frontmatter.go5
-rw-r--r--tpl/time/time.go2
4 files changed, 21 insertions, 6 deletions
diff --git a/common/htime/time.go b/common/htime/time.go
index cd294b3a2..f5a19b961 100644
--- a/common/htime/time.go
+++ b/common/htime/time.go
@@ -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)
+}
diff --git a/hugolib/dates_test.go b/hugolib/dates_test.go
index 6fe3adfa7..c9a33e0f8 100644
--- a/hugolib/dates_test.go
+++ b/hugolib/dates_test.go
@@ -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)
diff --git a/resources/page/pagemeta/page_frontmatter.go b/resources/page/pagemeta/page_frontmatter.go
index 8e03c5f88..d473c69ce 100644
--- a/resources/page/pagemeta/page_frontmatter.go
+++ b/resources/page/pagemeta/page_frontmatter.go
@@ -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
}
diff --git a/tpl/time/time.go b/tpl/time/time.go
index a59d85b06..f91bf1047 100644
--- a/tpl/time/time.go
+++ b/tpl/time/time.go
@@ -55,7 +55,7 @@ func (ns *Namespace) AsTime(v interface{}, args ...interface{}) (interface{}, er
}
}
- return cast.ToTimeInDefaultLocationE(v, loc)
+ return htime.ToTimeInDefaultLocationE(v, loc)
}