Sha256: 6df8ad9c4e6671e13405c538a7a8f8dda136b82573c12c92d4e98ca33fcc9538
Contents?: true
Size: 1.09 KB
Versions: 5
Compression:
Stored size: 1.09 KB
Contents
module Monolens module Type class Strategy include Type::ErrorHandling def initialize(kind, valid) @kind = kind @valid = valid end def self.selection(valid) new('selection', valid) end def self.error(valid) new('error', valid) end def self.missing(valid) new('missing', valid) end def self.priority(valid) new('priority', valid) end def dress(arg, registry, &block) case arg when ::Symbol fail!(arg, &block) unless @valid.include?(arg.to_s) arg when ::String fail!(arg, &block) unless @valid.include?(arg) arg.to_sym when ::Array fail!(arg, &block) unless (arg.map(&:to_s) - @valid).empty? arg.map(&:to_sym) else fail!(arg, &block) end end def ===(arg) !!dress(arg, nil) rescue TypeError false end private def fail!(arg, &block) super("Invalid #{kind}strategy `#{arg}`", &block) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems