@@ -25,7 +25,7 @@ class ContentTag < Base
2525
2626 minimum_target_rails_version 5.1
2727
28- MSG = 'Use `tag.something ` instead of `tag(:something )`.'
28+ MSG = 'Use `tag.%<preferred_method>s ` instead of `tag(%<current_argument>s )`.'
2929 RESTRICT_ON_SEND = %i[ tag ] . freeze
3030
3131 def on_new_investigation
@@ -38,8 +38,11 @@ def on_send(node)
3838 allowed_argument? ( first_argument ) ||
3939 corrected_ancestor? ( node )
4040
41- add_offense ( node ) do |corrector |
42- autocorrect ( corrector , node )
41+ preferred_method = node . first_argument . value . to_s . underscore
42+ message = format ( MSG , preferred_method : preferred_method , current_argument : first_argument . source )
43+
44+ add_offense ( node , message : message ) do |corrector |
45+ autocorrect ( corrector , node , preferred_method )
4346
4447 @corrected_nodes ||= Set . new . compare_by_identity
4548 @corrected_nodes . add ( node )
@@ -60,11 +63,11 @@ def allowed_argument?(argument)
6063 allowed_name? ( argument )
6164 end
6265
63- def autocorrect ( corrector , node )
66+ def autocorrect ( corrector , node , preferred_method )
6467 range = correction_range ( node )
6568
6669 rest_args = node . arguments . drop ( 1 )
67- replacement = "tag.#{ node . first_argument . value . to_s . underscore } (#{ rest_args . map ( &:source ) . join ( ', ' ) } )"
70+ replacement = "tag.#{ preferred_method } (#{ rest_args . map ( &:source ) . join ( ', ' ) } )"
6871
6972 corrector . replace ( range , replacement )
7073 end
0 commit comments