module RuboCop::ExcludeLimit

def exclude_limit(parameter_name, method_name: transform(parameter_name))

becomes `self.max=` and `MinDigits` becomes `self.min_digits=`).
The parameter name given is transformed into a method name (eg. `Max`
Sets up a configuration option to have an exclude limit tracked.
def exclude_limit(parameter_name, method_name: transform(parameter_name))
  define_method(:"#{method_name}=") do |value|
    cfg = config_to_allow_offenses
    cfg[:exclude_limit] ||= {}
    current_max = cfg[:exclude_limit][parameter_name]
    value = [current_max, value].max if current_max
    cfg[:exclude_limit][parameter_name] = value
  end
end

def transform(parameter_name)

def transform(parameter_name)
  parameter_name.gsub(/(?<!\A)(?=[A-Z])/, '_').downcase
end