Sha256: 53c7989ca12aa3f2092effc844c213a874fc7783914459c3ed995479984049ab
Contents?: true
Size: 779 Bytes
Versions: 5
Compression:
Stored size: 779 Bytes
Contents
module Monolens module Type class Any include Type::ErrorHandling def initialize(candidates) @candidates = candidates end def self.of(*candidates) Any.new(candidates) end def self.dress(instance, registry) instance end def self.===(instance) true end def ===(instance) @candidates.any?{|c| c === instance } end def dress(instance, registry, &block) first_error = nil @candidates.each do |candidate| begin return candidate.dress(instance, registry, &block) rescue TypeError => ex first_error ||= ex end end fail!(first_error.message, &block) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems