module Dry::Effects::Initializer::DefineWithHook
@api private
Public Instance Methods
__define_with__()
click to toggle source
@api private
# File lib/dry/effects/initializer.rb, line 44 def __define_with__ seq_names = dry_initializer .definitions .reject { |_, d| d.option } .keys .join(", ") seq_names << ", " unless seq_names.empty? undef_method(:with) if method_defined?(:with) class_eval(<<-RUBY, __FILE__, __LINE__ + 1) def with(**new_options) # def with(**new_options) if new_options.empty? # if new_options.empty? self # self else # else self.class.new(#{seq_names}**options, **new_options) # self.class.new(attr1, attr2, **options, **new_options) end # end end # end RUBY end
option(*)
click to toggle source
@api private
Calls superclass method
# File lib/dry/effects/initializer.rb, line 20 def option(*) super.tap do __define_with__ unless method_defined?(:with) @has_options = true end end
options?()
click to toggle source
@api private
# File lib/dry/effects/initializer.rb, line 37 def options? return @has_options if defined? @has_options @has_options = false end
param(*)
click to toggle source
@api private
Calls superclass method
# File lib/dry/effects/initializer.rb, line 11 def param(*) super.tap do @params_arity = nil __define_with__ end end
params_arity()
click to toggle source
@api private
# File lib/dry/effects/initializer.rb, line 29 def params_arity @params_arity ||= dry_initializer .definitions .reject { |_, d| d.option } .size end