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
# File 'lib/textus/extension_registry.rb', line 5

def initialize
  @fetchers = {}
  @reducers = {}
  @hooks = {}
end

Instance Method Details

#fetcher(name) ⇒ Object



32
33
34
# File 'lib/textus/extension_registry.rb', line 32

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

#fetcher_namesObject



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

def fetcher_names = @fetchers.keys

#hook_eventsObject



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

def hook_events   = @hooks.keys

#hooks(event) ⇒ Object



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

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

#reducer(name) ⇒ Object



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

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

#reducer_namesObject



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

def reducer_names = @reducers.keys

#register_fetcher(name, &blk) ⇒ Object

Raises:



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

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

  @fetchers[name] = blk
end

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

Raises:



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

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:



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

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

  @reducers[name] = blk
end