class Definition::Types::Type
Attributes
coerce[RW]
klass[RW]
test[RW]
Public Class Methods
new(name, klass, &coerce)
click to toggle source
Calls superclass method
Definition::Types::Base::new
# File lib/definition/types/type.rb, line 8 def initialize(name, klass, &coerce) raise "#{klass.inspect} is not a class" unless klass.is_a?(Class) self.klass = klass self.coerce = coerce super(name, context: { class: klass }) end
Public Instance Methods
conform(value)
click to toggle source
# File lib/definition/types/type.rb, line 16 def conform(value) value = coerce.call(value) if coerce && !valid?(value) try_conform(value) end
Private Instance Methods
try_conform(value)
click to toggle source
# File lib/definition/types/type.rb, line 28 def try_conform(value) if valid?(value) ConformResult.new(value) else ConformResult.new(value, errors: [ ConformError.new(self, "Is of type #{value.class.name} instead of #{klass.name}") ]) end end
valid?(value)
click to toggle source
# File lib/definition/types/type.rb, line 24 def valid?(value) value.is_a?(klass) end