]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
parser: Handle org-mode filetags as slice
authorDominik Süß <dominik@suess.wtf>
Sun, 9 Feb 2025 21:40:28 +0000 (22:40 +0100)
committerGitHub <noreply@github.com>
Sun, 9 Feb 2025 21:40:28 +0000 (22:40 +0100)
This adds support for filetags by slicing them according to [the org mode tag
specification](https://orgmode.org/guide/Tags.html).

Can be used to create taxonomies based on org-mode tags

parser/metadecoders/decoder.go
parser/metadecoders/decoder_test.go

index 5dac23f0328da429164bc5e271abab87233b67eb..eb33f1ee9211a9a3121338893befe073eea52204 100644 (file)
@@ -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 {
index 49f7868cc182c50f479ee31f322c17294937efce..f0ebe57e57ce3e53426c929fcf0a4328c72311f1 100644 (file)
@@ -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},