@@ -41,7 +41,7 @@ module Performance
41
41
class DoubleStartEndWith < Base
42
42
extend AutoCorrector
43
43
44
- MSG = 'Use `%<receiver>s.%<method>s(%<combined_args>s) ` instead of `%<original_code>s`.'
44
+ MSG = 'Use `%<replacement>s ` instead of `%<original_code>s`.'
45
45
46
46
def on_or ( node )
47
47
receiver , method , first_call_args , second_call_args = process_source ( node )
@@ -50,7 +50,7 @@ def on_or(node)
50
50
51
51
combined_args = combine_args ( first_call_args , second_call_args )
52
52
53
- add_offense ( node , message : message ( node , receiver , method , combined_args ) ) do |corrector |
53
+ add_offense ( node , message : message ( node , receiver , first_call_args , method , combined_args ) ) do |corrector |
54
54
autocorrect ( corrector , first_call_args , second_call_args , combined_args )
55
55
end
56
56
end
@@ -73,10 +73,10 @@ def process_source(node)
73
73
end
74
74
end
75
75
76
- def message ( node , receiver , method , combined_args )
77
- format (
78
- MSG , receiver : receiver . source , method : method , combined_args : combined_args , original_code : node . source
79
- )
76
+ def message ( node , receiver , first_call_args , method , combined_args )
77
+ dot = first_call_args . first . parent . send_type? ? '.' : '&.'
78
+ replacement = " #{ receiver . source } #{ dot } #{ method } ( #{ combined_args } )"
79
+ format ( MSG , replacement : replacement , original_code : node . source )
80
80
end
81
81
82
82
def combine_args ( first_call_args , second_call_args )
@@ -89,16 +89,16 @@ def check_for_active_support_aliases?
89
89
90
90
def_node_matcher :two_start_end_with_calls , <<~PATTERN
91
91
(or
92
- (send $_recv [{:start_with? :end_with?} $_method] $...)
93
- (send _recv _method $...))
92
+ (call $_recv [{:start_with? :end_with?} $_method] $...)
93
+ (call _recv _method $...))
94
94
PATTERN
95
95
96
96
def_node_matcher :check_with_active_support_aliases , <<~PATTERN
97
97
(or
98
- (send $_recv
98
+ (call $_recv
99
99
[{:start_with? :starts_with? :end_with? :ends_with?} $_method]
100
100
$...)
101
- (send _recv _method $...))
101
+ (call _recv _method $...))
102
102
PATTERN
103
103
end
104
104
end
0 commit comments