class Dieses::Support::Enum
Attributes
value[R]
Public Class Methods
call(value)
click to toggle source
# File lib/dieses/support/enum.rb, line 51 def self.call(value) new(value) end
of(*members)
click to toggle source
# File lib/dieses/support/enum.rb, line 41 def of(*members) # rubocop:disable Metrics/MethodLength values Set.new(members.map(&:to_sym)).freeze members.each do |member| define_method("#{member}?") do value == member end end Class.new(self) do def self.call(value) new(value) end define_singleton_method(:default) { members.first } end end
Private Class Methods
new(value)
click to toggle source
# File lib/dieses/support/enum.rb, line 12 def initialize(value) self.value = value end
Public Instance Methods
eql?(other)
click to toggle source
# File lib/dieses/support/enum.rb, line 22 def eql?(other) return false unless other.is_a? self.class value == other.value end
Also aliased as: ==
hash()
click to toggle source
# File lib/dieses/support/enum.rb, line 30 def hash self.class.hash ^ values.hash ^ value.hash end
to_s()
click to toggle source
# File lib/dieses/support/enum.rb, line 34 def to_s value.to_s end
value=(value)
click to toggle source
# File lib/dieses/support/enum.rb, line 16 def value=(value) raise ArgumentError, "Invalid enum value: #{value}" unless self.class.values.member?(value = value.to_sym) @value = value end