class SimpleEnumeration::TypeMethodsDefiner

Attributes

collection[R]
enum_class[R]
type[R]

Public Class Methods

call(*params, **options, &block) click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 13
def self.call(*params, **options, &block)
  new(*params, **options).call(&block)
end
new(enum_class:, collection:, type:) click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 7
def initialize(enum_class:, collection:, type:)
  @enum_class = enum_class
  @collection = collection
  @type = type
end

Public Instance Methods

call() click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 17
def call
  define_singleton_type_method
  define_singleton_type_value_method
  define_singleton_type_value_predicate_method
  define_instance_type_value_predicate_method
end

Private Instance Methods

define_instance_type_value_predicate_method() click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 50
def define_instance_type_value_predicate_method
  enum_class.define_method type.value_predicate_method_name do
    return false unless type

    type_value = Type.type_value_for_value_predicate_method_name(__method__)

    self.class.basic_collection.get_type(type_value).converted_value == type.converted_value
  end
end
define_singleton_type_method() click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 26
def define_singleton_type_method
  enum_class.define_singleton_method type.method_name do
    type_value = Type.type_value_for_method_name(__method__)

    basic_collection.get_type(type_value)
  end
end
define_singleton_type_value_method() click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 34
def define_singleton_type_value_method
  enum_class.define_singleton_method type.value_method_name do
    type_value = Type.type_value_for_value_method_name(__method__)

    basic_collection.get_type(type_value).converted_value
  end
end
define_singleton_type_value_predicate_method() click to toggle source
# File lib/simple_enumeration/type_methods_definer.rb, line 42
def define_singleton_type_value_predicate_method
  enum_class.define_singleton_method type.value_predicate_method_name do |converted_value|
    type_value = Type.type_value_for_value_predicate_method_name(__method__)

    basic_collection.get_type(type_value).converted_value == converted_value
  end
end