Class: Snuffle::ArgsClump
- Inherits:
-
Object
- Object
- Snuffle::ArgsClump
- Includes:
- PoroPlus
- Defined in:
- lib/snuffle/args_clump.rb
Instance Attribute Summary collapse
-
#element ⇒ Object
Returns the value of attribute element.
-
#line_numbers ⇒ Object
Returns the value of attribute line_numbers.
-
#neighbors ⇒ Object
Returns the value of attribute neighbors.
Class Method Summary collapse
Instance Method Summary collapse
- #distance(primary_matrix, token_matrix) ⇒ Object
- #has_near_neighbors? ⇒ Boolean
- #near_neighbors ⇒ Object
- #neighbor ⇒ Object
- #values ⇒ Object
Instance Attribute Details
#element ⇒ Object
Returns the value of attribute element.
7 8 9 |
# File 'lib/snuffle/args_clump.rb', line 7 def element @element end |
#line_numbers ⇒ Object
Returns the value of attribute line_numbers.
7 8 9 |
# File 'lib/snuffle/args_clump.rb', line 7 def line_numbers @line_numbers end |
#neighbors ⇒ Object
Returns the value of attribute neighbors.
7 8 9 |
# File 'lib/snuffle/args_clump.rb', line 7 def neighbors @neighbors end |
Class Method Details
.from(nodes) ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# 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 |
Instance Method Details
#distance(primary_matrix, token_matrix) ⇒ Object
40 41 42 |
# 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? ⇒ Boolean
20 21 22 |
# File 'lib/snuffle/args_clump.rb', line 20 def has_near_neighbors? near_neighbors.present? end |
#near_neighbors ⇒ Object
24 25 26 |
# File 'lib/snuffle/args_clump.rb', line 24 def near_neighbors @near_neighbors ||= neighbors.select{ |n| (n.values & values).size > 0 } end |
#neighbor ⇒ Object
36 37 38 |
# File 'lib/snuffle/args_clump.rb', line 36 def neighbor Struct.new(:element, :distance) end |
#values ⇒ Object
32 33 34 |
# File 'lib/snuffle/args_clump.rb', line 32 def values @values ||= self.element.values end |