lib/strict/interface.rb in strict-1.3.0 vs lib/strict/interface.rb in strict-1.3.1

- old
+ new

@@ -11,16 +11,22 @@ Interfaces::Coercer.new(self) end def expose(method_name, &block) sig = sig(&block) - parameter_list = sig.parameters.map { |parameter| "#{parameter.name}:" }.join(", ") - argument_list = sig.parameters.map { |parameter| "#{parameter.name}: #{parameter.name}" }.join(", ") + parameter_list = [ + *sig.parameters.map { |parameter| "#{parameter.name}:" }, + "&block" + ].join(", ") + argument_list = [ + *sig.parameters.map { |parameter| "#{parameter.name}: #{parameter.name}" }, + "&block" + ].join(", ") module_eval(<<~RUBY, __FILE__, __LINE__ + 1) - def #{method_name}(#{parameter_list}, &block) # def method_name(one:, two:, three:, &block) - implementation.#{method_name}(#{argument_list}, &block) # implementation.method_name(one: one, two: two, three: three, &block) - end # end + def #{method_name}(#{parameter_list}) # def method_name(one:, two:, three:, &block) + implementation.#{method_name}(#{argument_list}) # implementation.method_name(one: one, two: two, three: three, &block) + end # end RUBY end end end