class SimpleCovLinterFormatter::SummaryBuilder
Constants
- PERCENT_TEXT_SIZE
Public Class Methods
new(lines)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 5 def initialize(lines) @lines = lines @largest_file_name = 0 @largest_percentage = 0 end
Public Instance Methods
build()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 11 def build body = build_body return body if body == "" "#{build_title}\n#{body}#{divider}" end
Private Instance Methods
adjusted_file_name(file)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 118 def adjusted_file_name(file) diff = @largest_file_name - file.file_short_name.size file.file_short_name + (" " * diff) end
build_body()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 40 def build_body result = "" files.each do |file| result += "#{build_line_output(file)}\n" end result end
build_coverage_title()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 32 def build_coverage_title if SimpleCovLinterFormatter.cover_all? return "Total Coverage" end "Own Changes" end
build_line_output(file)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 78 def build_line_output(file) file_name = adjusted_file_name(file) covered_size = @largest_file_name * file.percentage / 100.0 covered_text = colorize_text( covered_size.zero? ? "" : file_name[0..(covered_size - 1)], :summary_covered_bg_color ) not_covered_text = colorize_text( file_name[covered_size..-1], :summary_not_covered_bg_color ) "#{build_percentage_output(file)} #{covered_text}#{not_covered_text}" end
build_percentage_output(file)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 99 def build_percentage_output(file) percentage_size = file.file_int_percentage.to_s.size diff = @largest_percentage - percentage_size Rainbow("#{' ' * diff}#{file.file_int_percentage} %").send( get_percetage_color(file.file_int_percentage) ) end
build_title()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 20 def build_title "SimpleCov Report - #{build_coverage_title}:\n#{divider}" end
colorize_text(text, bg_option)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 92 def colorize_text(text, bg_option) text = Rainbow(text).color(SimpleCovLinterFormatter.summary_text_color) return text unless SimpleCovLinterFormatter.summary_enabled_bg text.bg(SimpleCovLinterFormatter.send(bg_option)) end
covered_size(file)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 123 def covered_size(file) @largest_file_name * file.percentage / 100.0 end
divider()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 24 def divider '-' * report_width end
files()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 50 def files unique_files = [] added_files = {} @lines.each do |line| file = SimpleCovLinterFormatter::FileLine.new(line) next if added_files[file.file_short_name] unique_files << file added_files[file.file_short_name] = true file_size = file.file_short_name.size file_percentage = file.file_int_percentage.to_s.size @largest_file_name = file_size if file_size > @largest_file_name @largest_percentage = file_percentage if file_percentage > @largest_percentage end sort_files(unique_files) end
get_percetage_color(percentage)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 107 def get_percetage_color(percentage) case percentage when 100 :green when 0 :red else :yellow end end
report_width()
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 28 def report_width @largest_file_name + @largest_percentage + PERCENT_TEXT_SIZE end
sort_files(files)
click to toggle source
# File lib/simplecov_linter_formatter/summary_builder.rb, line 69 def sort_files(files) sorting_strategy = if SimpleCovLinterFormatter.summary_coverage_sorting? Proc.new { |file| [file.percentage, file.file_short_name] } else Proc.new { |file| file.file_short_name } end files.sort_by { |file| sorting_strategy.call(file) } end