From fad183c4ae55069be9246e64ab1c8b2f43d08d06 Mon Sep 17 00:00:00 2001 From: Niklas Fasching Date: Tue, 4 Jun 2019 12:21:48 +0200 Subject: [PATCH] Refactor Org mode front matter: Introduce '#+KEY[]:' array notation Hugo requires some front matter values to be arrays (e.g. for taxonomies). Org mode front matter syntax (`#+KEY: VALUE`) does however not support anything but string values normally - which is why goorgeous hardcoded the values for the keys tags, categories & aliases to be parsed as string arrays. This causes problems with custom taxonomies. A simple thing we can do instead is make keywords ending in '[]' be parsed as string arrays. --- parser/metadecoders/decoder.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parser/metadecoders/decoder.go b/parser/metadecoders/decoder.go index af2e19f8f..e7b0e3c97 100644 --- a/parser/metadecoders/decoder.go +++ b/parser/metadecoders/decoder.go @@ -187,7 +187,10 @@ func (d Decoder) unmarshalORG(data []byte, v interface{}) error { frontMatter := make(map[string]interface{}, len(document.BufferSettings)) for k, v := range document.BufferSettings { k = strings.ToLower(k) - if k == "tags" || k == "categories" || k == "aliases" { + if strings.HasSuffix(k, "[]") { + frontMatter[k[:len(k)-2]] = strings.Fields(v) + } 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 { frontMatter[k] = v