index.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. 'use strict'
  2. module.exports = statistics
  3. // Get stats for a file, list of files, or list of messages.
  4. function statistics(files) {
  5. var result = {true: 0, false: 0, null: 0}
  6. count(files)
  7. return {
  8. fatal: result.true,
  9. nonfatal: result.false + result.null,
  10. warn: result.false,
  11. info: result.null,
  12. total: result.true + result.false + result.null
  13. }
  14. function count(value) {
  15. if (value) {
  16. if (value[0] && value[0].messages) {
  17. // Multiple vfiles
  18. countInAll(value)
  19. } else {
  20. // One vfile / messages
  21. countAll(value.messages || value)
  22. }
  23. }
  24. }
  25. function countInAll(files) {
  26. var length = files.length
  27. var index = -1
  28. while (++index < length) {
  29. count(files[index].messages)
  30. }
  31. }
  32. function countAll(messages) {
  33. var length = messages.length
  34. var index = -1
  35. var fatal
  36. while (++index < length) {
  37. fatal = messages[index].fatal
  38. result[fatal === null || fatal === undefined ? null : Boolean(fatal)]++
  39. }
  40. }
  41. }