Sha256: ec0e678cb545aa7722629997bee880901330475613aa0e16483c417dcb6d19f1

Contents?: true

Size: 1.79 KB

Versions: 16

Compression:

Stored size: 1.79 KB

Contents

# encoding: utf-8
module Mongoid
  module Fields
    class Localized < Standard

      # Demongoize the object based on the current locale. Will look in the
      # hash for the current locale.
      #
      # @example Get the demongoized value.
      #   field.demongoize({ "en" => "testing" })
      #
      # @param [ Hash ] object The hash of translations.
      #
      # @return [ Object ] The value for the current locale.
      #
      # @since 2.3.0
      def demongoize(object)
        if object
          type.demongoize(lookup(object))
        end
      end

      # Is the field localized or not?
      #
      # @example Is the field localized?
      #   field.localized?
      #
      # @return [ true, false ] If the field is localized.
      #
      # @since 2.3.0
      def localized?
        true
      end

      # Convert the provided string into a hash for the locale.
      #
      # @example Serialize the value.
      #   field.mongoize("testing")
      #
      # @param [ String ] object The string to convert.
      #
      # @return [ Hash ] The locale with string translation.
      #
      # @since 2.3.0
      def mongoize(object)
        { ::I18n.locale.to_s => type.mongoize(object) }
      end

      private

      # Lookup the value from the provided object.
      #
      # @api private
      #
      # @example Lookup the value.
      #   field.lookup({ "en" => "test" })
      #
      # @param [ Hash ] object The localized object.
      #
      # @return [ Object ] The object for the locale.
      #
      # @since 3.0.0
      def lookup(object)
        locale = ::I18n.locale
        if ::I18n.respond_to?(:fallbacks)
          object[::I18n.fallbacks[locale].map(&:to_s).find{ |loc| object.has_key?(loc) }]
        else
          object[locale.to_s]
        end
      end
    end
  end
end

Version data entries

16 entries across 14 versions & 3 rubygems

Version Path
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/mongoid-4.0.2/lib/mongoid/fields/localized.rb
tdiary-4.2.1 vendor/bundle/ruby/2.3.0/gems/mongoid-5.0.2/lib/mongoid/fields/localized.rb
tdiary-4.2.1 vendor/bundle/ruby/2.2.0/gems/mongoid-5.0.2/lib/mongoid/fields/localized.rb
tdiary-4.2.1 vendor/bundle/ruby/2.2.0/gems/mongoid-5.0.1/lib/mongoid/fields/localized.rb
mongoid-5.0.2 lib/mongoid/fields/localized.rb
mongoid-5.0.1 lib/mongoid/fields/localized.rb
mongoid-5.0.0 lib/mongoid/fields/localized.rb
mongoid-5.0.0.rc0 lib/mongoid/fields/localized.rb
mongoid-5.0.0.beta lib/mongoid/fields/localized.rb
mongoid-4.0.2 lib/mongoid/fields/localized.rb
mongoid-4.0.1 lib/mongoid/fields/localized.rb
mongoid-4.0.0 lib/mongoid/fields/localized.rb
mongoid-4.0.0.rc2 lib/mongoid/fields/localized.rb
mongoid-4.0.0.rc1 lib/mongoid/fields/localized.rb
mongoid-4.0.0.beta2 lib/mongoid/fields/localized.rb
mongoid-4.0.0.beta1 lib/mongoid/fields/localized.rb