Class: BlockRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/block_registry.rb,
lib/block_registry/errors.rb,
lib/block_registry/version.rb

Defined Under Namespace

Classes: Error, UnregisteredError

Constant Summary collapse

VERSION =
'1.0.0'

Instance Method Summary collapse

Constructor Details

#initializeBlockRegistry

Returns a new instance of BlockRegistry.



6
7
8
# File 'lib/block_registry.rb', line 6

def initialize
  self.mappings = {}
end

Instance Method Details

#handle(key, *args) ⇒ Object

Raises:



31
32
33
34
35
36
37
# File 'lib/block_registry.rb', line 31

def handle(key, *args)
  raise UnregisteredError, "\"#{key}\" is not registered" unless registered?(key)

  mappings[key].each do |mapping|
    mapping.call(*args)
  end
end

#register(key, &block) ⇒ Object



10
11
12
13
# File 'lib/block_registry.rb', line 10

def register(key, &block)
  mappings[key] ||= Set.new
  mappings[key] << block
end

#registered?(key) ⇒ Boolean Also known as: handles?

Returns:

  • (Boolean)


26
27
28
# File 'lib/block_registry.rb', line 26

def registered?(key)
  mappings.has_key?(key)
end

#unregister(key, &block) ⇒ Object

Raises:



15
16
17
18
19
20
21
22
23
24
# File 'lib/block_registry.rb', line 15

def unregister(key, &block)
  raise UnregisteredError, "\"#{key}\" is not registered" unless registered?(key)

  if block_given?
    mappings[key].delete?(block)
    mappings.delete(key) if mappings[key].empty?
  else
    mappings.delete(key)
  end
end