class Obvious::Entity
Public Class Methods
new(input)
click to toggle source
# File lib/obvious/entity.rb, line 38 def initialize input shape = self.class.shape validations = self.class.validations || [] self.class.shape.freeze self.class.validations.freeze @values = {} input.each do |k, v| unless shape[k] raise Obvious::ShapeError.new "Invalid input field: #{k}" else @values[k] = v end end @values.freeze # this might need to be recursive? shape.each do |k, v| unless @values[k].class == v msg = "Validation Error: Invalid value for #{k}, should be a #{v}" raise Obvious::TypeError.new msg end end validations.each { |method| send method } freeze end
Public Instance Methods
to_hash()
click to toggle source
# File lib/obvious/entity.rb, line 68 def to_hash {}.tap {|h| @values.each { |k, v| h[k] = v } } end