class SimpleCov::Formatter::TailwindFormatter

Constants

VERSION

Public Class Methods

new() click to toggle source
# File lib/simplecov-tailwindcss.rb, line 18
def initialize
  @branchable_result = SimpleCov.branch_coverage?
end

Public Instance Methods

branchable_result?() click to toggle source
# File lib/simplecov-tailwindcss.rb, line 39
def branchable_result?
  @branchable_result
end
format(result) click to toggle source
# File lib/simplecov-tailwindcss.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-tailwindcss.rb, line 43
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-tailwindcss.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-tailwindcss.rb, line 63
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::TailwindFormatter::VERSION
  )
  FileUtils.mkdir_p(@asset_output_path)
  @asset_output_path
end
assets_path(name) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 74
def assets_path(name)
  File.join(
    "./dist", SimpleCov::Formatter::TailwindFormatter::VERSION, name
  )
end
coverage_class(covered_percent) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 115
def coverage_class(covered_percent)
  if covered_percent > 90
    "text-green-500"
  elsif covered_percent > 80
    "text-yellow-500"
  else
    "text-red-500"
  end
end
format_number(number) click to toggle source

rubocop:enable Lint/SelfAssignment, Style/RedundantRegexpEscape

# File lib/simplecov-tailwindcss.rb, line 108
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-tailwindcss.rb, line 80
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-tailwindcss.rb, line 97
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
generate_stat_card(title, stat, color) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 88
def generate_stat_card(title, stat, color)
  template("stat_card").result(binding)
end
generate_table_column_head(name) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 92
def generate_table_column_head(name)
  template("table_column_head").result(binding)
end
hide_show(title) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 143
def hide_show(title)
  if title == "AllFiles"
    ""
  else
    "hidden"
  end
end
id(source_file) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 135
def id(source_file)
  Digest::SHA1.hexdigest(source_file.filename)
end
output_path() click to toggle source
# File lib/simplecov-tailwindcss.rb, line 59
def output_path
  SimpleCov.coverage_path
end
remove_spaces(name) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 103
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-tailwindcss.rb, line 139
def shortened_filename(file)
  file.filename.sub(SimpleCov.root, ".").gsub(/^\.\//, "")
end
strength_class(covered_strength) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 125
def strength_class(covered_strength)
  if covered_strength > 1
    "text-green-500"
  elsif covered_strength == 1
    "text-yellow-500"
  else
    "text-red-500"
  end
end
template(name) click to toggle source
# File lib/simplecov-tailwindcss.rb, line 53
def template(name)
  ERB.new(File.read(File.join(
    File.dirname(__FILE__), "../views/", "#{name}.erb"
  )))
end