shithub: hugo

Download patch

ref: fad183c4ae55069be9246e64ab1c8b2f43d08d06
parent: b6867bf8068fcaaddf1cb7478f4d52a9c1be1411
author: Niklas Fasching <[email protected]>
date: Tue Jun 4 08:21:48 EDT 2019

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.

--- a/parser/metadecoders/decoder.go
+++ b/parser/metadecoders/decoder.go
@@ -187,7 +187,10 @@
 	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