Sha256: 7ccc7150554d1c35d1bc54bbb07d9c206232d46ee472299c37b10c7a60f5bf49
Contents?: true
Size: 1.04 KB
Versions: 62
Compression:
Stored size: 1.04 KB
Contents
module Concurrent module Actor # taken from Algebrick # supplies type-checking helpers whenever included module TypeCheck def Type?(value, *types) types.any? { |t| value.is_a? t } end def Type!(value, *types) Type?(value, *types) or TypeCheck.error(value, 'is not', types) value end def Match?(value, *types) types.any? { |t| t === value } end def Match!(value, *types) Match?(value, *types) or TypeCheck.error(value, 'is not matching', types) value end def Child?(value, *types) Type?(value, Class) && types.any? { |t| value <= t } end def Child!(value, *types) Child?(value, *types) or TypeCheck.error(value, 'is not child', types) value end private def self.error(value, message, types) raise TypeError, "Value (#{value.class}) '#{value}' #{message} any of: #{types.join('; ')}." end end end end
Version data entries
62 entries across 62 versions & 2 rubygems