Method: EnumExt::HumanizeHelpers.define_superset_humanization_helpers

Defined in:
lib/enum_ext/humanize_helpers.rb

.define_superset_humanization_helpers(base_class, superset_name, enum_name) ⇒ Object

t_… methods for supersets will just slice original enum t_.. methods output and return only superset related values from it



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/enum_ext/humanize_helpers.rb', line 110

def self.define_superset_humanization_helpers(base_class, superset_name, enum_name)
  enum_plural = enum_name.to_s.pluralize

  base_class.send(enum_plural).define_singleton_method( "t_#{superset_name}_options" ) do
    result = evaluate_localizations(send("t_#{superset_name}"))
    return result unless result.blank?

    [["Enum translations call missed. Did you forget to call translate #{enum_name}"]*2]
  end

  # enums.t_options_i
  base_class.send(enum_plural).define_singleton_method( "t_#{superset_name}_options_i" ) do
    result = evaluate_localizations_to_i( send("t_#{superset_name}") )
    return result unless result.to_h.values.all?(&:blank?)

    [["Enum translations are missing. Did you forget to translate #{enum_name}"]*2]
  end


  # enums.t_superset ( translations or humanizations subset for a given set )
  base_class.send(enum_plural).define_singleton_method( "t_#{superset_name}" ) do
    return [(["Enum translations are missing. Did you forget to translate #{enum_name}"]*2)].to_h if localizations.blank?

    base_class.send(enum_plural).localizations.slice( *base_class.send(enum_plural).send(superset_name) )
  end
end