module RuboCop::AST::NodePattern::Sets

Utility to assign a set of values to a constant

Constants

MAX
REGISTRY

Public Class Methods

[](set) click to toggle source
# File lib/rubocop/ast/node_pattern/sets.rb, line 31
def self.[](set)
  REGISTRY[set]
end
name(set) click to toggle source
# File lib/rubocop/ast/node_pattern/sets.rb, line 15
def self.name(set)
  elements = set
  elements = set.first(MAX - 1) << :etc if set.size > MAX
  name = elements.to_a.join('_').upcase.gsub(/[^A-Z0-9_]/, '')
  uniq("SET_#{name}")
end
uniq(name) click to toggle source
# File lib/rubocop/ast/node_pattern/sets.rb, line 22
def self.uniq(name)
  return name unless Sets.const_defined?(name)

  (2..Float::INFINITY).each do |i|
    uniq = "#{name}_#{i}"
    return uniq unless Sets.const_defined?(uniq)
  end
end