Module: Vedeu::Events::Aliases

Extended by:
Aliases
Included in:
Aliases
Defined in:
lib/vedeu/events/aliases.rb

Overview

Note:

Allows the storing of event aliases. Each alias can contain multiple event names.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.bind_alias(alias_name, event_name) ⇒ Hash<Symbol => Array<Symbol>> Also known as: add

Add events by name to the alias name group. When an alias is triggered, all the events stored in the group are also triggered.

Examples:

Vedeu.bind_alias(alias_name, event_name)

Parameters:

  • alias_name (Symbol)

    The name of the alias. This can represent a single event or group of events.

  • event_name (Symbol)

    The name of the event to bind to the alias. When the alias is triggered, all events bound will also be triggered.

Returns:

  • (Hash<Symbol => Array<Symbol>>)


28
29
30
# File 'lib/vedeu/events/aliases.rb', line 28

def bind_alias(alias_name, event_name)
  storage[alias_name] << event_name
end

.empty?Boolean

Return a boolean indicating whether the storage is empty.

Returns:

  • (Boolean)


36
37
38
# File 'lib/vedeu/events/aliases.rb', line 36

def empty?
  storage.empty?
end

.find(alias_name) ⇒ Array<Symbol>

Parameters:

  • alias_name (Symbol)

Returns:

  • (Array<Symbol>)


42
43
44
# File 'lib/vedeu/events/aliases.rb', line 42

def find(alias_name)
  storage[alias_name]
end

.in_memoryHash<Symbol => Array<Symbol>> (private)

Returns:

  • (Hash<Symbol => Array<Symbol>>)


102
103
104
# File 'lib/vedeu/events/aliases.rb', line 102

def in_memory
  Hash.new { |hash, key| hash[key] = [] }
end

.registered?(alias_name) ⇒ Boolean

Returns a boolean indicating whether the alias is registered.

Parameters:

  • alias_name (Symbol)

Returns:

  • (Boolean)


50
51
52
53
54
55
# File 'lib/vedeu/events/aliases.rb', line 50

def registered?(alias_name)
  return false if alias_name.nil? || alias_name.empty?
  return false if empty?

  storage.include?(alias_name)
end

.resetHash<Symbol => Array<Symbol>> Also known as: reset!

Returns:

  • (Hash<Symbol => Array<Symbol>>)


75
76
77
# File 'lib/vedeu/events/aliases.rb', line 75

def reset
  @storage = in_memory
end

.storageHash<Symbol => Array<Symbol>>

Access to the storage for this repository.

Returns:

  • (Hash<Symbol => Array<Symbol>>)


83
84
85
# File 'lib/vedeu/events/aliases.rb', line 83

def storage
  @storage ||= in_memory
end

.trigger(alias_name, *args) ⇒ FalseClass|Array<void>|void

Parameters:

  • alias_name (Symbol)
  • args (void)

Returns:

  • (FalseClass|Array<void>|void)


90
91
92
93
94
95
96
97
# File 'lib/vedeu/events/aliases.rb', line 90

def trigger(alias_name, *args)
  return [] unless registered?(alias_name)

  storage[alias_name].map do |event_name|
    Vedeu.log(type: :debug, message: "#{event_name}")
    Vedeu::Events::Trigger.trigger(event_name, *args)
  end
end

.unbind_alias(alias_name) ⇒ FalseClass|Hash<Symbol => Array<Symbol>> Also known as: remove

Remove an alias by name. The alias name group is destroyed,

but events stored within this alias are not.

Examples:

Vedeu.unbind_alias(alias_name)

Parameters:

  • alias_name (Symbol)

    The name of the alias.

Returns:

  • (FalseClass|Hash<Symbol => Array<Symbol>>)


65
66
67
68
69
70
71
# File 'lib/vedeu/events/aliases.rb', line 65

def unbind_alias(alias_name)
  return false if empty?
  return false unless registered?(alias_name)

  storage.delete(alias_name)
  storage
end

Instance Method Details

#bind_alias(alias_name, event_name) ⇒ Hash<Symbol => Array<Symbol>> Also known as: add

Add events by name to the alias name group. When an alias is triggered, all the events stored in the group are also triggered.

Examples:

Vedeu.bind_alias(alias_name, event_name)

Parameters:

  • alias_name (Symbol)

    The name of the alias. This can represent a single event or group of events.

  • event_name (Symbol)

    The name of the event to bind to the alias. When the alias is triggered, all events bound will also be triggered.

Returns:

  • (Hash<Symbol => Array<Symbol>>)


28
29
30
# File 'lib/vedeu/events/aliases.rb', line 28

def bind_alias(alias_name, event_name)
  storage[alias_name] << event_name
end

#empty?Boolean

Return a boolean indicating whether the storage is empty.

Returns:

  • (Boolean)


36
37
38
# File 'lib/vedeu/events/aliases.rb', line 36

def empty?
  storage.empty?
end

#find(alias_name) ⇒ Array<Symbol>

Parameters:

  • alias_name (Symbol)

Returns:

  • (Array<Symbol>)


42
43
44
# File 'lib/vedeu/events/aliases.rb', line 42

def find(alias_name)
  storage[alias_name]
end

#in_memoryHash<Symbol => Array<Symbol>> (private)

Returns:

  • (Hash<Symbol => Array<Symbol>>)


102
103
104
# File 'lib/vedeu/events/aliases.rb', line 102

def in_memory
  Hash.new { |hash, key| hash[key] = [] }
end

#registered?(alias_name) ⇒ Boolean

Returns a boolean indicating whether the alias is registered.

Parameters:

  • alias_name (Symbol)

Returns:

  • (Boolean)


50
51
52
53
54
55
# File 'lib/vedeu/events/aliases.rb', line 50

def registered?(alias_name)
  return false if alias_name.nil? || alias_name.empty?
  return false if empty?

  storage.include?(alias_name)
end

#resetHash<Symbol => Array<Symbol>> Also known as: reset!

Returns:

  • (Hash<Symbol => Array<Symbol>>)


75
76
77
# File 'lib/vedeu/events/aliases.rb', line 75

def reset
  @storage = in_memory
end

#storageHash<Symbol => Array<Symbol>>

Access to the storage for this repository.

Returns:

  • (Hash<Symbol => Array<Symbol>>)


83
84
85
# File 'lib/vedeu/events/aliases.rb', line 83

def storage
  @storage ||= in_memory
end

#trigger(alias_name, *args) ⇒ FalseClass|Array<void>|void

Parameters:

  • alias_name (Symbol)
  • args (void)

Returns:

  • (FalseClass|Array<void>|void)


90
91
92
93
94
95
96
97
# File 'lib/vedeu/events/aliases.rb', line 90

def trigger(alias_name, *args)
  return [] unless registered?(alias_name)

  storage[alias_name].map do |event_name|
    Vedeu.log(type: :debug, message: "#{event_name}")
    Vedeu::Events::Trigger.trigger(event_name, *args)
  end
end

#unbind_alias(alias_name) ⇒ FalseClass|Hash<Symbol => Array<Symbol>> Also known as: remove

Remove an alias by name. The alias name group is destroyed,

but events stored within this alias are not.

Examples:

Vedeu.unbind_alias(alias_name)

Parameters:

  • alias_name (Symbol)

    The name of the alias.

Returns:

  • (FalseClass|Hash<Symbol => Array<Symbol>>)


65
66
67
68
69
70
71
# File 'lib/vedeu/events/aliases.rb', line 65

def unbind_alias(alias_name)
  return false if empty?
  return false unless registered?(alias_name)

  storage.delete(alias_name)
  storage
end