module Dry::Initializer::Dispatchers::PrepareDefault
Public Instance Methods
call(default: nil, optional: nil, **options)
click to toggle source
# File lib/dry/initializer/dispatchers/prepare_default.rb, line 13 def call(default: nil, optional: nil, **options) default = callable! default check_arity! default {default: default, optional: (optional | default), **options} end
Private Instance Methods
callable!(default)
click to toggle source
# File lib/dry/initializer/dispatchers/prepare_default.rb, line 22 def callable!(default) return unless default return default if default.respond_to?(:call) return callable(default.to_proc) if default.respond_to?(:to_proc) invalid!(default) end
check_arity!(default)
click to toggle source
# File lib/dry/initializer/dispatchers/prepare_default.rb, line 30 def check_arity!(default) return unless default arity = default.method(:call).arity.to_i return unless arity.positive? invalid!(default) end
invalid!(default)
click to toggle source
# File lib/dry/initializer/dispatchers/prepare_default.rb, line 39 def invalid!(default) raise TypeError, "The #{default.inspect} should be" \ " either convertable to proc with no arguments," \ " or respond to #call without arguments." end