Sha256: 30ece866f17c6fa630e9c4e88a39dedfaa3680bc3ee474722f4d204ebf1550bb
Contents?: true
Size: 713 Bytes
Versions: 43
Compression:
Stored size: 713 Bytes
Contents
# frozen_string_literal: true module Ree::Contracts module ArgContracts class RespondTo extend Ree::Contracts::ArgContracts::Squarable def initialize(*method_names) @method_names = method_names end def valid?(value) get_unrespond_list(value).empty? end def to_s "RespondTo#{method_names.inspect}" end def message(value, name, lvl = 1) unrespond_list = get_unrespond_list(value) "expected to respond to #{unrespond_list.inspect}}" end private def get_unrespond_list(obj) @method_names.reject do |method| obj.respond_to?(method) end end end end end
Version data entries
43 entries across 43 versions & 1 rubygems