Sha256: ffaad404d5adc295d582a14191caf964941c666a64400d60249055221c318029
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
module SwifterEnum class Base class << self attr_accessor :values def set_values(input) case input when Hash @values = input.freeze when Array validate_array_elements!(input) @values = input.map { |item| [item.to_sym, item.to_s] }.to_h.freeze else raise ArgumentError, "Input must be a Hash or an Array of symbols or strings" end end def all_cases @values.keys.map { |key| new(key) } end private def validate_array_elements!(array) unless array.all? { |item| item.is_a?(Symbol) || item.is_a?(String) } raise ArgumentError, "Array elements must all be symbols or strings" end end end attr_accessor :value def initialize(value) @value = value&.to_sym end def ==(other) if other.is_a?(Symbol) || other.is_a?(String) value.to_s == other.to_s else other.instance_of?(self.class) && value == other.value end end def t I18n.t("swifter_enum.#{self.class.name.demodulize.underscore}.#{value}") end def to_s value.to_s end def self.all values.keys.map { |value| new(value) } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
swifter_enum-0.9.6 | lib/swifter_enum/base.rb |
swifter_enum-0.9.4 | lib/swifter_enum/base.rb |