class Rekey::Schema

Public Class Methods

new(definition) click to toggle source
# File lib/rekey/schema.rb, line 4
def initialize definition
  @definition = definition
end

Public Instance Methods

rekey(obj) click to toggle source
# File lib/rekey/schema.rb, line 8
def rekey obj
  additions = @definition.keys.map do |key|
    value = @definition[key].rekey(obj)
    Hash[key, value]
  end.reduce({}, &:merge)

  unkeyed = @definition.keys.reduce(obj) do |acc, key|
    @definition[key].unkey(acc)
  end

  unkeyed = @definition.keys.map do |key|
    value = @definition[key].unkey(obj)
  end.reduce({}, &:merge)

  unkeyed.merge(additions)
end