class Snuffle::ArgsClump

Attributes

element[RW]
line_numbers[RW]
neighbors[RW]

Public Class Methods

from(nodes) click to toggle source
# File lib/snuffle/args_clump.rb, line 9
def self.from(nodes)
  nodes = nodes.method_defs
  clumps = Element::MethodDefinition.materialize(nodes.to_a).inject([]) do |clumps, element|
    clump = ArgsClump.new(element: element, line_numbers: element.node.line_numbers.first )
    if clump.values.count > 1 && clump.near_neighbors.any?
      clumps << clump
    end
    clumps
  end
end

Public Instance Methods

distance(primary_matrix, token_matrix) click to toggle source
# File lib/snuffle/args_clump.rb, line 40
def distance(primary_matrix, token_matrix)
  Snuffle::Util::Correlation.distance(primary_matrix, token_matrix)
end
has_near_neighbors?() click to toggle source
# File lib/snuffle/args_clump.rb, line 20
def has_near_neighbors?
  near_neighbors.present?
end
near_neighbors() click to toggle source
# File lib/snuffle/args_clump.rb, line 24
def near_neighbors
  @near_neighbors ||= neighbors.select{ |n| (n.values & values).size > 0 }
end
neighbor() click to toggle source
# File lib/snuffle/args_clump.rb, line 36
def neighbor
  Struct.new(:element, :distance)
end
values() click to toggle source
# File lib/snuffle/args_clump.rb, line 32
def values
  @values ||= self.element.values
end