diff --git a/parser/metadecoders/decoder.go b/parser/metadecoders/decoder.go index 5dac23f03..eb33f1ee9 100644 --- a/parser/metadecoders/decoder.go +++ b/parser/metadecoders/decoder.go @@ -251,6 +251,10 @@ func (d Decoder) unmarshalORG(data []byte, v any) error { frontMatter[k[:len(k)-2]] = strings.Fields(v) } else if strings.Contains(v, "\n") { frontMatter[k] = strings.Split(v, "\n") + } else if k == "filetags" { + trimmed := strings.TrimPrefix(v, ":") + trimmed = strings.TrimSuffix(trimmed, ":") + frontMatter[k] = strings.Split(trimmed, ":") } else if k == "date" || k == "lastmod" || k == "publishdate" || k == "expirydate" { frontMatter[k] = parseORGDate(v) } else { diff --git a/parser/metadecoders/decoder_test.go b/parser/metadecoders/decoder_test.go index 49f7868cc..f0ebe57e5 100644 --- a/parser/metadecoders/decoder_test.go +++ b/parser/metadecoders/decoder_test.go @@ -131,6 +131,8 @@ func TestUnmarshalToInterface(t *testing.T) { {[]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(`#+FILETAGS: :work:`), ORG, map[string]any{"filetags": []string{"work"}}}, + {[]byte(`#+FILETAGS: :work:fun:`), ORG, map[string]any{"filetags": []string{"work", "fun"}}}, {[]byte(`#+PUBLISHDATE: <2020-06-26 Fri>`), ORG, map[string]any{"publishdate": "2020-06-26"}}, {[]byte(`#+EXPIRYDATE: <2020-06-26 Fri>`), ORG, map[string]any{"expirydate": "2020-06-26"}}, {[]byte(`a = "b"`), TOML, expect},