summaryrefslogtreecommitdiffstats
path: root/parser/metadecoders/decoder.go
diff options
context:
space:
mode:
authorSebastian Boehm <sebastian@sometimesfood.org>2020-06-26 23:52:12 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-06-30 10:30:55 +0200
commitc66dc6c74fa3bbe308ccaade8c76071b49908129 (patch)
treef56d533d9b74c82938e233d8eb9023ca638b7a29 /parser/metadecoders/decoder.go
parent127d5feb32b466c4a0035e81f86684920dd88cfe (diff)
Add support for native Org dates in frontmatter
Diffstat (limited to 'parser/metadecoders/decoder.go')
-rw-r--r--parser/metadecoders/decoder.go11
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
}