diff options
author | Sebastian Boehm <sebastian@sometimesfood.org> | 2020-06-26 23:52:12 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-06-30 10:30:55 +0200 |
commit | c66dc6c74fa3bbe308ccaade8c76071b49908129 (patch) | |
tree | f56d533d9b74c82938e233d8eb9023ca638b7a29 /parser/metadecoders/decoder.go | |
parent | 127d5feb32b466c4a0035e81f86684920dd88cfe (diff) |
Add support for native Org dates in frontmatter
Diffstat (limited to 'parser/metadecoders/decoder.go')
-rw-r--r-- | parser/metadecoders/decoder.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/parser/metadecoders/decoder.go b/parser/metadecoders/decoder.go index f90dc5703..1a4a57076 100644 --- a/parser/metadecoders/decoder.go +++ b/parser/metadecoders/decoder.go @@ -18,6 +18,7 @@ import ( "encoding/csv" "encoding/json" "fmt" + "regexp" "strings" "github.com/gohugoio/hugo/common/herrors" @@ -203,6 +204,14 @@ func (d Decoder) unmarshalCSV(data []byte, v interface{}) error { } +func parseORGDate(s string) string { + r := regexp.MustCompile(`[<\[](\d{4}-\d{2}-\d{2}) .*[>\]]`) + if m := r.FindStringSubmatch(s); m != nil { + return m[1] + } + return s +} + func (d Decoder) unmarshalORG(data []byte, v interface{}) error { config := org.New() config.Log = jww.WARN @@ -218,6 +227,8 @@ func (d Decoder) unmarshalORG(data []byte, v interface{}) error { } else if k == "tags" || k == "categories" || k == "aliases" { jww.WARN.Printf("Please use '#+%s[]:' notation, automatic conversion is deprecated.", k) frontMatter[k] = strings.Fields(v) + } else if k == "date" { + frontMatter[k] = parseORGDate(v) } else { frontMatter[k] = v } |