Class: Anyway::Loaders::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/anyway/loaders.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



10
11
12
# File 'lib/anyway/loaders.rb', line 10

def initialize
  @registry = []
end

Instance Attribute Details

#registryObject (readonly)

Returns the value of attribute registry.



8
9
10
# File 'lib/anyway/loaders.rb', line 8

def registry
  @registry
end

Instance Method Details

#append(id, handler = nil, &block) ⇒ Object



19
20
21
22
# File 'lib/anyway/loaders.rb', line 19

def append(id, handler = nil, &block)
  handler ||= block
  insert_at(registry.size, id, handler)
end

#delete(id) ⇒ Object



47
48
49
50
51
52
# File 'lib/anyway/loaders.rb', line 47

def delete(id)
  find(id).then do |id_to_handler|
    raise ArgumentError, "Loader with ID #{id} hasn't been registered" if id_to_handler.nil?
    registry.delete id_to_handler
  end
end

#each(&block) ⇒ Object



54
55
56
# File 'lib/anyway/loaders.rb', line 54

def each(&block)
  registry.each(&block)
end

#freezeObject



58
# File 'lib/anyway/loaders.rb', line 58

def freeze() = registry.freeze

#insert_after(another_id, id, handler = nil, &block) ⇒ Object

Raises:

  • (ArgumentError)


32
33
34
35
36
37
38
# File 'lib/anyway/loaders.rb', line 32

def insert_after(another_id, id, handler = nil, &block)
  ind = registry.find_index { |(hid, _)| hid == another_id }
  raise ArgumentError, "Loader with ID #{another_id} hasn't been registered" if ind.nil?

  handler ||= block
  insert_at(ind + 1, id, handler)
end

#insert_before(another_id, id, handler = nil, &block) ⇒ Object

Raises:

  • (ArgumentError)


24
25
26
27
28
29
30
# File 'lib/anyway/loaders.rb', line 24

def insert_before(another_id, id, handler = nil, &block)
  ind = registry.find_index { |(hid, _)| hid == another_id }
  raise ArgumentError, "Loader with ID #{another_id} hasn't been registered" if ind.nil?

  handler ||= block
  insert_at(ind, id, handler)
end

#override(id, handler) ⇒ Object



40
41
42
43
44
45
# File 'lib/anyway/loaders.rb', line 40

def override(id, handler)
  find(id).then do |id_to_handler|
    raise ArgumentError, "Loader with ID #{id} hasn't been registered" if id_to_handler.nil?
    id_to_handler[1] = handler
  end
end

#prepend(id, handler = nil, &block) ⇒ Object



14
15
16
17
# File 'lib/anyway/loaders.rb', line 14

def prepend(id, handler = nil, &block)
  handler ||= block
  insert_at(0, id, handler)
end