class SimpleCov::Formatter::MaterialFormatter
Constants
- VERSION
Public Class Methods
new()
click to toggle source
# File lib/simplecov-material.rb, line 18 def initialize @branchable_result = SimpleCov.branch_coverage? end
Public Instance Methods
branchable_result?()
click to toggle source
# File lib/simplecov-material.rb, line 39 def branchable_result? # cached in initialize because we truly look it up a whole bunch of times # and it's easier to cache here then in SimpleCov because there we might # still enable/disable branch coverage criterion @branchable_result end
format(result)
click to toggle source
# File lib/simplecov-material.rb, line 22 def format(result) # rubocop:disable Metrics/AbcSize Dir[File.join(File.dirname(__FILE__), "../public/*")].each do |path| FileUtils.cp_r(path, asset_output_path) end File.open(File.join(output_path, "index.html"), "wb") do |file| file.puts template("main").result(binding) end puts output_message(result) end
line_status?(source_file, line)
click to toggle source
# File lib/simplecov-material.rb, line 46 def line_status?(source_file, line) if branchable_result? && source_file.line_with_missed_branch?(line.number) "missed-branch" else line.status end end
output_message(result)
click to toggle source
# File lib/simplecov-material.rb, line 33 def output_message(result) "Coverage report generated for #{result.command_name} to " \ "#{output_path}. #{result.covered_lines} / #{result.total_lines} LOC" \ " (#{result.covered_percent.round(2)}%) covered." end
Private Instance Methods
asset_output_path()
click to toggle source
# File lib/simplecov-material.rb, line 66 def asset_output_path return @asset_output_path if defined?(@asset_output_path) && @asset_output_path @asset_output_path = File.join( output_path, "dist", SimpleCov::Formatter::MaterialFormatter::VERSION ) FileUtils.mkdir_p(@asset_output_path) @asset_output_path end
assets_path(name)
click to toggle source
# File lib/simplecov-material.rb, line 77 def assets_path(name) File.join( "./dist", SimpleCov::Formatter::MaterialFormatter::VERSION, name ) end
coverage_class(covered_percent)
click to toggle source
# File lib/simplecov-material.rb, line 110 def coverage_class(covered_percent) if covered_percent > 90 "green" elsif covered_percent > 80 "yellow" else "red" end end
format_number(number)
click to toggle source
rubocop:enable Lint/SelfAssignment, Style/RedundantRegexpEscape
# File lib/simplecov-material.rb, line 103 def format_number(number) whole, decimal = number.to_s.split(".") whole_with_commas = whole.chars.to_a.reverse.each_slice(3).map(&:join).join(",").reverse [whole_with_commas, decimal].compact.join(".") end
generate_dialog(file)
click to toggle source
# File lib/simplecov-material.rb, line 83 def generate_dialog(file) template("dialog").result(binding) rescue Encoding::CompatibilityError => e puts "Encoding problems with file #{file.filename}. Simplecov/ERB "\ "can't handle non ASCII characters in filenames. Error: " \ "#{e.message}." end
generate_group_page(title, files)
click to toggle source
rubocop:disable Lint/SelfAssignment, Style/RedundantRegexpEscape
# File lib/simplecov-material.rb, line 92 def generate_group_page(title, files) title_id = title.gsub(/^[^a-zA-Z]+/, "").gsub(/[^a-zA-Z0-9\-\_]/, "") title_id = title_id template("group_page").result(binding) end
hide_show(title)
click to toggle source
# File lib/simplecov-material.rb, line 138 def hide_show(title) if title == "AllFiles" "display: '';" else "display: none;" end end
id(source_file)
click to toggle source
# File lib/simplecov-material.rb, line 130 def id(source_file) Digest::SHA1.hexdigest(source_file.filename) end
output_path()
click to toggle source
# File lib/simplecov-material.rb, line 62 def output_path SimpleCov.coverage_path end
remove_spaces(name)
click to toggle source
# File lib/simplecov-material.rb, line 98 def remove_spaces(name) name.gsub(/^[^a-zA-Z]+/, "").gsub(/[^a-zA-Z0-9\-\_]/, "") end
shortened_filename(file)
click to toggle source
# File lib/simplecov-material.rb, line 134 def shortened_filename(file) file.filename.sub(SimpleCov.root, ".").gsub(/^\.\//, "") end
strength_class(covered_strength)
click to toggle source
# File lib/simplecov-material.rb, line 120 def strength_class(covered_strength) if covered_strength > 1 "green" elsif covered_strength == 1 "yellow" else "red" end end
template(name)
click to toggle source
# File lib/simplecov-material.rb, line 56 def template(name) ERB.new(File.read(File.join( File.dirname(__FILE__), "../views/", "#{name}.erb" ))) end