index.js 614 B

1234567891011121314151617181920212223242526272829303132333435
  1. 'use strict'
  2. module.exports = sort
  3. var severities = {
  4. true: 2,
  5. false: 1,
  6. null: 0,
  7. undefined: 0
  8. }
  9. function sort(file) {
  10. file.messages.sort(comparator)
  11. return file
  12. }
  13. function comparator(a, b) {
  14. return (
  15. check(a, b, 'line') ||
  16. check(a, b, 'column') ||
  17. severities[b.fatal] - severities[a.fatal] ||
  18. compare(a, b, 'source') ||
  19. compare(a, b, 'ruleId') ||
  20. compare(a, b, 'reason') ||
  21. 0
  22. )
  23. }
  24. function check(a, b, property) {
  25. return (a[property] || 0) - (b[property] || 0)
  26. }
  27. function compare(a, b, property) {
  28. return (a[property] || '').localeCompare(b[property] || '')
  29. }