From 156f8167360fffc318b47b797e7619beb21b0ff3 Mon Sep 17 00:00:00 2001 From: Markus Doits Date: Thu, 11 Aug 2016 17:06:34 +0200 Subject: refactor source code a little bit --- lib/pronto/eslint-npm.rb | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/pronto/eslint-npm.rb b/lib/pronto/eslint-npm.rb index a3219eb..afbae59 100644 --- a/lib/pronto/eslint-npm.rb +++ b/lib/pronto/eslint-npm.rb @@ -14,24 +14,18 @@ module Pronto def inspect(patch) @_repo_path ||= @patches.first.repo.path - offences = - Dir.chdir(@_repo_path) do - JSON.parse(`eslint #{Shellwords.escape(patch.new_file_full_path.to_s)} -f json`) + offences = run_eslint(patch) + clean_up_eslint_output(offences) + .map do |offence| + patch + .added_lines + .select { |line| line.new_lineno == offence['line'] } + .map { |line| new_message(offence, line) } end - - offences = - offences - .select { |offence| offence['errorCount'] > 0 || offence['warningCount'] > 0 } # no warning or error, no problem - .map { |offence| offence['messages'] } # get error messages for that file - .flatten - .select { |offence| offence['line'] } # for now ignore errors without a line number - - offences.map do |offence| - patch.added_lines.select { |line| line.new_lineno == offence['line'] } - .map { |line| new_message(offence, line) } - end end + private + def new_message(offence, line) path = line.patch.delta.new_file[:path] level = :warning @@ -42,5 +36,24 @@ module Pronto def js_file?(path) %w(.js .es6 .js.es6).include?(File.extname(path)) end + + def run_eslint(patch) + Dir.chdir(@_repo_path) do + JSON.parse( + `eslint #{Shellwords.escape(patch.new_file_full_path.to_s)} -f json` + ) + end + end + + # rubocop:disable Metrics/LineLength + def clean_up_eslint_output(output) + # 1. Filter out offences without a warning or error + # 2. Get the messages for that file + # 3. Ignore errors without a line number for now + output + .select { |offence| offence['errorCount'] + offence['warningCount'] > 0 } + .map { |offence| offence['messages'] } + .flatten.select { |offence| offence['line'] } + end end end -- cgit v1.2.3