Module: Volt::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.



5
6
7
8
9
10
11
12
13
# 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 = []) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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