class RSpec::Coverage::Result

Attributes

root[R]

Public Class Methods

new(root, coverage={}) click to toggle source
# File lib/rspec/coverage/result.rb, line 32
def initialize root, coverage={}
  @root, @coverage = root, coverage
end
traverse(*results, &block) click to toggle source
# File lib/rspec/coverage/result.rb, line 8
def self.traverse *results, &block
  new("", results.shift).traverse(*results, &block).to_h
end

Public Instance Methods

to_h() click to toggle source
# File lib/rspec/coverage/result.rb, line 36
def to_h
  @coverage.dup
end
traverse(*results, &block) click to toggle source
# File lib/rspec/coverage/result.rb, line 12
def traverse *results, &block
  RSpec::Coverage::Result.new(root, @coverage.dup).traverse!(*results, &block)
end
traverse!(*results) { |file, *map { |ls| ls }| ... } click to toggle source
# File lib/rspec/coverage/result.rb, line 16
def traverse! *results
  results.unshift self
  files = results.map(&:keys).flatten.uniq
  files.each do |file|
    next unless file.start_with? root

    lines = results.map{ |r| r[file] || [] }
    len   = lines.map(&:length).max

    @coverage[file] = len.times.map do |i|
      yield file, *lines.map { |ls| ls[i] }
    end
  end
  self
end