Class: Xcov::Target

Inherits:
Base
  • Object
show all
Defined in:
lib/xcov/model/target.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#coverage_color, #displayable_coverage, #id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#coverage_emoji, #create_coverage_color, #create_displayable_coverage, create_id, #create_summary, template

Constructor Details

#initialize(name, coverage, files) ⇒ Target

Returns a new instance of Target.



11
12
13
14
15
16
17
18
# File 'lib/xcov/model/target.rb', line 11

def initialize (name, coverage, files)
  @name = CGI::escapeHTML(name)
  @coverage = coverage
  @files = files
  @displayable_coverage = self.create_displayable_coverage
  @coverage_color = self.create_coverage_color
  @id = Target.create_id(name)
end

Instance Attribute Details

#coverageObject

Returns the value of attribute coverage.



7
8
9
# File 'lib/xcov/model/target.rb', line 7

def coverage
  @coverage
end

#file_templatesObject

Returns the value of attribute file_templates.



9
10
11
# File 'lib/xcov/model/target.rb', line 9

def file_templates
  @file_templates
end

#filesObject

Returns the value of attribute files.



8
9
10
# File 'lib/xcov/model/target.rb', line 8

def files
  @files
end

#nameObject

Returns the value of attribute name.



6
7
8
# File 'lib/xcov/model/target.rb', line 6

def name
  @name
end

Class Method Details

.calculate_coverage(files) ⇒ Object



65
66
67
68
69
70
71
72
# File 'lib/xcov/model/target.rb', line 65

def self.calculate_coverage (files)
  coverage = 0
  non_ignored_files = files.select { |file| !file.ignored }
  non_ignored_files.each { |file| coverage += file.coverage }
  coverage = coverage / non_ignored_files.count unless non_ignored_files.empty?

  coverage
end

.map(dictionary) ⇒ Object

Class methods



55
56
57
58
59
60
61
62
63
# File 'lib/xcov/model/target.rb', line 55

def self.map (dictionary)
  name = dictionary["name"]
  files = dictionary["files"].map { |file| Source.map(file)}
  files = files.sort! { |lhs, rhs| lhs.coverage <=> rhs.coverage }
               .sort! { |lhs, rhs| (lhs.ignored ? 1:0) <=> (rhs.ignored ? 1:0) }
  coverage = Target.calculate_coverage(files)

  Target.new(name, coverage, files)
end

Instance Method Details

#html_valueObject



27
28
29
30
31
32
33
34
# File 'lib/xcov/model/target.rb', line 27

def html_value
  @file_templates = ""
  @files.each do |file|
    @file_templates << file.html_value
  end

  Function.template("target").result(binding)
end

#json_valueObject



45
46
47
48
49
50
51
# File 'lib/xcov/model/target.rb', line 45

def json_value
  {
    "name" => @name,
    "coverage" => @coverage,
    "files" => @files ? @files.map{ |file| file.json_value } : []
  }
end

#markdown_valueObject



36
37
38
39
40
41
42
43
# File 'lib/xcov/model/target.rb', line 36

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


20
21
22
23
24
25
# File 'lib/xcov/model/target.rb', line 20

def print_description
  puts "\t#{@name} (#{@coverage})"
  @files.each do |file|
    file.print_description
  end
end