Sha256: b11e89328a4ccef2fbb3a7c826d540755c9baee729752d8ab3557b20fe7236a9

Contents?: true

Size: 546 Bytes

Versions: 30

Compression:

Stored size: 546 Bytes

Contents

module RR
  module WildcardMatchers
    class DuckType
      attr_accessor :required_methods

      def initialize(*required_methods)
        @required_methods = required_methods
      end

      def wildcard_match?(other)
        return true if self == other
        required_methods.each do |m|
          return false unless other.respond_to?(m)
        end
        return true
      end

      def ==(other)
        return false unless other.is_a?(self.class)
        self.required_methods == other.required_methods
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
rr-0.1.7 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.15 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.11 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.12 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.14 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.8 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.13 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.10 lib/rr/wildcard_matchers/duck_type.rb
rr-0.3.4 lib/rr/wildcard_matchers/duck_type.rb
rr-0.3.2 lib/rr/wildcard_matchers/duck_type.rb
rr-0.1.9 lib/rr/wildcard_matchers/duck_type.rb
rr-0.2.5 lib/rr/wildcard_matchers/duck_type.rb
rr-0.3.1 lib/rr/wildcard_matchers/duck_type.rb
rr-0.3.11 lib/rr/wildcard_matchers/duck_type.rb
rr-0.2.4 lib/rr/wildcard_matchers/duck_type.rb
rr-0.2.3 lib/rr/wildcard_matchers/duck_type.rb
rr-0.3.10 lib/rr/wildcard_matchers/duck_type.rb
rr-0.2.1 lib/rr/wildcard_matchers/duck_type.rb
rr-0.2.2 lib/rr/wildcard_matchers/duck_type.rb
rr-0.3.3 lib/rr/wildcard_matchers/duck_type.rb