Class: Textus::ExtensionRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/extension_registry.rb

Constant Summary collapse

EVENTS =
%i[put delete refresh build accept].freeze

Instance Method Summary collapse

Constructor Details

#initializeExtensionRegistry

Returns a new instance of ExtensionRegistry.



5
6
7
8
9
10
# File 'lib/textus/extension_registry.rb', line 5

def initialize
  @actions = {}
  @reducers = {}
  @hooks = {}
  @doctor_checks = {}
end

Instance Method Details

#action(name) ⇒ Object



40
41
42
# File 'lib/textus/extension_registry.rb', line 40

def action(name)
  @actions[name.to_sym] or raise UsageError.new("unknown action: #{name}")
end

#action_namesObject



56
# File 'lib/textus/extension_registry.rb', line 56

def action_names        = @actions.keys

#doctor_check(name) ⇒ Object



52
53
54
# File 'lib/textus/extension_registry.rb', line 52

def doctor_check(name)
  @doctor_checks[name.to_sym] or raise UsageError.new("unknown doctor_check: #{name}")
end

#doctor_check_namesObject



59
# File 'lib/textus/extension_registry.rb', line 59

def doctor_check_names  = @doctor_checks.keys

#hook_eventsObject



58
# File 'lib/textus/extension_registry.rb', line 58

def hook_events         = @hooks.keys

#hooks(event) ⇒ Object



48
49
50
# File 'lib/textus/extension_registry.rb', line 48

def hooks(event)
  @hooks[event.to_sym] || []
end

#reducer(name) ⇒ Object



44
45
46
# File 'lib/textus/extension_registry.rb', line 44

def reducer(name)
  @reducers[name.to_sym] or raise UsageError.new("unknown reducer: #{name}")
end

#reducer_namesObject



57
# File 'lib/textus/extension_registry.rb', line 57

def reducer_names       = @reducers.keys

#register_action(name, &blk) ⇒ Object

Raises:



12
13
14
15
16
17
# File 'lib/textus/extension_registry.rb', line 12

def register_action(name, &blk)
  name = name.to_sym
  raise UsageError.new("action '#{name}' already registered") if @actions.key?(name)

  @actions[name] = blk
end

#register_doctor_check(name, &blk) ⇒ Object

Raises:



33
34
35
36
37
38
# File 'lib/textus/extension_registry.rb', line 33

def register_doctor_check(name, &blk)
  name = name.to_sym
  raise UsageError.new("doctor_check '#{name}' already registered") if @doctor_checks.key?(name)

  @doctor_checks[name] = blk
end

#register_hook(event, name, &blk) ⇒ Object

Raises:



26
27
28
29
30
31
# File 'lib/textus/extension_registry.rb', line 26

def register_hook(event, name, &blk)
  event = event.to_sym
  raise UsageError.new("unknown event: #{event}") unless EVENTS.include?(event)

  (@hooks[event] ||= []) << { name: name.to_sym, callable: blk }
end

#register_reducer(name, &blk) ⇒ Object

Raises:



19
20
21
22
23
24
# File 'lib/textus/extension_registry.rb', line 19

def register_reducer(name, &blk)
  name = name.to_sym
  raise UsageError.new("reducer '#{name}' already registered") if @reducers.key?(name)

  @reducers[name] = blk
end