class Initializr::Schema

Public Class Methods

new(klass, schemas = {}) click to toggle source
# File lib/initializr/schema.rb, line 4
def initialize klass, schemas = {}
  @klass = klass
  @schemas = schemas
end

Public Instance Methods

instantiate(obj) click to toggle source
# File lib/initializr/schema.rb, line 9
def instantiate obj
  children = @schemas.keys.map do |key|
    value = @schemas[key].instantiate(obj[key])
    Hash[key, value]
  end.reduce({}, &:merge)

  args = obj.merge(children)

  @klass.new args
end