diff options
| author | Paul Buetow <paul@buetow.org> | 2024-12-25 23:35:14 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2024-12-25 23:35:14 +0200 |
| commit | 578ed10948186d444c7f05e664794a02d25a06f2 (patch) | |
| tree | f74ea54c93b37bfe4ec7c3872f76016c28c69ffd | |
| parent | 35f393acae883eecdac98d2fceb85961f05ca848 (diff) | |
use iter.Seq2
| -rw-r--r-- | internal/entry/entry.go | 1 | ||||
| -rw-r--r-- | internal/summary/summary.go | 27 |
2 files changed, 12 insertions, 16 deletions
diff --git a/internal/entry/entry.go b/internal/entry/entry.go index cfec5fe..5d3cb1b 100644 --- a/internal/entry/entry.go +++ b/internal/entry/entry.go @@ -45,6 +45,7 @@ func (s State) String() string { } var Zero = Entry{} +var Zeroes = []Entry{} type Entry struct { Path string diff --git a/internal/summary/summary.go b/internal/summary/summary.go index 4c94cee..a502d06 100644 --- a/internal/summary/summary.go +++ b/internal/summary/summary.go @@ -23,22 +23,17 @@ func Run(ctx context.Context, args config.Args) error { return nil } -type maybeEntry struct { - en entry.Entry - err error -} - -func matchingEntries(args config.Args) iter.Seq[maybeEntry] { - return func(yield func(maybeEntry) bool) { +func matchingEntries(args config.Args) iter.Seq2[entry.Entry, error] { + return func(yield func(entry.Entry, error) bool) { for _, dateStr := range args.SummaryFor { glob := filepath.Join(args.GosDir, "db/platforms/*/", fmt.Sprintf("*%s*-??????.posted", dateStr)) paths, err := filepath.Glob(glob) - if err != nil && !yield(maybeEntry{err: err}) { + if err != nil && !yield(entry.Zero, err) { return } for _, path := range paths { en, err := entry.New(path) - if !yield(maybeEntry{en, err}) { + if !yield(en, err) { return } } @@ -49,22 +44,22 @@ func matchingEntries(args config.Args) iter.Seq[maybeEntry] { func deduppedEntries(args config.Args) ([]entry.Entry, error) { dedup := make(map[string]entry.Entry) - for maybe := range matchingEntries(args) { - if maybe.err != nil { - return []entry.Entry{}, maybe.err + for en, err := range matchingEntries(args) { + if err != nil { + return entry.Zeroes, err } - if en, ok := dedup[maybe.en.Name()]; ok { + if other, ok := dedup[en.Name()]; ok { // If two conflicting entries (e.g. same post for mastodon and linkedin) // select the one which was modified latest. - after, err := en.After(maybe.en) + after, err := other.After(en) if err != nil { - return []entry.Entry{}, err + return entry.Zeroes, err } if after { continue } } - dedup[maybe.en.Name()] = maybe.en + dedup[en.Name()] = en } entries := make([]entry.Entry, len(dedup)) |
