lib/kind.rb in kind-0.5.0 vs lib/kind.rb in kind-0.6.0

- old
+ new

@@ -45,14 +45,14 @@ return value if instance?(value) end end module Of - def self.call(klass, object) + def self.call(klass, object, name: nil) return object if object.is_a?(klass) - raise Kind::Error.new(klass, object) + raise Kind::Error.new((name || klass.name), object) end def self.Class(object = nil) return Class if object.nil? @@ -89,11 +89,11 @@ def self.%{name}(object = nil, options = {}) default = options[:or] return Kind::Of::%{name} if object.nil? && default.nil? - Kind::Of.call(::%{name}, object || default) + Kind::Of.call(::%{name}, (object || default), name: "%{name}".freeze) end RUBY KIND_IS = <<-RUBY def self.%{name}(value) @@ -101,33 +101,38 @@ end RUBY private_constant :KIND_OF, :KIND_IS - def add(mod) - name = Kind.of.Module(mod).name + def add(mod, name: nil) + mod_name = Kind.of.Module(mod).name + chk_name = name ? Kind::Of.(String, name) : mod_name - unless Of.respond_to?(name) - Of.instance_eval(KIND_OF % { name: name }) - Of.const_set(name, Checker.new(mod).freeze) + unless Of.respond_to?(chk_name) + Of.instance_eval(KIND_OF % { name: chk_name }) + Of.const_set(chk_name, Checker.new(mod).freeze) end - Is.instance_eval(KIND_IS % { name: name }) unless Is.respond_to?(name) + unless Is.respond_to?(chk_name) + Is.instance_eval(KIND_IS % { name: chk_name }) + end end end def self.is; Is; end def self.of; Of; end - # Classes + # -- Classes [ String, Symbol, Numeric, Integer, Float, Regexp, Time, Array, Range, Hash, Struct, Enumerator, Method, Proc, IO, File ].each { |klass| Types.add(klass) } - # Modules + Types.add(Queue, name: 'Queue'.freeze) + + # -- Modules [ Enumerable, Comparable ].each { |klass| Types.add(klass) } # --------------------- #