diff options
author | Martin Polden <mpolden@mpolden.no> | 2018-02-18 20:33:11 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2018-02-18 20:34:06 +0100 |
commit | 04014653d306d3da72d2214697c28da22e1dc959 (patch) | |
tree | 72c6a775b5ecba57b5b549fb288427d9e00a0695 | |
parent | 17d8a4daa768ebeef3a8b78b782b7f1def79b12a (diff) |
Simplify
-rw-r--r-- | queue/queue.go | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/queue/queue.go b/queue/queue.go index 7051773..16e3a37 100644 --- a/queue/queue.go +++ b/queue/queue.go @@ -42,7 +42,9 @@ func New(site Site, files []os.FileInfo) Queue { func Read(sites []Site, r io.Reader) ([]Queue, error) { scanner := bufio.NewScanner(r) - queues := make(map[string]*Queue) + var qs []Queue + // Store mapping from site name to queue index in qs, as we only want to return a single queue per site + indices := map[string]int{} for scanner.Scan() { fields := strings.Fields(scanner.Text()) if len(fields) < 2 { @@ -52,11 +54,13 @@ func Read(sites []Site, r io.Reader) ([]Queue, error) { if err != nil { return nil, err } - q := queues[site.Name] - if q == nil { - q = &Queue{Site: site} - queues[site.Name] = q + i, ok := indices[site.Name] + if !ok { + qs = append(qs, Queue{Site: site}) + i = len(qs) - 1 + indices[site.Name] = i } + q := &qs[i] item, err := newItem(fields[1], time.Time{}, q.itemParser) if err != nil { item.reject(err.Error()) @@ -65,11 +69,6 @@ func Read(sites []Site, r io.Reader) ([]Queue, error) { } q.Items = append(q.Items, item) } - var qs []Queue - for _, q := range queues { - qs = append(qs, *q) - } - sort.Slice(qs, func(i, j int) bool { return qs[i].Site.Name < qs[j].Site.Name }) return qs, scanner.Err() } |