From 6178e6ff933973538d1c5fcd91330c8a1e0109c4 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Sun, 2 Jan 2022 20:44:04 -0500 Subject: [PATCH] root does not marshal TSs on todos, always on schedules, dones. Test. --- pttodo/root.go | 14 ++++++++++++++ pttodo/root_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/pttodo/root.go b/pttodo/root.go index 076cb7f..0ba432c 100644 --- a/pttodo/root.go +++ b/pttodo/root.go @@ -36,3 +36,17 @@ func (root *Root) MergeIn(root2 Root) { } } } + +func (root Root) MarshalYAML() (interface{}, error) { + for i := range root.Todo { + root.Todo[i].writeTS = false + } + for i := range root.Scheduled { + root.Scheduled[i].writeTS = true + } + for i := range root.Done { + root.Done[i].writeTS = true + } + type Alt Root + return (Alt)(root), nil +} diff --git a/pttodo/root_test.go b/pttodo/root_test.go index 953957d..7fc6546 100644 --- a/pttodo/root_test.go +++ b/pttodo/root_test.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "strconv" + "strings" "testing" "time" @@ -145,3 +146,28 @@ todo: t.Fatalf("want \n\t%+v, got \n\t%+v", rootWant, root0) } } + +func TestRootMarshalYAMLWriteTS(t *testing.T) { + root := Root{ + Todo: []Todo{Todo{Todo: "todo", TS: 1, writeTS: true}}, + Scheduled: []Todo{Todo{Todo: "sched", TS: 2, writeTS: false, Schedule: "2099-01-01"}}, + Done: []Todo{Todo{Todo: "done", TS: 3, writeTS: false}}, + } + got, err := yaml.Marshal(root) + if err != nil { + t.Fatal(err) + } + if strings.TrimSpace(string(got)) != strings.TrimSpace(` +todo: +- todo +scheduled: +- todo: sched + schedule: "2099-01-01" + ts: Wed Dec 31 19:00:02 EST 1969 +done: +- todo: done + ts: Wed Dec 31 19:00:03 EST 1969 + `) { + t.Fatal(string(got)) + } +}