Sha256: d520f50335c9581c0259383ab954f523ac89cab8822b5f49230db8af947b14f3
Contents?: true
Size: 928 Bytes
Versions: 1
Compression:
Stored size: 928 Bytes
Contents
module Mocktail class RedefinesNew extend T::Sig def initialize @handles_dry_new_call = HandlesDryNewCall.new end def redefine(type) type_replacement = TopShelf.instance.type_replacement_for(type) if type_replacement.replacement_new.nil? type_replacement.original_new = type.method(:new) type.singleton_class.send(:undef_method, :new) handles_dry_new_call = @handles_dry_new_call type.define_singleton_method :new, ->(*args, **kwargs, &block) { if TopShelf.instance.new_replaced?(type) || (type.is_a?(Class) && TopShelf.instance.of_next_registered?(type)) handles_dry_new_call.handle(type, args, kwargs, block) else type_replacement.original_new.call(*args, **kwargs, &block) end } type_replacement.replacement_new = type.singleton_method(:new) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mocktail-2.0.0 | lib/mocktail/replaces_type/redefines_new.rb |