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) }
# --------------------- #