Module: ModelWrapper

Included in:
ArrayModel, Model
Defined in:
lib/volt/models/model_wrapper.rb

Instance Method Summary collapse

Instance Method Details

#wrap_value(value, lookup) ⇒ Object

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



4
5
6
7
8
9
10
11
12
# File 'lib/volt/models/model_wrapper.rb', line 4

def wrap_value(value, lookup)
  if value.is_a?(Array)
    value = new_array_model(value, @options.merge(parent: self, path: path + lookup))
  elsif value.is_a?(Hash)
    value = new_model(value, @options.merge(parent: self, path: path + lookup))
  end

  return value
end

#wrap_values(values, lookup = []) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/volt/models/model_wrapper.rb', line 14

def wrap_values(values, lookup=[])
  if values.is_a?(Array)
    # Coming from an array
    values = values.map {|v| wrap_value(v,lookup + [:[]]) }
  elsif values.is_a?(Hash)
    pairs = values.map do |k,v|
      path = lookup + [k]

      [k, wrap_value(v,path)]
    end

    values = Hash[pairs]
  end

  return values
end