class RSpec::Coverage::ClassMap
Attributes
root[R]
Public Class Methods
new(root="")
click to toggle source
# File lib/rspec/coverage/class_map.rb, line 7 def initialize root="" @root = root @files, @masks, @klasses = {}, {}, {} end
Public Instance Methods
mask(*klasses)
click to toggle source
# File lib/rspec/coverage/class_map.rb, line 12 def mask *klasses return @masks[klasses] if @masks[klasses] masks = klasses.map { |klass| class_mask klass } @masks[klasses] = Result.traverse(*masks) do |_file, *entries| entries.include?(ACTIVE) ? ACTIVE : INACTIVE end end
start_class(name:, path:, line: return unless path.start_with? @root)
click to toggle source
# File lib/rspec/coverage/class_map.rb, line 21 def start_class name:, path:, line: return unless path.start_with? @root @files[path] ||= {} @files[path][line] = name @klasses[name] ||= {} @klasses[name][path] = true end
Private Instance Methods
class_mask(klass_or_name)
click to toggle source
# File lib/rspec/coverage/class_map.rb, line 33 def class_mask klass_or_name klass = klass_or_name.respond_to?(:name) ? klass_or_name.name : klass_or_name return @masks[klass] if @masks.include?(klass) active_files = (@klasses[klass] || {}).keys @masks[klass] = active_files.each_with_object({}) do |file, h| h[file] = file_mask file, klass end end
file_mask(file, klass)
click to toggle source
# File lib/rspec/coverage/class_map.rb, line 43 def file_mask file, klass @files[file].freeze # can't add class defs to a file after computing the map fm = @files[file] active = INACTIVE 1.upto(fm.keys.last).map do |i| if current = fm[i] active = (current == klass) ? ACTIVE : INACTIVE end active end end