Module: MotionPrime::HasNormalizer

Included in:
BaseElement, Model, ScreenSectionsMixin, Section, Styles, TabbedSection
Defined in:
motion-prime/helpers/has_normalizer.rb

Instance Method Summary collapse

Instance Method Details

#normalize_object(object, receiver = nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'motion-prime/helpers/has_normalizer.rb', line 15

def normalize_object(object, receiver = nil)
  receiver ||= self
  if object.is_a?(Proc)
    receiver.send(:instance_exec, self, &object)
  elsif object.is_a?(Hash)
    object.inject({}) do |result, (key, nested_object)|
      result.merge(key => normalize_object(nested_object, receiver))
    end
  else
    object
  end
end

#normalize_options(unordered_options, receiver = nil, order = nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'motion-prime/helpers/has_normalizer.rb', line 3

def normalize_options(unordered_options, receiver = nil, order = nil)
  options = if order
    Hash[unordered_options.sort_by { |k,v| order.index(k.to_s).to_i }]
  else
    unordered_options
  end

  options.each do |key, option|
    unordered_options[key] = normalize_object(option, receiver)
  end
end