sortutil.go

 1package gqlerrors
 2
 3import "bytes"
 4
 5type FormattedErrors []FormattedError
 6
 7func (errs FormattedErrors) Len() int {
 8	return len(errs)
 9}
10
11func (errs FormattedErrors) Swap(i, j int) {
12	errs[i], errs[j] = errs[j], errs[i]
13}
14
15func (errs FormattedErrors) Less(i, j int) bool {
16	mCompare := bytes.Compare([]byte(errs[i].Message), []byte(errs[j].Message))
17	lesserLine := errs[i].Locations[0].Line < errs[j].Locations[0].Line
18	eqLine := errs[i].Locations[0].Line == errs[j].Locations[0].Line
19	lesserColumn := errs[i].Locations[0].Column < errs[j].Locations[0].Column
20	if mCompare < 0 {
21		return true
22	}
23	if mCompare == 0 && lesserLine {
24		return true
25	}
26	if mCompare == 0 && eqLine && lesserColumn {
27		return true
28	}
29	return false
30}