aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-02-18 20:33:11 +0100
committerMartin Polden <mpolden@mpolden.no>2018-02-18 20:34:06 +0100
commit04014653d306d3da72d2214697c28da22e1dc959 (patch)
tree72c6a775b5ecba57b5b549fb288427d9e00a0695
parent17d8a4daa768ebeef3a8b78b782b7f1def79b12a (diff)
Simplify
-rw-r--r--queue/queue.go19
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()
}