class RSpectre::SourceMap

Public Class Methods

parse(file) click to toggle source
# File lib/rspectre/source_map.rb, line 12
def self.parse(file)
  self::Parser.new(file).populate(new)
end

Private Class Methods

new() click to toggle source
Calls superclass method
# File lib/rspectre/source_map.rb, line 7
def initialize
  super(Hash.new { [] })
end

Public Instance Methods

add(node) click to toggle source
# File lib/rspectre/source_map.rb, line 16
def add(node)
  return unless node.loc.expression

  map[node.loc.first_line] <<= node
end
find_method(target_selector, line) click to toggle source
# File lib/rspectre/source_map.rb, line 22
def find_method(target_selector, line)
  block_nodes(line).select do |node|
    send, = *node
    _receiver, selector = *send

    selector.equal?(target_selector)
  end.first
end

Private Instance Methods

block_nodes(line) click to toggle source
# File lib/rspectre/source_map.rb, line 33
def block_nodes(line)
  map.fetch(line, []).select { |node| node.type.equal?(:block) }
end