class RuboCop::Cop::Style::HashLikeCase
Checks for places where ‘case-when` represents a simple 1:1 mapping and can be replaced with a hash lookup.
@example MinBranchesCount: 3 (default)
# bad case country when 'europe' 'http://eu.example.com' when 'america' 'http://us.example.com' when 'australia' 'http://au.example.com' end # good SITES = { 'europe' => 'http://eu.example.com', 'america' => 'http://us.example.com', 'australia' => 'http://au.example.com' } SITES[country]
@example MinBranchesCount: 4
# good case country when 'europe' 'http://eu.example.com' when 'america' 'http://us.example.com' when 'australia' 'http://au.example.com' end
Constants
- MSG
Public Instance Methods
on_case(node)
click to toggle source
# File lib/rubocop/cop/style/hash_like_case.rb, line 53 def on_case(node) return unless min_branches_count?(node) hash_like_case?(node) do |condition_nodes, body_nodes| if nodes_of_same_type?(condition_nodes) && nodes_of_same_type?(body_nodes) add_offense(node) end end end
Private Instance Methods
nodes_of_same_type?(nodes)
click to toggle source
# File lib/rubocop/cop/style/hash_like_case.rb, line 65 def nodes_of_same_type?(nodes) nodes.all? { |node| node.type == nodes.first.type } end