hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit c66dc6c74fa3bbe308ccaade8c76071b49908129
parent 127d5feb32b466c4a0035e81f86684920dd88cfe
Author: Sebastian Boehm <sebastian@sometimesfood.org>
Date:   Fri, 26 Jun 2020 23:52:12 +0200

Add support for native Org dates in frontmatter

Diffstat:
Mparser/metadecoders/decoder.go | 11+++++++++++
Mparser/metadecoders/decoder_test.go | 1+
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git 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
 		}
diff --git a/parser/metadecoders/decoder_test.go b/parser/metadecoders/decoder_test.go
@@ -69,6 +69,7 @@ func TestUnmarshalToInterface(t *testing.T) {
 		{`[ "Brecker", "Blake", "Redman" ]`, JSON, []interface{}{"Brecker", "Blake", "Redman"}},
 		{`{ "a": "b" }`, JSON, expect},
 		{`#+a: b`, ORG, expect},
+		{`#+DATE: <2020-06-26 Fri>`, ORG, map[string]interface{}{"date": "2020-06-26"}},
 		{`a = "b"`, TOML, expect},
 		{`a: "b"`, YAML, expect},
 		{`a,b,c`, CSV, [][]string{{"a", "b", "c"}}},