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}