module Dry::Cerberus

Constants

POSTPONE_FIX_CLAUSES

Public Instance Methods

guarded_methods() click to toggle source
# File lib/dry/behaviour/cerberus.rb, line 14
def guarded_methods
  @guarded_methods ||= {}
end
method_added(name) click to toggle source
[:req, :p], [:opt, :po], [:rest, :a], [:key, :when], [:keyrest, :b], [:block, :cb]
# File lib/dry/behaviour/cerberus.rb, line 19
def method_added(name)
  return if @adding_alias

  m = instance_method(name)
  key = m.parameters.any? { |(k, v)| k == :key && v == :when } ? H.extract_when(m) : m.arity
  key = case key
        when String then instance_eval(key)
        when -Float::INFINITY...0 then nil
        else key
        end
  (guarded_methods[name] ||= {})[key] = m

  @adding_alias = true
  alias_name = H.alias_name(m, guarded_methods[name].size.pred)
  alias_method alias_name, name
  private alias_name
  @adding_alias = false
end