Sha256: 47f9a3e757689fb19a1ae646beb2d4e942f0a009c16a2828e1bbf63d7a823221

Contents?: true

Size: 860 Bytes

Versions: 1

Compression:

Stored size: 860 Bytes

Contents

class Translation < String
  include Mongoid::Fields::Serializable

  attr_accessor :keys

  def initialize(*args)
    super
    @keys = {}
    @keys["default"] = "en"
  end

  def []=(lang, text)
    @keys[lang.to_s] = text
  end

  def [](lang)
    @keys[lang.to_s]
  end

  def languages
    langs = @keys.keys
    langs.delete("default")
    langs
  end

  def default_language=(lang)
    @keys["default"] = lang
    self.replace(@keys[lang.to_s])
  end

  def self.build(keys, default = "en")
    tr = self.new
    tr.keys = keys
    tr.default_language = default
    tr
  end

  def serialize(value)
    return value.keys if value.kind_of?(self)

    @keys
  end

  def deserialize(value)
    return value if value.kind_of?(self)

    result = self.new
    result.keys = value
    result.default_language = value["default"] || "en"

    result
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid_ext-0.7.1 lib/mongoid_ext/types/translation.rb