Module: EnumHelp::Helper

Defined in:
lib/enum_help/i18n.rb

Class Method Summary collapse

Class Method Details

.define_attr_i18n_method(klass, attr_name) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/enum_help/i18n.rb', line 24

def self.define_attr_i18n_method(klass, attr_name)
  attr_i18n_method_name = "#{attr_name}_i18n"

  klass.class_eval <<-METHOD, __FILE__, __LINE__
  def #{attr_i18n_method_name}
    enum_label = self.send(:#{attr_name})
    if enum_label
      ::EnumHelp::Helper.translate_enum_label('#{klass}', :#{attr_name}, enum_label)
    else
      nil
    end
  end
  METHOD
end

.define_collection_i18n_method(klass, attr_name) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/enum_help/i18n.rb', line 39

def self.define_collection_i18n_method(klass, attr_name)
  collection_method_name = "#{attr_name.to_s.pluralize}"
  collection_i18n_method_name = "#{collection_method_name}_i18n"

  klass.instance_eval <<-METHOD, __FILE__, __LINE__
  def #{collection_i18n_method_name}
    collection_array = #{collection_method_name}.collect do |label, _|
      [label, ::EnumHelp::Helper.translate_enum_label('#{klass}', :#{attr_name}, label)]
    end
    Hash[collection_array].with_indifferent_access
  end
  METHOD
end

.translate_enum_label(klass, attr_name, enum_label) ⇒ Object



53
54
55
# File 'lib/enum_help/i18n.rb', line 53

def self.translate_enum_label(klass, attr_name, enum_label)
  ::I18n.t("enums.#{klass.to_s.underscore.gsub('/', '.')}.#{attr_name}.#{enum_label}", default: enum_label.humanize)
end