func SortIssueChan(issues chan *Issue, order []string) chan *Issue {
	out := make(chan *Issue, 1000000)
	sorted := &sortedIssues{
		issues: []*Issue{},
		order:  order,
	}
	go func() {
		for issue := range issues {
			sorted.issues = append(sorted.issues, issue)
		}
		sort.Sort(sorted)
		for _, issue := range sorted.issues {
			out <- issue
		}
		close(out)
	}()
	return out
}
func SortIssueChan(issues chan *Issue, order []string) chan *Issue {
	out := make(chan *Issue, 1000000)
	sorted := &sortedIssues{
		issues: []*Issue{},
		order:  order,
	}
	go func() {
		for issue := range issues {
			sorted.issues = append(sorted.issues, issue)
		}
		sort.Sort(sorted)
		for _, issue := range sorted.issues {
			out <- issue
		}
		close(out)
	}()
	return out
}
func SortIssueChan ( issues chan * Issue , order [ ] string ) chan * Issue { out := make ( chan * Issue , 1000000 ) sorted := & sortedIssues { issues : [ ] * Issue { } , order : order , } go func ( ) { for issue := range issues { sorted . issues = append ( sorted . issues , issue ) } sort . Sort ( sorted ) for _ , issue := range sorted . issues { out <- issue } close ( out ) } ( ) return out }
// SortIssueChan reads issues from one channel, sorts them, and returns them to another
// channel
SortIssueChan reads issues from one channel sorts them and returns them to another channel