Class: RuboCop::Cop::Legion::Extension::SettingsBracketMultiArg
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Legion::Extension::SettingsBracketMultiArg
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/legion/extension/settings_bracket_multi_arg.rb
Overview
Detects Legion::Settings[:a, :b] (2+ arguments to []).
Legion::Settings#[] only accepts exactly one key; multi-key access
must use Legion::Settings.dig(:a, :b) instead.
Constant Summary collapse
- RESTRICT_ON_SEND =
%i[[]].freeze
- MSG =
'`Legion::Settings#[]` takes exactly 1 argument. ' \ 'Use `Legion::Settings.dig(...)` for nested access.'
Instance Method Summary collapse
Instance Method Details
#legion_settings_multi_bracket?(node) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/rubocop/cop/legion/extension/settings_bracket_multi_arg.rb', line 26 def_node_matcher :legion_settings_multi_bracket?, <<~PATTERN (send (const {nil? cbase} :Legion) ... ) PATTERN |
#on_send(node) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/rubocop/cop/legion/extension/settings_bracket_multi_arg.rb', line 33 def on_send(node) return unless node.receiver&.const_type? && node.receiver.short_name == :Settings return unless legion_settings_receiver_is_legion?(node.receiver) return if node.arguments.size < 2 add_offense(node) do |corrector| args_source = node.arguments.map(&:source).join(', ') corrector.replace(node, "Legion::Settings.dig(#{args_source})") end end |