class RuboCopMethodOrder::MethodNodeCollection
Hold collection of public instance methods that has custom sorted order.
Attributes
nodes[R]
Public Class Methods
new()
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 8 def initialize @nodes = [] end
Public Instance Methods
offenses()
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 12 def offenses nodes.reject { |node| definition_order_correct?(node) }.map do |node| { node: node, other_node: previous_node_from_definition_order(node) } end end
push(method_node)
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 21 def push(method_node) @nodes << method_node self end
replacements()
click to toggle source
Build a hash for every node that is not at the correct, final position which includes any nodes that need to be moved. Used for autocorrecting.
# File lib/rubocop_method_order/method_node_collection.rb, line 28 def replacements nodes.reject { |node| method_order_correct?(node) }.each_with_object({}) do |node, obj| node_to_replace = nodes[expected_method_index(node)] obj[node] = { node => node_to_replace, node_to_replace => nodes[expected_method_index(node_to_replace)] } end end
Private Instance Methods
definition_order_correct?(method_node)
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 41 def definition_order_correct?(method_node) previous_node_from_definition_order(method_node).nil? end
expected_method_index(method_node)
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 45 def expected_method_index(method_node) ordered_nodes.index(method_node) end
method_order_correct?(method_node)
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 49 def method_order_correct?(method_node) nodes.index(method_node) == ordered_nodes.index(method_node) end
ordered_nodes()
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 53 def ordered_nodes nodes.sort(&method(:sort)) end
previous_node_from_definition_order(method_node)
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 57 def previous_node_from_definition_order(method_node) index = nodes.index(method_node) nodes[0..index].find { |comp_node| sort(comp_node, method_node).positive? } end
sort(one, two)
click to toggle source
# File lib/rubocop_method_order/method_node_collection.rb, line 62 def sort(one, two) one.method_name <=> two.method_name end