Class: RuboCop::Cop::IndexMethod::Autocorrection
- Inherits:
-
Struct
- Object
- Struct
- RuboCop::Cop::IndexMethod::Autocorrection
- Defined in:
- lib/rubocop/cop/mixin/index_method.rb
Overview
Internal helper class to hold autocorrect data
Instance Attribute Summary collapse
-
#block_node ⇒ Object
Returns the value of attribute block_node.
-
#leading ⇒ Object
Returns the value of attribute leading.
-
#match ⇒ Object
Returns the value of attribute match.
-
#trailing ⇒ Object
Returns the value of attribute trailing.
Class Method Summary collapse
- .from_each_with_object(node, match) ⇒ Object
- .from_hash_brackets_map(node, match) ⇒ Object
- .from_map_to_h(node, match) ⇒ Object
- .from_to_h(node, match) ⇒ Object
Instance Method Summary collapse
- #set_new_arg_name(transformed_argname, corrector) ⇒ Object
- #set_new_body_expression(transforming_body_expr, corrector) ⇒ Object
- #set_new_method_name(new_method_name, corrector) ⇒ Object
- #strip_prefix_and_suffix(node, corrector) ⇒ Object
Instance Attribute Details
#block_node ⇒ Object
Returns the value of attribute block_node
20 21 22 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 20 def block_node @block_node end |
#leading ⇒ Object
Returns the value of attribute leading
20 21 22 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 20 def leading @leading end |
#match ⇒ Object
Returns the value of attribute match
20 21 22 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 20 def match @match end |
#trailing ⇒ Object
Returns the value of attribute trailing
20 21 22 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 20 def trailing @trailing end |
Class Method Details
.from_each_with_object(node, match) ⇒ Object
21 22 23 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 21 def self.from_each_with_object(node, match) new(match, node, 0, 0) end |
.from_hash_brackets_map(node, match) ⇒ Object
41 42 43 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 41 def self.from_hash_brackets_map(node, match) new(match, node.children.last, "#{node.receiver.source}[".length, ']'.length) end |
.from_map_to_h(node, match) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 29 def self.from_map_to_h(node, match) if node.block_literal? strip_trailing_chars = 0 else map_range = node.children.first.source_range node_range = node.source_range strip_trailing_chars = node_range.end_pos - map_range.end_pos end new(match, node.children.first, 0, strip_trailing_chars) end |
.from_to_h(node, match) ⇒ Object
25 26 27 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 25 def self.from_to_h(node, match) new(match, node, 0, 0) end |
Instance Method Details
#set_new_arg_name(transformed_argname, corrector) ⇒ Object
60 61 62 63 64 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 60 def set_new_arg_name(transformed_argname, corrector) return unless block_node.block_type? corrector.replace(block_node.arguments, "|#{transformed_argname}|") end |
#set_new_body_expression(transforming_body_expr, corrector) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 66 def set_new_body_expression(transforming_body_expr, corrector) body_source = transforming_body_expr.source body_source = "{ #{body_source} }" if transforming_body_expr.hash_type? && !transforming_body_expr.braces? corrector.replace(block_node.body, body_source) end |
#set_new_method_name(new_method_name, corrector) ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 51 def set_new_method_name(new_method_name, corrector) range = block_node.send_node.loc.selector if (send_end = block_node.send_node.loc.end) # If there are arguments (only true in the `each_with_object` case) range = range.begin.join(send_end) end corrector.replace(range, new_method_name) end |
#strip_prefix_and_suffix(node, corrector) ⇒ Object
45 46 47 48 49 |
# File 'lib/rubocop/cop/mixin/index_method.rb', line 45 def strip_prefix_and_suffix(node, corrector) expression = node.source_range corrector.remove_leading(expression, leading) corrector.remove_trailing(expression, trailing) end |