Sha256: 2a83b50ff39039e780a27aaf08ee61ebba8498c05f09a27f23c28b8d0edadc3d
Contents?: true
Size: 1.25 KB
Versions: 4
Compression:
Stored size: 1.25 KB
Contents
module FlexibleEnum class IdentityConfigurator < AbstractConfigurator def apply configurator = self add_instance_method("#{attribute_name}_details") do value = send(configurator.attribute_name) configurator.details_for(value) end add_instance_method("#{attribute_name}_name") do value = send(configurator.attribute_name) configurator.name_for(value) end add_class_method("human_#{attribute_name}") do |value| configurator.human_name_for(value) end add_instance_method("human_#{attribute_name}") do value = send(configurator.attribute_name) configurator.human_name_for(value) end end def name_for(value) if value element_info(value).first.to_s else nil end end def details_for(value) if value element_info(value).try(:last) else nil end end def human_name_for(value) if value element_name, element_config = element_info(value) element_config[:human_name] || element_name.to_s.humanize else nil end end private def element_info(value) elements.select{|e,c| c[:value] == value }.first end end end
Version data entries
4 entries across 4 versions & 1 rubygems