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