class Xcov::Target

Attributes

file_templates[RW]
files[RW]
name[RW]

Public Class Methods

by_coverage_with_ignored_at_the_end() click to toggle source
# File lib/xcov/model/target.rb, line 65
def self.by_coverage_with_ignored_at_the_end
  lambda { |lhs, rhs|
    if lhs.ignored == rhs.ignored
      # sort by coverage if files are both ignored
      # or none of them are ignored
      (lhs.coverage <=> rhs.coverage)
    else
      # ignored files will come at the end
      (lhs.ignored ? 1:0) <=> (rhs.ignored ? 1:0)
    end
  }
end
map(dictionary) click to toggle source

Class methods

# File lib/xcov/model/target.rb, line 56
def self.map(dictionary)
  name = dictionary["name"]
  files = dictionary["files"].map { |file| Source.map(file)}
  files = files.sort &by_coverage_with_ignored_at_the_end
  non_ignored_files = Target.select_non_ignored_files(files)

  Target.new(name, non_ignored_files)
end
new(name, files) click to toggle source
# File lib/xcov/model/target.rb, line 10
def initialize(name, files)
  @name = CGI::escapeHTML(name)
  @files = files
  totalCoveredLines = files.reduce(0) { |acc, file| acc + file.coveredLines }
  totalExecutableLines = files.reduce(0) { |acc, file| acc + file.executableLines }
  @coverage = files.count == 0 || totalExecutableLines == 0 ? 0.0 : totalCoveredLines.to_f / totalExecutableLines.to_f
  @displayable_coverage = self.create_displayable_coverage
  @coverage_color = self.create_coverage_color
  @id = Target.create_id(name)
end
select_non_ignored_files(files) click to toggle source
# File lib/xcov/model/target.rb, line 78
def self.select_non_ignored_files(files)
  files.select { |file| !file.ignored }
end

Public Instance Methods

html_value() click to toggle source
# File lib/xcov/model/target.rb, line 28
def html_value
  @file_templates = ""
  @files.each do |file|
    @file_templates << file.html_value
  end

  Function.template("target").result(binding)
end
json_value() click to toggle source
# File lib/xcov/model/target.rb, line 46
def json_value
  {
    "name" => @name,
    "coverage" => @coverage,
    "files" => @files ? @files.map{ |file| file.json_value } : []
  }
end
markdown_value() click to toggle source
# File lib/xcov/model/target.rb, line 37
def markdown_value
  markdown = "## Current coverage for #{@name} is `#{@displayable_coverage}`\n"
  return markdown << "✅ *No files affecting coverage found*\n\n---\n" if @files.empty?
  markdown << "Files changed | - | - \n--- | --- | ---\n"
  markdown << "#{@files.map { |file| file.markdown_value }.join("")}\n---\n"

  markdown
end
print_description() click to toggle source