URI: 
       Handle toml.LocalDate and toml.LocalDateTime in front matter - hugo - [fork] hugo port for 9front
  HTML git clone git@git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
   DIR commit b5de37ee793c01f2acccdea7119be05c4182723f
   DIR parent bf301daf158e5e9673ad5f457ea3a264315942b5
  HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Wed, 28 Jul 2021 18:02:42 +0200
       
       Handle toml.LocalDate and toml.LocalDateTime in front matter
       
       See #8801
       
       Diffstat:
         M common/htime/time.go                |      14 ++++++++++++++
         M hugolib/dates_test.go               |       6 +++---
         M resources/page/pagemeta/page_front… |       5 +++--
         M tpl/time/time.go                    |       2 +-
       
       4 files changed, 21 insertions(+), 6 deletions(-)
       ---
   DIR diff --git 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)
       +}
   DIR diff --git 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)
        
   DIR diff --git 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
                        }
   DIR diff --git 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)
        
        }