Skip to content

Commit

Permalink
parser/metadecoders: Accumulate org keywords into arrays
Browse files Browse the repository at this point in the history
Closes #11743
  • Loading branch information
augustfengd authored and bep committed Jan 25, 2024
1 parent 8915343 commit 46f6187
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion docs/content/en/content-management/front-matter.md
Expand Up @@ -31,7 +31,7 @@ JSON

ORG
: a group of Org mode keywords in the format '`#+KEY: VALUE`'. Any line that does not start with `#+` ends the front matter section.
Keyword values can be either strings (`#+KEY: VALUE`) or a whitespace separated list of strings (`#+KEY[]: VALUE_1 VALUE_2`).
Array values can either be separated into multiple lines (`#+KEY: VALUE_1` and `#+KEY: VALUE_2`) or a whitespace separated list of strings (`#+KEY[]: VALUE_1 VALUE_2`).

### Example

Expand Down
5 changes: 2 additions & 3 deletions parser/metadecoders/decoder.go
Expand Up @@ -249,9 +249,8 @@ func (d Decoder) unmarshalORG(data []byte, v any) error {
k = strings.ToLower(k)
if strings.HasSuffix(k, "[]") {
frontMatter[k[:len(k)-2]] = strings.Fields(v)
} else if k == "tags" || k == "categories" || k == "aliases" {
log.Printf("warn: Please use '#+%s[]:' notation, automatic conversion is deprecated.", k)
frontMatter[k] = strings.Fields(v)
} else if strings.Contains(v, "\n") {
frontMatter[k] = strings.Split(v, "\n")
} else if k == "date" || k == "lastmod" || k == "publishdate" || k == "expirydate" {
frontMatter[k] = parseORGDate(v)
} else {
Expand Down
1 change: 1 addition & 0 deletions parser/metadecoders/decoder_test.go
Expand Up @@ -125,6 +125,7 @@ func TestUnmarshalToInterface(t *testing.T) {
{[]byte(``), JSON, map[string]any{}},
{[]byte(nil), JSON, map[string]any{}},
{[]byte(`#+a: b`), ORG, expect},
{[]byte("#+a: foo bar\n#+a: baz"), ORG, map[string]any{"a": []string{string("foo bar"), string("baz")}}},
{[]byte(`#+DATE: <2020-06-26 Fri>`), ORG, map[string]any{"date": "2020-06-26"}},
{[]byte(`#+LASTMOD: <2020-06-26 Fri>`), ORG, map[string]any{"lastmod": "2020-06-26"}},
{[]byte(`#+PUBLISHDATE: <2020-06-26 Fri>`), ORG, map[string]any{"publishdate": "2020-06-26"}},
Expand Down

0 comments on commit 46f6187

Please sign in to comment.