summaryrefslogtreecommitdiffstats
path: root/parser
diff options
context:
space:
mode:
authorNiklas Fasching <niklas.fasching@gmail.com>2019-06-04 12:21:48 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-06-08 10:13:00 +0200
commitfad183c4ae55069be9246e64ab1c8b2f43d08d06 (patch)
tree88763721961931d9573d8979f00e1ff4ce77fe83 /parser
parentb6867bf8068fcaaddf1cb7478f4d52a9c1be1411 (diff)
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.
Diffstat (limited to 'parser')
-rw-r--r--parser/metadecoders/decoder.go5
1 files changed, 4 insertions, 1 deletions
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