Module: EnumI18nHelper::Helper

Defined in:
lib/enum_i18n_helper/i18n.rb

Class Method Summary collapse

Class Method Details

.define_attr_i18n_method(klass, attr_name) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/enum_i18n_helper/i18n.rb', line 41

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

  klass.class_eval "  def \#{attr_i18n_method_name}\n    enum_label = self.send(:\#{attr_name})\n    if enum_label\n      ::EnumI18nHelper::Helper.translate_enum_label('\#{klass}', :\#{attr_name}, enum_label)\n    else\n      nil\n    end\n  end\n  METHOD\nend\n", __FILE__, __LINE__

.define_collection_i18n_method(klass, attr_name) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/enum_i18n_helper/i18n.rb', line 56

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 "  def \#{collection_i18n_method_name}\n    collection_array = \#{collection_method_name}.collect do |label, _|\n      [label, ::EnumI18nHelper::Helper.translate_enum_label('\#{klass}', :\#{attr_name}, label)]\n    end\n    Hash[collection_array].with_indifferent_access\n  end\n  METHOD\nend\n", __FILE__, __LINE__

.translate_enum_label(klass, attr_name, enum_label) ⇒ Object



70
71
72
# File 'lib/enum_i18n_helper/i18n.rb', line 70

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