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