module Enum
Extend in order to apply methods for Enum
instantiation.
Public Class Methods
extended(base)
click to toggle source
Restrict enum instantiation to the value
method.
# File lib/mangopay/util/enum.rb, line 5 def self.extended(base) base.class_eval do disable_instantiation end end
Public Instance Methods
value_of(string)
click to toggle source
# File lib/mangopay/util/enum.rb, line 11 def value_of(string) value = nil constants.each do |const| value = const_get const if const.to_s == string end value end
Private Instance Methods
disable_instantiation()
click to toggle source
Disables instantiation of extending class.
# File lib/mangopay/util/enum.rb, line 45 def disable_instantiation class_eval do define_method :initialize do raise 'Use the Enum#value method to instantiate Enums.' end end end
enable_instantiation()
click to toggle source
Enables instantiation of extending class.
# File lib/mangopay/util/enum.rb, line 37 def enable_instantiation class_eval do define_method :initialize do end end end
value(enum_value)
click to toggle source
Temporary self-called method which instantiates Enums. Assign returned values to accordingly-named constant variables.
@param enum_value
Representation value for the Enum
instance
# File lib/mangopay/util/enum.rb, line 25 def value(enum_value) enable_instantiation enum_instance = new disable_instantiation enum_instance.instance_variable_set :@value, enum_value enum_instance.define_singleton_method :to_s do enum_value.to_s end enum_instance end