class Shaped::Shapes::Class
Public Class Methods
new(expected_klass, validations = {})
click to toggle source
# File lib/shaped/shapes/class.rb, line 4 def initialize(expected_klass, validations = {}) if !expected_klass.is_a?(Class) raise(Shaped::InvalidShapeDescription, "A #{self.class} description must be a Class.") end @expected_klass = expected_klass @validations = validations @validator_klass = validator_klass(validations) end
Public Instance Methods
matched_by?(object)
click to toggle source
# File lib/shaped/shapes/class.rb, line 14 def matched_by?(object) object.is_a?(@expected_klass) && validations_satisfied?(object) end
to_s()
click to toggle source
# File lib/shaped/shapes/class.rb, line 18 def to_s if @validations.empty? @expected_klass.name else "#{@expected_klass} validating #{@validations}" end end
Private Instance Methods
validations_satisfied?(object)
click to toggle source
# File lib/shaped/shapes/class.rb, line 40 def validations_satisfied?(object) return true if @validator_klass.nil? validator_instance = @validator_klass.new validator_instance.value = object validator_instance.valid? end
validator_klass(validations)
click to toggle source
# File lib/shaped/shapes/class.rb, line 28 def validator_klass(validations) return nil if validations.empty? Class.new do include ActiveModel::Validations attr_accessor :value validates :value, validations end end