Class: Igniter::Contracts::Assembly::OrderedRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/contracts/assembly/ordered_registry.rb

Defined Under Namespace

Classes: Entry

Instance Method Summary collapse

Constructor Details

#initialize(name:) ⇒ OrderedRegistry

Returns a new instance of OrderedRegistry.



9
10
11
12
13
14
# File 'lib/igniter/contracts/assembly/ordered_registry.rb', line 9

def initialize(name:)
  @name = name
  @entries = []
  @keys = {}
  @frozen = false
end

Instance Method Details

#entriesObject



32
33
34
# File 'lib/igniter/contracts/assembly/ordered_registry.rb', line 32

def entries
  @entries.dup
end

#freeze!Object



36
37
38
39
40
41
# File 'lib/igniter/contracts/assembly/ordered_registry.rb', line 36

def freeze!
  @frozen = true
  @entries.freeze
  @keys.freeze
  self
end

#frozen?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/igniter/contracts/assembly/ordered_registry.rb', line 43

def frozen?
  @frozen
end

#register(key, value) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/igniter/contracts/assembly/ordered_registry.rb', line 16

def register(key, value)
  raise FrozenRegistryError, "#{@name} is frozen" if frozen?

  normalized_key = normalize_key(key)
  raise DuplicateRegistrationError, "#{@name} already has #{normalized_key}" if @keys.key?(normalized_key)

  entry = Entry.new(key: normalized_key, value: value)
  @entries << entry
  @keys[normalized_key] = true
  entry
end

#registered?(key) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/igniter/contracts/assembly/ordered_registry.rb', line 28

def registered?(key)
  @keys.key?(normalize_key(key))
end