Sha256: cb6113de995d800d1d792fc3c64667b984a8f80086d4849fb6c6aa1ea9e6df40

Contents?: true

Size: 676 Bytes

Versions: 1

Compression:

Stored size: 676 Bytes

Contents

module Plucky
  module Normalizers
    class FieldsValue

      # Public: Given a value returns it normalized for Mongo's fields option
      def call(value)
        return nil if value.respond_to?(:empty?) && value.empty?

        case value
          when Array
            if value.size == 1 && value.first.is_a?(Hash)
              value.first
            else
              value.flatten.inject({}) {|acc, field| acc.merge(field => 1)}
            end
          when Symbol
            {value => 1}
          when String
            value.split(',').inject({}) { |acc, v| acc.merge(v.strip => 1) }
          else
            value
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
plucky-0.8.0 lib/plucky/normalizers/fields_value.rb