Module: MotionPrime::HasNormalizer
- Included in:
- BaseElement, Model, ScreenSectionsMixin, Section, Styles, TabbedSection
- Defined in:
- motion-prime/helpers/has_normalizer.rb
Instance Method Summary collapse
- #debug_info ⇒ Object
- #element? ⇒ Boolean
- #normalize_object(object, receiver = nil) ⇒ Object
- #normalize_options(unordered_options, receiver = nil, order = nil, keys = nil) ⇒ Object
- #normalize_value(object, receiver) ⇒ Object
Instance Method Details
#debug_info ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'motion-prime/helpers/has_normalizer.rb', line 47 def debug_info if element? [self.class.name, self.name, section.try(:name)] elsif self.is_a?(Section) [self.class.name, self.name, @collection_section.try(:class).try(:name)] else [self.class.name] end end |
#element? ⇒ Boolean
43 44 45 |
# File 'motion-prime/helpers/has_normalizer.rb', line 43 def element? self.is_a?(BaseElement) end |
#normalize_object(object, receiver = nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'motion-prime/helpers/has_normalizer.rb', line 17 def normalize_object(object, receiver = nil) receiver ||= self if object.is_a?(Proc) normalize_value(object, receiver) elsif object.is_a?(Hash) object.inject({}) do |result, (key, nested_object)| @_key_chain ||= [] @_key_chain << key result.merge(key => normalize_object(nested_object, receiver)) end else object end end |
#normalize_options(unordered_options, receiver = nil, order = nil, keys = nil) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'motion-prime/helpers/has_normalizer.rb', line 3 def (, receiver = nil, order = nil, keys = nil) = if order Hash[.sort_by { |k,v| order.index(k.to_s).to_i }] else end = keys.nil? ? : .slice(*keys) .each do |key, option| @_key_chain = [key] [key] = normalize_object(option, receiver) end end |
#normalize_value(object, receiver) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'motion-prime/helpers/has_normalizer.rb', line 32 def normalize_value(object, receiver) if element? receiver.send(:instance_exec, section || screen, self, &object) else receiver.send(:instance_exec, self, &object) end rescue => e Prime.logger.error "Can't normalize: ", *debug_info, @_key_chain raise e end |