Sha256: 5419e50358e92947ef17bcbef9fcd1f61e4b23556d12b9de7e6572a25e4f8b3d

Contents?: true

Size: 675 Bytes

Versions: 22

Compression:

Stored size: 675 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)
        self == other ||
        required_methods.all? {|m| other.respond_to?(m) }
      end

      def ==(other)
        other.is_a?(self.class) &&
        other.required_methods == self.required_methods
      end
      alias :eql? :==

      def inspect
        formatted_required_methods =
          required_methods.map { |method_name| method_name.inspect }.join(', ')
        "duck_type(#{formatted_required_methods})"
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
rr-3.1.1 lib/rr/wildcard_matchers/duck_type.rb
rr-3.1.0 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.9 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.8 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.7 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.6 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.5 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.4 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.3 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.2 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.1 lib/rr/wildcard_matchers/duck_type.rb
rr-3.0.0 lib/rr/wildcard_matchers/duck_type.rb
rr-1.2.1 lib/rr/wildcard_matchers/duck_type.rb
rr-1.2.0 lib/rr/wildcard_matchers/duck_type.rb
rr-1.1.2 lib/rr/wildcard_matchers/duck_type.rb
rr-1.1.2.rc1 lib/rr/wildcard_matchers/duck_type.rb
rr-1.1.1 lib/rr/wildcard_matchers/duck_type.rb
rr-1.1.1.rc1 lib/rr/wildcard_matchers/duck_type.rb
rr-1.1.0 lib/rr/wildcard_matchers/duck_type.rb
rr-1.1.0.rc3 lib/rr/wildcard_matchers/duck_type.rb