Sha256: 8102f5bb0a955f79ed0e4a10bce052d46d4d4e22b3162652feea88940b69c7f2

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

require 'cgi'

module Xcov
  class Target < Xcov::Base

    attr_accessor :name
    attr_accessor :coverage
    attr_accessor :files
    attr_accessor :file_templates

    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

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

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

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

    # Class methods

    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

    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

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
xcov-0.8 lib/xcov/model/target.rb
xcov-0.7 lib/xcov/model/target.rb
xcov-0.6 lib/xcov/model/target.rb