Class: RuboCop::Cop::HashTransformMethod::Autocorrection
- Inherits:
-
Struct
- Object
- Struct
- RuboCop::Cop::HashTransformMethod::Autocorrection
- Defined in:
- lib/rubocop/cop/mixin/hash_transform_method.rb
Overview
Internal helper class to hold autocorrect data
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
Class Method Details
.from_each_with_object(node, match) ⇒ Object
141 142 143 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 141 def self.from_each_with_object(node, match) new(match, node, 0, 0) end |
.from_hash_brackets_map(node, match) ⇒ Object
145 146 147 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 145 def self.from_hash_brackets_map(node, match) new(match, node.children.last, 'Hash['.length, ']'.length) end |
.from_map_to_h(node, match) ⇒ Object
149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 149 def self.from_map_to_h(node, match) strip_trailing_chars = 0 unless node.parent&.block_type? 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
161 162 163 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 161 def self.from_to_h(node, match) new(match, node, 0, 0) end |
Instance Method Details
#set_new_arg_name(transformed_argname, corrector) ⇒ Object
181 182 183 184 185 186 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 181 def set_new_arg_name(transformed_argname, corrector) corrector.replace( block_node.arguments.loc.expression, "|#{transformed_argname}|" ) end |
#set_new_body_expression(transforming_body_expr, corrector) ⇒ Object
188 189 190 191 192 193 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 188 def set_new_body_expression(transforming_body_expr, corrector) corrector.replace( block_node.body, transforming_body_expr.loc.expression.source ) end |
#set_new_method_name(new_method_name, corrector) ⇒ Object
171 172 173 174 175 176 177 178 179 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 171 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
165 166 167 168 169 |
# File 'lib/rubocop/cop/mixin/hash_transform_method.rb', line 165 def strip_prefix_and_suffix(node, corrector) expression = node.loc.expression corrector.remove_leading(expression, leading) corrector.remove_trailing(expression, trailing) end |