Sha256: 0bbb67b2b07a8b528920fce23d1cb315623ab531e9d3e8f735e9be7995bc9658

Contents?: true

Size: 875 Bytes

Versions: 71

Compression:

Stored size: 875 Bytes

Contents

module Volt
  module ModelWrapper
    # For cretain values, we wrap them to make the behave as a
    # model.
    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

    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
  end
end

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
volt-0.9.7.pre8 lib/volt/models/model_wrapper.rb
volt-0.9.7.pre7 lib/volt/models/model_wrapper.rb
volt-0.9.7.pre6 lib/volt/models/model_wrapper.rb
volt-0.9.7.pre5 lib/volt/models/model_wrapper.rb
volt-0.9.7.pre3 lib/volt/models/model_wrapper.rb
volt-0.9.7.pre2 lib/volt/models/model_wrapper.rb
volt-0.9.6 lib/volt/models/model_wrapper.rb
volt-0.9.6.pre3 lib/volt/models/model_wrapper.rb
volt-0.9.6.pre2 lib/volt/models/model_wrapper.rb
volt-0.9.6.pre1 lib/volt/models/model_wrapper.rb
volt-0.9.5 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre12 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre11 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre9 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre8 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre7 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre6 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre5 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre4 lib/volt/models/model_wrapper.rb
volt-0.9.5.pre3 lib/volt/models/model_wrapper.rb