module EvilEvents::Core::Events::EventExtensions::TypeAliasing::ClassMethods

Public Instance Methods

type(type_alias = nil) click to toggle source

@param type_alias [String, NilClass] @raise [EvilEvents::IncopatibleEventTypeError] @raise [EvilEvents::EventTypeNotDefinedError] @raise [EvilEvents::EventTypeAlreadyDefinedError] @return [String]

@since 0.1.0

# File lib/evil_events/core/events/event_extensions/type_aliasing.rb, line 31
def type(type_alias = nil)
  case
  when incompatible_type_alias_type?(type_alias)
    raise EvilEvents::IncopatibleEventTypeError
  when fetching_type_alias_when_type_alias_not_defined?(type_alias)
    raise EvilEvents::EventTypeNotDefinedError
  when providing_type_alias_when_type_alias_already_defined?(type_alias)
    raise EvilEvents::EventTypeAlreadyDefinedError
  when tries_to_define_type_alias_first_time?(type_alias)
    @type = type_alias
  end

  @type
end

Private Instance Methods

fetching_type_alias_when_type_alias_not_defined?(type_alias) click to toggle source

@param type_alias [String, NilClass] @return [Boolean]

@since 0.1.0

# File lib/evil_events/core/events/event_extensions/type_aliasing.rb, line 60
def fetching_type_alias_when_type_alias_not_defined?(type_alias)
  !instance_variable_defined?(:@type) && type_alias.nil?
end
incompatible_type_alias_type?(type_alias) click to toggle source

@param type_alias [String, NilClass] @return [Boolean]

@since 0.1.0

# File lib/evil_events/core/events/event_extensions/type_aliasing.rb, line 52
def incompatible_type_alias_type?(type_alias)
  !(type_alias.is_a?(NilClass) || type_alias.is_a?(String))
end
providing_type_alias_when_type_alias_already_defined?(type_alias) click to toggle source

@param type_alias [String, NilClass] @return [Boolean]

@since 0.1.0

# File lib/evil_events/core/events/event_extensions/type_aliasing.rb, line 68
def providing_type_alias_when_type_alias_already_defined?(type_alias)
  instance_variable_defined?(:@type) && type_alias
end
tries_to_define_type_alias_first_time?(type_alias) click to toggle source

@param type_alias [String, NilClass] @return [Boolean]

@since 0.1.0

# File lib/evil_events/core/events/event_extensions/type_aliasing.rb, line 76
def tries_to_define_type_alias_first_time?(type_alias)
  !instance_variable_defined?(:@type) && type_alias
end