class Gergich::Capture::EslintCapture

Constants

SEVERITY_MAP

Public Instance Methods

run(output) click to toggle source
# File lib/gergich/capture/eslint_capture.rb, line 8
def run(output)
  # e.g. "  4:21  error  Missing semicolon  semi"
  error_pattern = %r{\s\s+(\d+):\d+\s+(\w+)\s+(.*?)\s+[\w/-]+\n}
  pattern = %r{            # Example:
    ^([^\n]+)\n            #   jsapp/models/user.js
    ((#{error_pattern})+)  #     4:21  error  Missing semicolon  semi
  }mx

  output.scan(pattern).map { |file, errors|
    errors.scan(error_pattern).map { |line, severity, error|
      severity = SEVERITY_MAP[severity]
      { path: file, message: error, source: "eslint", position: line.to_i,
        severity: severity }
    }
  }.compact.flatten
end