Sha256: a39e035c128f5f0574532a2c7459e5862e84d13aabd569156443635a6898f8a1
Contents?: true
Size: 1.72 KB
Versions: 2
Compression:
Stored size: 1.72 KB
Contents
module PufferPages module Backends module Mixins module Localable extend ActiveSupport::Concern included do serialize :locales, Locales validate do errors[:locales] = locales.error unless locales.valid? end end def locales value = read_attribute(:locales) value.is_a?(Locales) ? value : Locales.new(value) end class Locales < ActiveSupport::HashWithIndifferentAccess def initialize source update (source.presence || {}).stringify_keys super() end def valid? !error end def error translations rescue ::SyntaxError => e e.message else false end def translations @translations ||= Hash[map do |(locale, yaml)| load_arguments = [yaml] load_arguments.push "<#{locale}>" if YAML.method(:load).arity == -2 result = YAML.load yaml result = result.presence || {} raise ::SyntaxError.new("(<#{locale}>): Locale should be a hash") unless result.is_a?(Hash) [locale.to_sym, result.deep_symbolize_keys] end] end class << self def dump value value = value.is_a?(Locales) ? value : Locales.new(value) value ? YAML.dump(value.to_hash) : nil end def load value return unless value value = YAML.load(value) if value.is_a?(String) value.is_a?(Locales) ? value : Locales.new(value) end end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
puffer_pages-0.5.1 | lib/puffer_pages/backends/models/mixins/localable.rb |
puffer_pages-0.5.0 | lib/puffer_pages/backends/models/mixins/localable.rb |