Sha256: a26b411137c5fb12693d21330104aaca5399f89590acd22fef40696aa1cfc84b

Contents?: true

Size: 818 Bytes

Versions: 2

Compression:

Stored size: 818 Bytes

Contents

module HumanAttributes
  module Formatters
    class Enum < Base
      def apply(_instance, value)
        return unless value

        is_enum_defined = _instance.class.defined_enums.has_key?(attribute.to_s)
        raise_error('NotEnumAttribute') unless is_enum_defined
        class_name = _instance.class.name.underscore
        pluralized_attribute = attribute.to_s.pluralize
        attr_key = "activerecord.attributes.#{class_name}.#{pluralized_attribute}.#{value}"
        enum_key = "enum.defaults.#{pluralized_attribute}.#{value}"
        translate(attr_key, translate(enum_key, value))
      end

      def translate(key, default)
        I18n.t(key,  default: default)
      end

      def enum_defined?(_instance)
        _instance.class.defined_enums.has_key?(attribute.to_s)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
human_attributes-1.1.0 lib/human_attributes/formatters/enum.rb
human_attributes-1.0.0 lib/human_attributes/formatters/enum.rb