Sha256: 1d9b816dbfe25f976d1e1130ffebe5ac4ca2dc2f08ed30ac5bcc43f9d3f0c2c1
Contents?: true
Size: 1000 Bytes
Versions: 2
Compression:
Stored size: 1000 Bytes
Contents
module Bogus class MakesDucks extend Bogus::Takes takes :class_methods, :instance_methods, :makes_subtypes def make(klass, *classes) duck = makes_subtypes.make(klass) classes.each do |klass| remove_methods(class_methods.call(duck), class_methods.call(klass)) remove_methods(instance_methods.call(duck), instance_methods.call(klass)) end duck end private def remove_methods(duck_methods, klass_methods) not_in_klass = duck_methods.all - klass_methods.all not_in_klass.each { |name| duck_methods.remove(name) } duck_methods.all.each do |name| duck_method = duck_methods.get(name) klass_method = klass_methods.get(name) unless same_interface?(duck_method, klass_method) duck_methods.remove(name) end end end def same_interface?(method1, method2) method1.parameters == method2.parameters end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bogus-0.0.3 | lib/bogus/makes_ducks.rb |
bogus-0.0.3.rc.2 | lib/bogus/makes_ducks.rb |