Sha256: 553a39dccc3c8d03b48d2b4c96750d98b185891ece89225f6aad4df8eb8c761b

Contents?: true

Size: 764 Bytes

Versions: 15

Compression:

Stored size: 764 Bytes

Contents

module MotionPrime
  module HasNormalizer
    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

    def normalize_object(object, receiver)
      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
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
motion-prime-0.5.4 motion-prime/helpers/has_normalizer.rb
motion-prime-0.5.3 motion-prime/helpers/has_normalizer.rb
motion-prime-0.5.2 motion-prime/helpers/has_normalizer.rb
motion-prime-0.5.1 motion-prime/helpers/has_normalizer.rb
motion-prime-0.5.0 motion-prime/helpers/has_normalizer.rb
motion-prime-0.4.5 motion-prime/helpers/has_normalizer.rb
motion-prime-0.4.4 motion-prime/helpers/has_normalizer.rb
motion-prime-0.4.3 motion-prime/helpers/has_normalizer.rb
motion-prime-0.4.2 motion-prime/helpers/has_normalizer.rb
motion-prime-0.4.1 motion-prime/helpers/has_normalizer.rb
motion-prime-0.4.0 motion-prime/helpers/has_normalizer.rb
motion-prime-0.3.3 motion-prime/helpers/has_normalizer.rb
motion-prime-0.3.2 motion-prime/helpers/has_normalizer.rb
motion-prime-0.3.1 motion-prime/helpers/has_normalizer.rb
motion-prime-0.3.0 motion-prime/helpers/has_normalizer.rb