module Volt::ModelWrapper

Public Instance Methods

wrap_value(value, lookup) click to toggle source

For cretain values, we wrap them to make the behave as a model.

# File lib/volt/models/model_wrapper.rb, line 5
def wrap_value(value, lookup)
  if value.is_a?(Array)
    new_array_model(value, @options.merge(parent: self, path: path + lookup))
  elsif value.is_a?(Hash)
    new_model(value, @options.merge(parent: self, path: path + lookup))
  else
    value
  end
end
wrap_values(values, lookup = []) click to toggle source
# File lib/volt/models/model_wrapper.rb, line 15
def wrap_values(values, lookup = [])
  if values.is_a?(Array)
    # Coming from an array
    values.map { |v| wrap_value(v, lookup + [:[]]) }
  elsif values.is_a?(Hash)
    pairs = values.map do |k, v|
      # TODO: We should be able to move wrapping into the method_missing on model
      path = lookup + [k.to_sym]

      [k, wrap_value(v, path)]
    end
    Hash[pairs]
  else
    values
  end
end